是否可以在 SKAction 中途结束?

Posted

技术标签:

【中文标题】是否可以在 SKAction 中途结束?【英文标题】:Is it possible to end an SKAction mid-action? 【发布时间】:2013-10-03 05:03:39 【问题描述】:

我有一个 SKSpriteNode (monsterNode) 的子类。它使用矢量自动在屏幕上运行以跟随玩家。我目前正在使用以下操作使其运行:

SKAction *actionMove = [SKAction moveTo:actualDistance duration:time];
        [self runAction:actionMove completion:^ 
            _currentState = SVGMonsterStateIdle;
        ];

我想知道是否有可能做到这一点,如果 MonsterNode 到达 ios 设备屏幕的边界,它实际上会停止运行该操作。我目前在屏幕边缘有 SKSpriteNode 边界,与联系代表链接以通知怪物和墙壁是否接触。但是,如果我不能真正阻止怪物的 actionMove 动作完成,那将毫无意义。怪物需要停在屏幕的边界。如果无法在 SKAction 中途停止执行,是否有迂回的方法可以这样做?

【问题讨论】:

【参考方案1】:

查看SKNode.h 头文件 - 它列出了两个函数:

- (void)removeActionForKey:(NSString *)key;
- (void)removeAllActions;

后者将起作用:[monsterNode removeAllActions];

【讨论】:

射击。我查看了错误的文档(SKAction 文档)。谢谢! 关注问题:似乎有节点方式来设置key属性。子类? 编辑:代替[node runAction:myaction],使用[node runAction:myaction withKey:@"mykey"];.

以上是关于是否可以在 SKAction 中途结束?的主要内容,如果未能解决你的问题,请参考以下文章

如何停止音频 SKAction?

按顺序运行已完成的 SKAction

SKAction.moveToX 重复值变化

SKAction playSoundFileNamed 没有声音通过 iphone 扬声器

根据 SKLabel 节点文本的字符数运行 SKAction

运行SKAction后调用函数