如何在视图控制器文件中执行SKAction

时间:2015-01-16 22:11:01

标签: ios uiviewcontroller sprite-kit skaction skscene

现在我正在开发SKScene。我有两个ViewController文件,我创建了两个场景文件,它们是SKScene的子视图。我知道我可以在场景文件中执行许多SKActions。但我想在appEntersBackground方法中执行一些SKAction:在ViewController.m文件中。但似乎这种方法中的SKActions不起作用,我不知道为什么。

在ViewController.m文件中:

-(void)appEntersBackground {
    SKAction *action = [SKAction customActionWithDuration:0.1 actionBlock:^(SKNode *node, CGFloat elapsedTime) {
         //perform some actions
    }
    [myNode runAction: action];
}

1 个答案:

答案 0 :(得分:0)

您无法从viewController执行SKAction。但是,当应用程序进入后台并在那里执行必要的操作时,您可能会在场景中触发一个方法。

将appEntersBackground方法粘贴到SKScene本身。然后在didMoveToView方法中调用以下通知。

-(void)didMoveToView:(SKView *)view {
    /* Setup your scene here */

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appEntersBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];

    //The rest of your setup goes here

}

-(void)appEntersBackground {
    SKAction *action = [SKAction customActionWithDuration:0.1 actionBlock:^(SKNode *node, CGFloat elapsedTime) {
         //perform some actions
    }
    [myNode runAction: action];
}

当应用程序进入后台时,应该调用该方法。