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

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

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


`melonPush`方法是这么写的: ```objective-c
- voidmelonPush
{ CCSprite *walnut = [walnutSprites lastObject]; if walnut.position.x >= 470 { return; } CCMoveBy *push = [CCMoveBy actionWithDuration:.1f position:ccp10, 0]; [melonSprite runAction:push]; for int i = [walnutSprites count] - 1; i >= 0; i-- { CCSprite *nut = [walnutSprites objectAtIndex:i]; [nut runAction:push]; }
}

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

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

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

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注