2014-04-01 13 views
1

텍스처를 설정하여 장면 위에 스폰되고 천천히 화면 아래로 스크롤하여 풍경을 만듭니다. 텍스처를 스크롤하고 나타나면 좋습니다. 그들은 내가 원하는 방식으로 일한다. 문제는 그것이 부모로부터 제거되도록 설정 했더라도 장면을 떠난 후에 다시 나타납니다.왜이 이미지가 계속 나타 납니까? Objective-C

-(void)moveItems { 

    [self enumerateChildNodesWithName:@"tumbleWeed" usingBlock:^(SKNode *node, BOOL *stop) { 
     SKSpriteNode * tumbleWeed = (SKSpriteNode *)node; 
     CGPoint bgVelocity = CGPointMake(0, -BG_VELOCITY); 
     CGPoint amtToMove = CGPointMultiplyScalar(bgVelocity,_dt); 
     tumbleWeed = CGPointAdd(amtToMove, tumbleWeed.position); 

     if (tumbleWeed.position.y > self.size.height + 10) { 
      [tumbleWeed removeFromParent]; 
     } 

    }]; 

} 

항목이 다시 나타납니다 왜 이해가 안 :이 화면이 꺼져있을 때

-(void)initalizingScrollingBackground 
{ 
    for (int i = 0; i < 2; i++) { 

     SKSpriteNode *tumbleWeed = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"tumbleWeed.png"] size:CGSizeMake(40, 40)]; 
     tumbleWeed.position = CGPointMake(160, -10); 
     tumbleWeed.zPosition = 1.0; 
     tumbleWeed.name = @"tumbleWeed"; 
     [bg addChild:tumbleWeed]; 

    } 

} 

이 항목을 이동하고 삭제 : 항목의

산란 :이 코드입니다 화면 상단에서 스크롤을 다시 시작 하시겠습니까? 이유가 뭐예요? 어떻게 해결할 수 있습니까?

감사합니다. 당신을 위해

답변

2

두 아이디어 : 응용 프로그램이 일시 중지됩니다 있도록

1) -(void)initalizingScrollingBackground에 중단 점을 넣습니다. 그런 다음 호출 스택을보고이 메소드에 대한 호출이 트리거되는 방식을 확인합니다.

2) 자식 개체에 removeFromParent을 호출하는 대신 부모로부터 해당 작업을 시작하십시오. 예 : [bg removeChild: tumbleWeed]; 나는 자식으로부터이 호출을하는 것이 문제가 될 수있는 다른 프로젝트를 보았습니다. 그래서 추가/제거 작업을 항상 부모와 함께 시작하는 연습을 채택했습니다.

행운을 빈다. 희망이 도움이 ....

관련 문제