切记 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对象上,这样就可以了。
相关文章推荐
- (译)如何使用cocos2d 2.0 来给一个Sprite添加遮罩
- Cocos2d-js中使用纹理对象创建Sprite对象
- (译)如何使用cocos2d 2.0 (安装)来给一个Sprite添加遮罩
- 实例:Cocos2d-js中使用纹理对象创建Sprite对象
- 实例:Cocos2d-js中使用纹理对象创建Sprite对象
- (译)在cocos2d里面如何使用Texture Packer和像素格式来优化spritesheet
- 定义一个类让其只能实例化一个对象
- 使用Quick-Cocos2d-x搭建一个横版过关游戏(一) CCStore
- <cocos2d-x for wp7>使用cocos2d-x和BOX2D来制作一个BreakOut(打砖块)游戏(一)
- C++只能允许类创建一个对象的做法
- 内置对象config的使用,使用web.xml配置一个servlet对象,并为它取一个名字。
- 移动用户至OU报错 “无法移动对象,试图给目录添加一个名称已在使用的对象”
- 使用输入流写一个对象
- 在使用反射中,Object代表一个数组对象,如何转化为数组
- 注册并发布一个xmlrpc远程对象(函数、类对象、客户端使用调用(对象.方法)格式)
- Spring - 使用ApplicationContextAware得到一个ApplicationContext对象
- cocos2d控件(1)-使用URL创建的Sprite
- 使用SpriteBuilder制作Cocos2D游戏完全中文教程(六)
- 如何使用Cocos2D 2.X生成一个简单的iPhone游戏