我有一个 CCSpriteSheet 和一个 CCSpriteBatchNode 从 .png 和 .plist 文件完美运行的动画,但是,有没有办法知道为了启动另一个 CCAction 是哪个帧的动画?
例如,我有一个 30 帧的 CCAnimation,我想在动画位于第 15 帧时为另一个精灵设置动画。这可能吗?
提前致谢。
我有一个 CCSpriteSheet 和一个 CCSpriteBatchNode 从 .png 和 .plist 文件完美运行的动画,但是,有没有办法知道为了启动另一个 CCAction 是哪个帧的动画?
例如,我有一个 30 帧的 CCAnimation,我想在动画位于第 15 帧时为另一个精灵设置动画。这可能吗?
提前致谢。
将动画拆分为多个部分并使用 CCSequence。例如:
CCAction *Action = [CCSequence actions:
[CCAnimate actionWithAnimation:myCCanimationPart1],
[CCCallBlock actionWithBlock:^
{
[myOtherSprite runAction:(otherAnimationAction)];
}],
[CCAnimate actionWithAnimation:myCCanimationPart2],
nil];
我通常用我的一个游戏中的这个代码片段来满足这种需求:
float stall;
CCAnimation *secondAnim;
CCSprite *secondSprite;
NSString *dyingFx;
id sound = (self.alive ? [GENoopAction action] :
[GEPlayFx actionWithSoundFile:dyingFx]
);
id second = [CCSequence actions:
[CCDelayTime actionWithDuration:stall]
, [CCShow action]
, sound
, [CCAnimate actionWithAnimation:secondAnim]
, [CCCallFunc actionWithTarget:self selector:@selector(hurtComplete)]
];
secondSprite.visible= NO;
[secondSprite runAction:second];
GEPlayFx 和 GENoopAction 是我为自己创建的玩具(CCActionInstant 实现)。