SpriteKit - 如何在前一个动作完成后向将 运行 的节点添加动作
SpriteKit - how to add action to the node that will run after the previous action has finished
我有一个节点,我在该节点上 运行 拖曳动作 - 一个在 mouseDown 事件上,第二个在 mouseUp 事件上。
正在执行的操作 运行 可能需要比按下鼠标左键更长的时间,我想继续执行此操作,并且不知何故 运行 mouseUp 方法的第二个操作是在 mouseDown 方法的操作之后完成的。可能吗?
你没有代码供我使用,而且我对 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"];
OnMouseUp:
if ([sprite actionForKey:@"moveAction"])
{
self.runSecondAction = YES;
}
else
{
SKAction *secondAction = [SKAction moveByX:-100 y:-100 duration:5];
[sprite runAction:secondAction];
}
基本概念是您 运行 具有自定义操作的序列,运行 是一个块。在该块中,您检查是否已将 bool 设置为 运行 第二个对象。这将使第一个完成后运行。
在 mouseUp 中,如果第一个动作完成,您希望 运行 立即执行该动作,但如果没有,您可以设置一个 bool 值,它将在序列期间进行检查。
第二个选项
不要运行 OnMouseDown 中的序列,并检查是否有@"moveAction" 进入OnMouseUp。如果存在,请检查精灵的状态并在该点创建序列以及该动作的剩余部分。如果没有那个@"moveAction"只是运行第二个动作。
希望这说得通并且有所帮助。
我有一个节点,我在该节点上 运行 拖曳动作 - 一个在 mouseDown 事件上,第二个在 mouseUp 事件上。 正在执行的操作 运行 可能需要比按下鼠标左键更长的时间,我想继续执行此操作,并且不知何故 运行 mouseUp 方法的第二个操作是在 mouseDown 方法的操作之后完成的。可能吗?
你没有代码供我使用,而且我对 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"];
OnMouseUp:
if ([sprite actionForKey:@"moveAction"])
{
self.runSecondAction = YES;
}
else
{
SKAction *secondAction = [SKAction moveByX:-100 y:-100 duration:5];
[sprite runAction:secondAction];
}
基本概念是您 运行 具有自定义操作的序列,运行 是一个块。在该块中,您检查是否已将 bool 设置为 运行 第二个对象。这将使第一个完成后运行。
在 mouseUp 中,如果第一个动作完成,您希望 运行 立即执行该动作,但如果没有,您可以设置一个 bool 值,它将在序列期间进行检查。
第二个选项
不要运行 OnMouseDown 中的序列,并检查是否有@"moveAction" 进入OnMouseUp。如果存在,请检查精灵的状态并在该点创建序列以及该动作的剩余部分。如果没有那个@"moveAction"只是运行第二个动作。
希望这说得通并且有所帮助。