2013-07-19 57 views
-1

我是Cocos2d的初學者,我想在屏幕上移動5秒鐘後立即顯示硬幣。所以這是我在我的主要的遊戲層寫在一行中添加7枚硬幣:延遲5秒後重復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方法我加了這一點,所以當硬幣產卵的畫面之外,他們移動到離開而消失:

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); 
     } 
     **// This is where I am trying to make the CCSprite coin reappear** 
     else 
     { 
      [self performSelector:@selector(showSpriteAgain:) withObject:coin afterDelay:5.0f]; 
     } 
    } 

然後我加入這個方法:

-(void) showSpriteAgain:(CCSprite *)coin{ 
    CGSize screenSize = [[CCDirector sharedDirector] winSize]; 
    coin.position = ccp(coin.position.x-screenSize.width,coin.position.y); 
} 

但硬幣仍然沒有在5秒鐘後再次出現。難道我做錯了什麼?謝謝。

+0

我懷疑你的'else'部分沒有被調用..你可以把一個調試指針,或NSLog檢查.. – iphonic

+0

我添加了一個NSLog,只要第一波硬幣消失,它被稱爲,但硬幣aren'重新出現。 –

+0

@ShalinShah:我認爲你應該嘗試一下你自己。我知道我不應該在這裏寫這個,但我不喜歡你的方式兩次發表相同的問題。 – Renaissance

回答

1

變化showSpriteAgain功能:

-(void) showSpriteAgain:(CCSprite *)coin{ 
    CGSize screenSize = [[CCDirector sharedDirector] winSize]; 
    coin.position = ccp(coin.position.x + screenSize.width,coin.position.y); 
} 

我做什麼,在它的移動從右到左,所以我們必須把它回到正確的,所以我們必須添加screennSize.width,