2012-10-31 153 views
2

我正在尝试在游戏中添加多个动画精灵,我正在制作游戏。要做到这一点,我已经创建了一个实例精灵:本生,并为每一个需要添加本生我运行这个循环:动画多个精灵Cocos2d

else if (blockValue == 2 || blockValue == 3 || blockValue == 4 || blockValue == 5) { 
       bunsen = [CCSprite spriteWithSpriteFrameName:@"15_1.png"]; 
       if (blockValue == 2) { 
        bunsen.rotation = 90; 
       } 
       else if (blockValue == 3) { 
        bunsen.rotation = 180; 
       } 
       else if (blockValue == 4) { 
        bunsen.rotation = 270; 
       } 
       float tileY = screenSize.height-((countery*startData4)+startData4/2+7.5)/2; 
       float tileX = ((counterx*startData4)+startData4/2+5)/2; 
       bunsen.position = ccp(tileX,tileY); 
       tileName = [NSString stringWithFormat:@"%i.png",blockValue]; 
       [bunsen runAction:bunsens]; 
       [bunsenAnimation addChild:bunsen]; 

      } 

这工作得很好,如果有一个级别只有一个本生,然而,当有不止一个,只有已添加的最后一个本生是动画,我假定这是因为以前的所有本生情况下得到重新设置为[CCSprite spriteWithSpriteFrameName:@"15_1.png"];,所以我然后我的代码更改为:

else if (blockValue == 2 || blockValue == 3 || blockValue == 4 || blockValue == 5) { 
       CCSprite *bunsen = [CCSprite spriteWithSpriteFrameName:@"15_1.png"]; 
       if (blockValue == 2) { 
        bunsen.rotation = 90; 
       } 
       else if (blockValue == 3) { 
        bunsen.rotation = 180; 
       } 
       else if (blockValue == 4) { 
        bunsen.rotation = 270; 
       } 
       float tileY = screenSize.height-((countery*startData4)+startData4/2+7.5)/2; 
       float tileX = ((counterx*startData4)+startData4/2+5)/2; 
       bunsen.position = ccp(tileX,tileY); 
       tileName = [NSString stringWithFormat:@"%i.png",blockValue]; 
       [bunsen runAction:bunsens]; 
       [bunsenAnimation addChild:bunsen]; 

      } 

NB的本地声明这一次,所有这一切的结果是没有变成动画的精灵......如果我将bunsen = [CCSprite spriteWithSpriteFrameName:@"15_1.png"];移到开始之前o f其他if循环然后我得到一个错误:孩子已经添加或沿着这些行的东西,所以基本上我需要能够做的是redeclare的本生,所以它不会抛出一个孩子已经添加错误,而不停止行动' bunsens'之前添加的本生,但我想不出任何简单的方法做到这一点...任何人?

+0

不能超过一个节点上运行相同的动作,你可以尝试改变“bunsens”设置为[bunsens复制。 –

+0

TYVM完美工作,你想发布作为答案,我会正确地标记它? – simonthumper

回答

1

您不能在多个节点上运行相同的操作。只要改变

runAction:bunsens 

runAction:[bunsens copy] 
+0

“copy”的性能影响是什么? – MrDatabase