Animation Cocos2D-当我设置第二个精灵的动画时,第一个精灵停止设置动画

Animation Cocos2D-当我设置第二个精灵的动画时,第一个精灵停止设置动画,animation,cocos2d-iphone,ccsprite,sprite-sheet,Animation,Cocos2d Iphone,Ccsprite,Sprite Sheet,所以这里的问题是,当我创建一个动画投射物时,一切都很好。一旦用户创建第二个,第一个将停止动画 好的,下面是我如何在init中设置它的: [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: @"acorns.plist"]; CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode

所以这里的问题是,当我创建一个动画投射物时,一切都很好。一旦用户创建第二个,第一个将停止动画

好的,下面是我如何在init中设置它的:

[[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);
id _fly=[CCAnimation animationWithFrames:flyingFrames delay:0.5f];
id _flyForever = [[CCRepeatForever _fly];
[bullet runAction:_flyForever];
[self addChild:bullet z:9];
[bullets addObject:buller];
飞帧可以由多个动画引用,因此必须注意保留阵列以供重用

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];