cocos2d中两个精灵怎么同时做动作?
本帖最后由 youthpasses 于 2012-01-07 17:44:00 编辑 在一个层里有两个精灵,我想让这两个精灵同时做动作,代码是这样写的:
[smallchuck runAction:action1];
[bg runAction:action1];
但是运行后会发现,只有后边这个精灵会动,前边一个不动,请问这是怎么回事啊?怎么样才能让两个精灵同时动呢?
[解决办法]
弱弱的问一句:[bg runAction:[action1 copy]] 会不会内存泄露?
[解决办法]
正解:
要想一个 CCNode 跑一个action,就要对每个CCnode定制特定的action,你在调用的runAction的时候,其实不是在修改CCnode的属性,而是在CCActionManager中注册你的Action,而且每个Action在manager中是惟一的,也只能对一个CCNode服务!所以楼主的调用顺序是:首先你把action1在CCActionManager中注册给对象smallchuck,紧接着,你又把action1注册给了对象bg,然后第一次注册就会失效,他只能为bg对象服务!你最后的解决方案是 [action1 copy],其实就是新建了一个不同内存地址的Action,然后注册给了bg,现在是2个action对应2个对象,当然就好了!
三楼说的会不会内存泄露,我想说的是,你在删除的对象之前,记得[CCnode stopAction:action1]就不会有问题!否则,你的action会一直存在于CCActionManager中,而不会随着对象的消失而消失,会内存泄露!
[解决办法]