【问题标题】:Animating CCSprite not working?动画 CCSprite 不起作用?
【发布时间】:2011-11-20 07:02:40
【问题描述】:

我正在我的 init 方法中创建一个这样的精灵(mySprite 在 .h 中声明):

mySprite = [CCSprite spriteWithFile:@"Image1.png"];
        [mySprite setPosition:ccp(100, 300)];
        [self addChild:mySprite z:1 tag:1];

然后在我的其他方法中,我尝试像这样对其进行动画处理,但它似乎根本没有动画,我也知道它所在的方法正在被调用,因为我 NSLogged 它。无论如何,这是我尝试为 mySprite 设置动画的方式:

CCSequence *moveSequence = [CCSequence actions:[CCMoveTo actionWithDuration:5 position:ccp(120, 400)],[CCMoveTo actionWithDuration:4 position:ccp(100, 300)], nil];
    [mySprite runAction:[CCRepeatForever actionWithAction:moveSequence]];

任何想法为什么会发生这种情况?

谢谢!

【问题讨论】:

  • 他们质疑“为什么不调用该方法”?因为代码看起来很正确
  • 那你觉得哪里不对?

标签: ios animation cocos2d-iphone


【解决方案1】:

乍一看这部分代码似乎是正确的,因此您可能需要展示更多的整个程序,以便我们可以检查您的 init 函数和被调用的其他方法之间发生了什么。

有几件事情出乎意料:

  • 确保在您的 sprite 上调用 retain,以便在您完成之前不会立即删除它
  • 这里的“self”到底是什么,是cocos层吗?图层是否正确添加到场景中(即,您是否看到正在显示的精灵,即使它没有移动)?
  • 我还想看看场景图中是否会在“init”调用和您执行动画代码的第二种方法之间发生任何事情。某处有 StopAllActions 吗?也许是 removeFromParent 或 removeAllChildren?

干杯

【讨论】:

  • 第一个子弹:好的,所以当我使用保留时,我应该如何正确释放它?第二个子弹:它是一个 CCLayer。精灵正在显示,但只是没有动画。第三个要点:我在 dealloc 方法中只有一个 removeAllChildren 。任何地方都没有停止行动。
  • 我修复了它,结果是 Box2D 代码干扰了 CCSprite。无论如何都赞成并接受!欢迎来到 StackOverflow! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
相关资源
最近更新 更多