cocos2d中多个CCSprite循环播放CCMoveBy动画的问题

发布于 2022-08-26 17:02:43 字数 723 浏览 18 评论 0

想做一个持续运动的效果。采用NSTimer来计时触发动画:

```objective-c [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(melonPush) userInfo:nil repeats:YES];


`melonPush`方法是这么写的:

```objective-c
- (void)melonPush
{
    CCSprite *walnut = [walnutSprites lastObject];

    if (walnut.position.x >= 470) {
        return;
    }

    CCMoveBy *push = [CCMoveBy actionWithDuration:.1f position:ccp(10, 0)];
    [melonSprite runAction:push];
    for (int i = [walnutSprites count] - 1; i >= 0; i--) {
        CCSprite *nut = [walnutSprites objectAtIndex:i];
        [nut runAction:push];
    }
}

但是在运行的时候,只有最后一个应用runAction的对象才有动画,其它的对象都不动。这是怎么回事?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

温柔女人霸气范 2022-09-02 17:02:43

找到问题了,CCMoveBy对象要在每次应用动画之前都得创建一次,就像这样:

for (int i = [walnutSprites count] - 1; i >= 0; i--) {
        CCMoveBy *push = [CCMoveBy actionWithDuration:.1f position:ccp(10, 0)];
        CCSprite *nut = [walnutSprites objectAtIndex:i];
        [nut runAction:push];
}
失而复得 2022-09-02 17:02:43

每个action只能绑定到一个对象上面

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文