按顺序运行完成的SKAction

时间:2013-12-30 16:36:31

标签: sprite-kit skaction

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

如果我等到整个过程完成,则没有问题意味着平移移动整个容器节点。

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

我试过'_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 个答案:

答案 0 :(得分:0)

问题原来是这一行:

[SKAction repeatAction:pulseCard count:3],

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

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