【问题标题】:Animating Multiple Sprites Cocos2d动画多个精灵 Cocos2d
【发布时间】:2012-10-31 00:18:07
【问题描述】:

我正在尝试在我目前正在开发的游戏中向游戏层添加多个动画精灵。为此,我创建了一个实例 sprite:bunsen,并且对于需要添加的每个 bunsen,我运行这个循环:

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

            }

如果一个关卡上只有一个 bunsen,这可以正常工作,但是当有多个 bunsen 时,只有最后添加的 bunsen 是动画的,我假设这是因为所有以前的 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];

            }

注意这次本生的本地声明,所有这些结果是没有一个精灵变成动画......如果我将bunsen = [CCSprite spriteWithSpriteFrameName:@"15_1.png"];移动到else if循环开始之前,那么我得到一个错误:孩子已经添加或类似的东西,所以基本上我需要做的是重新声明本生,这样它就不会在不停止先前添加的本生上的动作“本生”的情况下抛出一个孩子已经添加的错误,但是我可以'想不出任何简单的方法来做到这一点......有人吗?

【问题讨论】:

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

标签: objective-c ios animation cocos2d-iphone


【解决方案1】:

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

runAction:bunsens

到

runAction:[bunsens copy]

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多