如题,我只想用一个sprite,在一帧内通过改变位置或纹理的绘制区域绘制多次。我试了,貌似一帧内只有最后一次visit有效。不想用多个sprite去实现这个目的啊,逻辑走不通不说,对象浪费好多。
对了,我用的是3.0正式版
对象是会有开销,但是因为用的是同一块纹理,所以性能上不会差太多的。
主要是逻辑上写起来也不好处理,本来我这样就行了
sprite->setPosition(posX, posY);
sprite->visit();
sprite->setPosition(200, 400);
sprite->visit();
但是如果要用对象来处理,还得管理。。一堆事
应该是不可以的!
就是一个对象一个文理,但可以用克隆的形式!就不用那么费事了!
哈 ,我来造福大家了,我已经实现了,只要简单对Sprite做一个二次封装就能达到我说的上述目的了,看大家需求大不大,我可以把代码发上来。如附件所示,里面两个图是用一个sprite在一帧里绘制的。
强烈要求,贴出代码 :882:
是我理解的不对吗 貌似是和batchNode做了一样的工作?
应该不同。BatchNode是通过添加多个子sprite来绘制多个(相同或不同)的图。
这里要的是只用一个sprite, 多次在不同的位置绘制一个相同的图片,这个做法适用于在运行时合成按钮图片, 相同的按钮背景(正常,按下,禁用) + 不同的文字图片。
比如说总共有50个按钮,通过这种方式合成,就只需50(文字) + 3 (背景) = 53张图片;否则,则需要 50 x 3 = 150 张图片。
上面最开始的方式,适用于2.x及之前的版本。3.0以后由于引入新的Render, 就不适用了。
这个绘图效率和直接用两个node合在一起没差别吧
1024 1024
1024 1024 这样做性能下降太厉害,甚至几乎不能运行