Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 设置多个精灵的动画Cocos2d_Objective C_Ios_Animation_Cocos2d Iphone - Fatal编程技术网

Objective c 设置多个精灵的动画Cocos2d

Objective c 设置多个精灵的动画Cocos2d,objective-c,ios,animation,cocos2d-iphone,Objective C,Ios,Animation,Cocos2d Iphone,我正在尝试将多个动画精灵添加到我目前正在制作的游戏中的游戏层中。为此,我创建了一个实例精灵:本生,对于需要添加的每个本生,我运行以下循环: else if (blockValue == 2 || blockValue == 3 || blockValue == 4 || blockValue == 5) { bunsen = [CCSprite spriteWithSpriteFrameName:@"15_1.png"]; if (

我正在尝试将多个动画精灵添加到我目前正在制作的游戏中的游戏层中。为此,我创建了一个实例精灵:本生,对于需要添加的每个本生,我运行以下循环:

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 spritewithpriteframename:@“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];

            }

注:本生的地方宣言这一次,所有这一切的结果是没有一个精灵成为动画。。。如果我移动
本生=[CCSprite spritewithpriteframename:@“15_1.png”]
to在else-if循环开始之前,我会得到一个错误:child已经添加或类似于这些行,所以基本上我需要做的是重新声明本生,这样它就不会抛出一个child已经添加的错误,而不会停止之前添加的本生上的动作'bunsens',然而,我想不出任何简单的方法来做到这一点。。。有人吗?

您不能在多个节点上运行相同的操作。换衣服

runAction:bunsens


您不能在多个节点上运行相同的操作,您可以尝试将“bunsens”更改为[bunsens copy]。TYVM工作得很好,您想将其作为答案发布,我会正确标记它吗?
runAction:[bunsens copy]