Project1

标题: 请教一下sprite=nil的问题 [打印本页]

作者: adahs    时间: 2020-3-21 16:38
标题: 请教一下sprite=nil的问题
我在用sprite显示一张图片以后想切换一张图片显示,先让sprite=nil再重新显示图片,但是这样好像有延迟?第一张图片还没消失第二张图片就出现了,想请教一下这是为什么?还有要怎么做才能完美切换图片?
第一个事件是


第二个事件是


然后就是自己在不停的试的时候发现这个延迟有时候又好像很小???


求大神解惑

作者: 灯笼菜刀王    时间: 2020-3-21 16:47
要释放,  sprite.dispose

作者: KB.Driver    时间: 2020-3-21 17:53
本帖最后由 KB.Driver 于 2020-3-21 17:57 编辑

既然你是同一个sprite,那就直接改sprite.bitmap就好

关于精灵与位图可以看一下鄙人的这篇教程
https://rpg.blue/thread-476407-1-1.html

至于为什么会延迟再消失,原理是这样的。
在直接令$spritre = nil时,并没有操作原来的Sprite对象,而是改变了$spritre变量。
换句话说,原来的Sprite对象依然好好的,只是变得无法访问了。
随后,GC(垃圾回收)检测到原来的Sprite对象已经无法访问了,便将它清除了。
但是,从$spritre被设置为nil到GC回收掉原来的Sprite是需要时间的,
所以会产生两个图像同时存在于画面上的现象。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1