按顺序运行已完成的 SKAction

Posted

技术标签:

【中文标题】按顺序运行已完成的 SKAction【英文标题】:Run completed SKAction in sequence 【发布时间】:2013-12-30 16:36:31 【问题描述】:

我使用此代码作为基础来创建一个容器,该容器由许多精灵组成,因此我可以将它们作为一个实体移动。一切正常,除非我在容器过程完成之前开始平移。如果我这样做,顶部的容器节点将拖动其他精灵。我希望所有的精灵都连接起来并像连接一样移动。

如果我等到整个过程完成,则表示平底锅正在移动整个容器节点没有问题。

我想知道是否有人可以指导我如何停止与应该包含在容器中的选定精灵的交互,直到该过程完成?

我已经尝试过'_background.userInteractionEnabled = NO;'以及添加到节点本身但没有成功。我一直在尝试使用具有相同结果的 runBlock。

我需要得到 1.) 应禁止与 _selectedNodeArray 中的节点的所有交互 2.) 运行所有代码并创建容器 3.) 启用与容器/节点的交互。

代码如下:

if ([_selectedNodeArray count] > 2) 

        //////CLEAN THE ARRAY//////
        _selectedNodeArray = [[NSArray alloc]initWithArray:[self cleanSelectedNodeArray:_selectedNodeArray]];
        NSLog(@"currentNode:%@ position:%@", _currentNode.name, NSStringFromCGPoint(_currentNode.position));


        SKNode *theSelectedNode = [_background childNodeWithName:_currentNode.name];

        SKAction *pulseCard = [SKAction sequence:@[
                                                  [SKAction playSoundFileNamed:@"beep-7.wav" waitForCompletion:YES],
                                                  [SKAction colorizeWithColor:[SKColor yellowColor] colorBlendFactor:1.0 duration:0.15],
                                                  [SKAction waitForDuration:0.1],
                                                  [SKAction colorizeWithColorBlendFactor:1.0 duration:0.15],
                                                  [SKAction waitForDuration:0.1]
                                                  ]];

        SKAction *sequence = [SKAction sequence:@[
                                                  [SKAction repeatAction:pulseCard count:3],
                                                  [SKAction performSelector:@selector(kickStartContainerMode) onTarget:self]]];


        [theSelectedNode runAction: sequence];
        _isThisPressedAlready = YES;
     

【问题讨论】:

【参考方案1】:

问题原来是这一行:

[SKAction repeatAction:pulseCard count:3],

如果精灵的移动发生在“count:3”完成之前,容器似乎没有 100% 打包。

它并没有解决真正的问题,而是我在这段代码中遇到的问题。

【讨论】:

以上是关于按顺序运行已完成的 SKAction的主要内容,如果未能解决你的问题,请参考以下文章

async/await 函数不等待。多个功能不按顺序运行和完成

SpriteKit - 对在多个 SKNode 上运行的多个 SKAction 进行排序

使用完成处理程序按顺序执行操作

Android - 按请求顺序在后台运行任务

如何在后台线程中按顺序运行任务[重复]

如何按时间顺序使用多处理?