2013-07-19 2 views
-1

저는 Cocos2d의 초보자입니다. 화면에서 5 초 지연되면 곧바로 동전 스프라이트를 표시하려고합니다. 그래서 내가 연속으로 7 개 동전을 추가 내 주요 게임 플레이 층에 쓴 것입니다 : 다음지연과 함께 CCSprites 표시

- (void)coinSidewaysRowOne { 
    if (coinSide1 == FALSE) 
    { 
     coinSide1 = TRUE; 
     NSLog(@"coinSide1 = TRUE"); 
     int originalX = 500; 
     for(int i = 0; i < 8; i++) 
     { 
      CCSprite *coinHorizontal = [CCSprite spriteWithFile:@"bubble.png"]; 
      coinHorizontal.position = ccp(originalX, 150); 
      originalX += 20; 

      [self addChild:coinHorizontal]; 
      [coinArray addObject:coinHorizontal]; 
     } 
    } 
} 

그리고, 내 updateRunning 방법에 나는이 추가, 그래서 동전이 화면 밖에서 산란 할 때, 그들은에 이동 왼쪽 및 사라짐 :

지금 내가 이것을 실행할 때, 동전이 오른쪽에서 이동하고 왼쪽에서 화면을 벗어납니다. 동전을 왼쪽으로 이동하여 화면에서 벗어나면 5 초의 지연 시간을두고 원래 동전처럼 오른쪽에서 새 동전을 화면에 다시 생기게하려면 어떻게해야합니까?

감사합니다.

+0

Objective C Bole (BOOL)을 테스트 할 때 모든 Apple 라이브러리에서 사용되는 표준이므로 TRUE, FALSE, TRUE 또는 FALSE 대신 YES 또는 NO로 테스트하고 설정하는 습관을 시도하십시오. 또한 부울 값을 테스트 할 때 == true 비트를 생략 할 수 있습니다. 간단한 if (CGRectIntersectsRect (knightRect, coinRect))이면 충분합니다. 그것은 당신의 코드를 정리하는 데 도움이됩니다. – tallen11

+0

개선해 주셔서 감사합니다 –

답변

-1

5 초의 지연 시간으로 해당 스프라이트를 추가하는 함수를 호출 할 수 있습니다.

for (CCSprite *coin in coinArray) 
{ 
    // apply background scroll speed 
    float backgroundScrollSpeedX = [[GameMechanics sharedGameMechanics] backGroundScrollSpeedX]; 
    float xSpeed = 1.09 * backgroundScrollSpeedX; 

    // move the coin until it leaves the left edge of the screen 
    if (coin.position.x > (coin.contentSize.width * (-1))) 
    { 
     coin.position = ccp(coin.position.x - (xSpeed*delta), coin.position.y); 
    } 
    else 
    { 
     [self performSelector:@selector(showSpriteAgain:) withObject:coin afterdelay:5.0f]; 
    } 
} 

을 그리고 다시 화면에 그 스프라이트를 추가합니다 하나 개의 기능을 확인하십시오 :이 당신을 위해 무엇을 찾고있는 생각

-(void) showSpriteAgain:(CCSprite *)coin 
{ 
coin.position = ccp(coin.position.x+screenSize.width,coin.position.y); 
} 

은 다음과 같이 몇 가지 코드를 추가해야합니다.

+0

고맙습니다 만, [self performSelector : @selector (showSpriteAgain) withObject : coin afterdelay : 5.0f]를 추가해 주셔서 감사합니다.'오류 표시'No visible @ 'GamePlayLayer'인터페이스는 selector 'performSelector : withObject : afterDelay :' '를 나타냅니다. –

+0

안녕하세요, 대답을 변경했습니다. 이제 오류가 발생하지 않습니다. 당신은 단지 ":"를 @selector (showSpriteAgain :)에 넣어야 만합니다. – Renaissance

+0

웬일인지, 그것은 여전히 ​​저에게 그 같은 오류를줍니다 ... 나는 동전으로 바꾸려고 노력했지만 여전히 운이 없었습니다. –