【问题标题】:Ways to compare two CCSprite's runAction比较两个 CCSprite 的 runAction 的方法
【发布时间】:2013-07-15 02:49:49
【问题描述】:

我有一个 CCSprite“_wo1”,它有一个 BOOL 属性“攻击”。我的更新方法中有以下代码,我希望它不断检查“攻击”是 YES 还是 NO,并让我的 sprite 执行不同类型的 runAction。

所以我的问题是:

如何比较两个runAction?我尝试了“==”和“isEqual”,但它们不起作用..

MySprite *_wo1 = ... // initialize _wo1 using my own class that sub-classed CCSprite
    if (![_wo1 attack])
    {
        _wo1.position = ccp(_wo1.position.x + 10 * dt, _wo1.position.y); // walking forward
        if (currentAction == attAction) // currentAction is defined in setting its runAction in the beginning: "currentAction = [wo1 runAction:[s01WalkAction copy]];"
        {
            [_wo1 stopAction:attAction];
            [_wo1 runAction:[walkAction copy]];
        }
    }
    else{
        if (currentAction == walkAction)
        {
            [_wo1 stopAction:walkAction];
            [_wo1 runAction:[attAction copy]];
        }

    }

任何帮助或建议将不胜感激。谢谢!

【问题讨论】:

    标签: objective-c cocos2d-iphone ccsprite kobold2d


    【解决方案1】:

    您可以在MySprite 类中保留精灵的动作状态,它可以轻松告诉您精灵中使用了哪个动作。

    当您在精灵上运行动作时,只需正确设置状态即可。例如:

    mySprite.actionState = ACTION_WALKING;
    

    然后您可以轻松检查使用了哪个操作:

      if (mySprite.actionState == ACTION_WALKING)
            {
               // Your handling code
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 2017-03-10
      • 2021-12-31
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      相关资源
      最近更新 更多