动画多个精灵Cocos2d
问题描述:
我正在尝试在游戏中添加多个动画精灵,我正在制作游戏。要做到这一点,我已经创建了一个实例精灵:本生,并为每一个需要添加本生我运行这个循环:动画多个精灵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'之前添加的本生,但我想不出任何简单的方法做到这一点...任何人?
答
您不能在多个节点上运行相同的操作。只要改变
runAction:bunsens
要
runAction:[bunsens copy]
+0
“copy”的性能影响是什么? – MrDatabase
不能超过一个节点上运行相同的动作,你可以尝试改变“bunsens”设置为[bunsens复制。 –
TYVM完美工作,你想发布作为答案,我会正确地标记它? – simonthumper