2013-11-27 8 views
0

산이 움직이는 내 배경 제목 화면에 시차 효과를 만들고 싶습니다. 내가 만들고 싶은 "트릭"은 산이 화면 끝으로 이동하여 노드를 파괴하고 시작 위치에서 다시 생성하는 것입니다. 처음 위치로 위치를 변경하고 나머지 위치를 반복하고 싶습니다. 행위. 이를 위해 createSceneContents() 함수의 시작 부분에서 moutain 스프라이트를 만들고 스프라이트를 메서드 animate()에 전달합니다. 항상 같은 액션 조합을 영속적으로 수행합니다. 오른쪽에 애니메이션을 적용한 다음 x 위치에있을 때 변경합니다. 난 내 메소드 선언이 ... 시작 부분에 여기(iOs SpriteKit) 메서드에서 스프라이트를 전달합니다.

-(void)createSceneContents{ 

//crear 
SKSpriteNode *mountain = [SKSpriteNode spriteNodeWithImageNamed:@"mountain.png"]; 
mountain.name = @"mountain"; 
//initial position 
mountain.position = CGPointMake(-161.5,15); 
//animate 
SKAction *animRight = [SKAction moveToX:801.5 duration:4]; 

SKAction *comboActions = [SKAction repeatActionForever:[SKAction performSelector:@selector(animate:mountain) onTarget:@"mountain"]]; 

및 mountain.position.x :

- (void) animate:(SKSpriteNode*)mountain 
{ 
     // code.... 
} 

난에 allways 내 방법에 SKSpriteNode의 * 산을 통과하는 오류를 데있다 내 문제 나는 everithing하는 것을 미쳐 가고있다.

답변

0

performSelector 동작은 이와 같은 사용자 지정 동작을 사용하여 피할 수 있습니다.

SKAction* parallaxMoveAction = [SKAction sequence:@[[SKAction moveToX:801.5 duration:4.0f],[SKAction customActionWithDuration:0 actionBlock:^(SKNode* node, CGFloat elapsedTime){ 
      [node setPosition:CGPointMake(-161.5,15)]; 
     }]]]; 

사용자 지정 작업 기간을 0으로 설정하면 한 번만 수행됩니다. 당신의 수행 선택 작업은 다음과 같아야 한편

:

[SKAction performSelector:@selector(animate:) onTarget:self] 

은 내가 아는 한 당신은 그것을에 인수를 전달할 수 없습니다.

관련 문제