2015-01-16 16 views
0

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

在ViewController.m文件:

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

你需要添加更多的细节才能得到答案。该方法是否被调用? myNode是对SKNode对象的有效引用吗? –

+0

是的,它会在每次应用程序从后台重新激活时被调用。我认为myNode是有效的。它是一个SKShapeNode。 –

+0

你*想*还是你*知道*?如果您不知道,请确认。设置一个断点,看看它是否为零。同时仔细检查它是否作为孩子添加,并且在当前呈现的场景中而不是“其他场景”中。 – LearnCocos2D

回答

0

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

在SKScene自身中粘贴appEntersBackground方法。然后在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]; 
} 

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

相关问题