本文主要是介绍切记 cocos2d中一个CCAction 对象只能被使用到一个Sprite对象上,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
切记 cocos2d中一个CCAction 对象只能被使用到一个Sprite对象上
在cocos2d中,经常需要将一个action施加到多个Sprites上面,以达到相同的效果。
所以经常会有下面的代码:
CCMoveTo * move =[CCMoveTo actionWithDuration:DESK_ANIMATE_TIME position:point];[deskImage runAction:move];[HeadImageSprite runAction:move];[TipsSprite runAction:move];
这个代码会导致crash,原因在于CCMTo这个action的是一个施加在Sprite上面的异步的操作,
[deskImage runAction:move]
runAction调用完了之后,会继续调用
[HeadImageSprite runAction:move];
action的生命周期跟action的变量的定义的生命周期不一样,它需要在action被sprite执行完之后才完成,这个是不受我们的代码的控制的。所以一个action不能施加到多个Sprite上面去。
改进的方法如下:
CCMoveTo * move =[CCMoveTo actionWithDuration:DESK_ANIMATE_TIME position:point];[deskImage runAction:move];[HeadImageSprite runAction:[move copy]];[TipsSprite runAction:[move copy]];
我们对action做一个copy,copy一份拷贝,然后再施加到其他的Sprite对象上,这样就可以了。
这篇关于切记 cocos2d中一个CCAction 对象只能被使用到一个Sprite对象上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!