Cocos2D - 当我动画第二个精灵时,首先停止动画
问题描述:
所以这里的问题是当我创建一个动画射弹时,一切都很好。只要用户创建第二个,第一个停止动画。Cocos2D - 当我动画第二个精灵时,首先停止动画
好了,这里就是我如何设置它在我的初始化:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:
@"acorns.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode
batchNodeWithFile:@"acorns.png"];
[self addChild:spriteSheet];
NSMutableArray *flyingFrames = [NSMutableArray array];
for(int i = 1; i <= 4; ++i) {
[flyingFrames addObject:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
[NSString stringWithFormat:@"acorn%d.png", i]]];
}
CCAnimation *flying = [CCAnimation
animationWithFrames:flyingFrames delay:0.5f];
self.flying = [CCRepeatForever actionWithAction:
[CCAnimate actionWithAnimation:flying restoreOriginalFrame:NO]];
然后,我创建子弹的方法被称为当用户点击屏幕,我做的:
CCSprite *bullet = [CCSprite spriteWithSpriteFrameName:@"acorn1.png"];
bullet.position = CGPointMake(140.0f, FLOOR_HEIGHT+145.0f);
[bullet runAction:_flying];
[self addChild:bullet z:9];
[bullets addObject:bullet];
因此,用户第一次点击时,一切正常。第二次,创建了动画子弹,但现有的子弹停止动画,等等。
答
我相信每个精灵都应该有自己的行为,也就是说,当行动正在进行时,你不能重用一个行动。例如:
CCSprite *bullet = [CCSprite spriteWithSpriteFrameName:@"acorn1.png"];
bullet.position = CGPointMake(140.0f, FLOOR_HEIGHT+145.0f);
id _fly=[CCAnimation animationWithFrames:flyingFrames delay:0.5f];
id _flyForever = [[CCRepeatForever _fly];
[bullet runAction:_flyForever];
[self addChild:bullet z:9];
[bullets addObject:buller];
flyingFrames可以被多个动画引用,所以您必须注意保留数组以供重用。