您的位置:首页 > 移动开发 > Cocos引擎

切记 cocos2d中一个CCAction 对象只能被使用到一个Sprite对象上

2012-03-11 15:16 183 查看

                                  切记 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对象上,这样就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  action crash