2011-03-07 2 views
0

스프라이트를 슬라이드 할 때 스프라이트가 옆에서 사라지면 반대쪽으로 감싸고 싶습니다. 그러나 스프라이트가 동시에 한쪽에서 밀려 나오는 동안 어떻게해야할지 모르겠습니다. 다른 비트를 원합니다. 루프처럼 반대쪽에 나타나는 것을 볼 수 없습니다. 일종의 웜홀입니다.스프라이트를 슬라이드 할 때 스프라이트가 측면에서 사라지면 반대편으로 돌아갑니다.

여기까지 내 코드이지만 충돌이 발생하고 스프라이트 전체가 측면에서 사라지면 스프라이트 만 전송됩니다. 누군가가 앱을 종료 할 때까지 루프도 무한 루프로 실행해야합니다.

 for (int i =0; i<16; ++i) { 
     MyNode *currentSprite = [c1array objectAtIndex:i]; 
     if (currentSprite.contentSize.height>=320 || currentSprite.position.y-currentSprite.contentSize.height/2<=0){ 
      MyNode *Bsprite = currentSprite; 
      MyNode *Tsprite = currentSprite; 
      Bsprite.scale = 1.0; 
      Tsprite.scale = 1.0; 

      if(currentSprite.position.y >=253){ 
      Bsprite.position = ccp(currentSprite.position.x,-35); 
       [self addChild:Bsprite]; 
       Bsprite.visible = TRUE; 
      } 
      if (currentSprite.position.y <=0) { 
       Tsprite.position = ccp(currentSprite.position.x,324); 
       [self addChild:Tsprite]; 
       Tsprite.visible = TRUE; 
      } 
      MyNode *isChanging; 
      if ((Tsprite.visible == TRUE && currentSprite.visible == TRUE) || (Bsprite.visible == TRUE && currentSprite.visible == TRUE)) { 
       isChanging = TRUE; 
      } 
      if (isChanging == FALSE) { 
       [self removeChild:Tsprite cleanup:YES]; 
       [self removeChild:Bsprite cleanup:YES]; 
      } 
     } 
    } 

답변

2

하나의 스프라이트로는 처리 할 수 ​​없습니다. 하지만 두 개의 스프라이트를 가질 수 있습니다. 일반적인 상황에서 스프라이트가 화면을 따라 움직일 때 하나의 스프라이트 만 보일 것입니다. 그러나 경계선에 도달하면 두 번째도 보입니다. 두 번째 화면이 완전히 화면에 들어가면 첫 번째 화면을 제거 (또는 숨기기)합니다.

이것을 구현하는 가장 좋은 방법은 첫 번째와 두 번째 스프라이트를 포함하는 CCNode 서브 클래스를 생성하고 필요할 경우이를 교체하는 것입니다. 이런 식으로 모든 논리는 매우 단순합니다. 당신은 단지 하나의 CCNode (서브 클래스)와 함께 작동하며 스프라이트를 swaping에 대해 생각하지 않을 것이다 - 그것은 내가 사용하는 것 생각 클래스에 의해 자동으로

편집

@interface MyNode : CCNode 
{ 
    CCSprite *sprite1; 
    CCSprite *sprite2; 
    CCSprite *currentSprite; 
    bool isChanging; //indicates that now two sprites are visible 
} 
@end 
+0

앤드류 감사를 수행됩니다 두 스프 라이트 – Dangermouse

+0

@ 앤드류, 나는 ccnode 서브 클래스를 만드는 방법에 대해 잘 모르겠다. 나는 그것을 객체로부터 상속 받는다는 것을 알지만, 무엇을해야할지 모른다. – Dangermouse

+0

@Dangermouse : 답변을 – Andrew