gpt4 book ai didi

ios - SpriteKit - 如何将操作添加到将在上一个操作完成后运行的节点

转载 作者:行者123 更新时间:2023-11-29 02:13:17 39 4
gpt4 key购买 nike

我有一个节点,我在该节点上运行两个 Action - 一个在 mouseDown 事件上,第二个在 mouseUp 事件上。正在运行的操作可能比按下鼠标左键花费的时间更长,我想继续执行此操作,并在 mouseDown 方法的操作完成后以某种方式从 mouseUp 方法运行第二个操作。可能吗?

最佳答案

你没有代码让我工作,而且我对 Swift 也不是很好所以希望这对 Objective-C 有意义

第一个选项

鼠标按下:

SKAction *firstAction = [SKAction moveByX:100 y:100 duration:5];
SKAction *customAction = [SKAction customActionWithDuration:0 actionBlock:^(SKNode *node, CGFloat elapsedTime) {
if (self.runSecondAction)
{
SKAction *secondAction = [SKAction moveByX:-100 y:-100 duration:5];
[node runAction:secondAction];
self.runSecondAction = NO;
}
}];

SKAction *squence = [SKAction sequence:@[firstAction, customAction]];

[sprite runAction:squence withKey:@"moveAction"];

鼠标上移:

if ([sprite actionForKey:@"moveAction"])
{
self.runSecondAction = YES;
}
else
{
SKAction *secondAction = [SKAction moveByX:-100 y:-100 duration:5];
[sprite runAction:secondAction];
}

基本概念是您使用运行 block 的自定义操作来运行序列。在该 block 中,您检查是否已将 bool 设置为运行第二个对象。这将使它在第一个完成后运行。

在 mouseUp 中,如果第一个 Action 完成,您希望立即运行该 Action ,但如果没有,您设置一个将在序列期间检查的 bool 值。

第二个选项

不要在 OnMouseDown 中运行序列并检查是否有 @"moveAction"去 OnMouseUp。如果存在,请检查 Sprite 的状态并在该点创建序列以及该 Action 的剩余部分。如果没有 @"moveAction"就运行第二个 Action 。

希望这是有道理的并且有所帮助。

关于ios - SpriteKit - 如何将操作添加到将在上一个操作完成后运行的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051315/

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