gpt4 book ai didi

ios - 暂停 Sprite 上的特定 Action

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:28 25 4
gpt4 key购买 nike

我在 cocos2dx V3 中有一个 Sprite * 类型的播放器,我希望它在不同的时间间隔运行不同的动画,我找不到暂停然后恢复特定动画( Action )的方法。虽然我可以使用 _player->pauseSchedulerAndActions() 同时暂停和恢复 Sprite 的所有 Action 。我在 sprite 上使用“CCRepeatForever” Action ,所以,我必须暂停一个以恢复另一个。请帮助通过标记或任何其他方法暂停操作。提前致谢。

最佳答案

糟糕

我假设这是 Objective-C,但@Droppy 告诉我它不是。

我没有意识到 cocos2d-x 是不同的。但是,因为这是一个相当高级的框架,所以我在答案中所做的背后的概念仍然有效。我暂时将答案保留在这里。

答案

自从我完成任何 Cocos2D 的东西以来已经有一段时间了,但我可以给你这个想法。

与其创建一个 Action 并永远重复它,不如使用这样的方法...

- (void)twirlAround
{
// only create and perform the actions if variable set to YES
if (self.twirling) {
// this will do your action once.
CCAction *twirlAction = // create your twirl action (or whatever it is)

// this will run this function again
CCAction *repeatAction = [CCActionCallBlock actionWithBlock:^{
[self twirlAround];
}];

// put the action and method call in sequence.
CCActionSequence *sequence = [CCActionSequence actions:@[twirlAction, repeatAction]];

[self runAction:sequence];
}
}

只要 twirling 属性设置为 YES,它就会重复运行。

因此,您可以在代码的其他地方(可能是您当前正在添加重复 Action 的地方)执行此操作...

self.twirling = YES;
[self twirlAround];

这将开始重复旋转。

要停止它,你可以做...

self.twirling = NO;

这将停止旋转。

替代方法

- (void)twirlAround
{
// this will do your action once.
CCAction *twirlAction = // create your twirl action (or whatever it is)

// this will run this function again
CCAction *repeatAction = [CCActionCallBlock actionWithBlock:^{
if (self.twirling) {
[self twirlAround];
}
}];

// put the action and method call in sequence.
CCActionSequence *sequence = [CCActionSequence actions:@[twirlAction, repeatAction]];

[self runAction:sequence];
}

关于ios - 暂停 Sprite 上的特定 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27523930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com