2015-01-16 6 views
0

이제 SKScene에서 작업하고 있습니다. 두 개의 ViewController 파일이 있고 SKScene의 하위 뷰인 두 개의 장면 파일을 만들었습니다. 나는 장면 파일에서 많은 SKActions를 수행 할 수 있다는 것을 알고 있습니다. 하지만 appEntersBackground 메서드에서 SKAction을 수행하고 싶습니다. ViewController.m 파일에 있습니다. 그러나이 방법의 SKActions가 작동하지 않는 것 같아요. 왜 그런지 모르겠습니다. ViewController.m 파일에서 보기 컨트롤러 파일에서 SKAction을 수행하는 방법

: 당신은의 ViewController에서 SKAction을 수행 할 수 없습니다

-(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

당신은 * 생각합니까 * 당신은 * 알고 있습니까 *? 모르는 경우 확인하십시오. 중단 점을 설정하고 그것이 nil인지 확인하십시오. 또한 자식으로 추가되었는지 여부를 다시 확인하고 "다른 장면"이 아닌 현재 표시된 장면에 있는지 확인합니다. – LearnCocos2D

답변

0

. 그러나 응용 프로그램이 백그라운드로 들어가서 거기에서 필요한 작업을 수행 할 때 장면 자체에서 메서드를 트리거 할 수 있습니다.

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]; 
} 

응용 프로그램이 백그라운드로 들어갈 때 메서드가 호출되어야합니다.