2011-06-17 59 views
0

所以我需要一個函數或一些東西,可以讓我的2個精靈一直上下移動!從應用程序開始與任何東西已經在屏幕上被觸動..我該如何製作一個循環並更改精靈位置的函數?

繼承人我試過做,但因爲它在我的init,它只運行一次..我怎麼能使這個循環它自我它看起來動態?

if (bgSkyer == false) { 
      [bg3 runAction:[CCMoveTo actionWithDuration:0.5 position:ccp(240,100)]]; 
      [bg2 runAction:[CCMoveTo actionWithDuration:1.5 position:ccp(240,95)]]; 
      bgSkyer = true; 
     }else { 
      [bg3 runAction:[CCMoveTo actionWithDuration:0.5 position:ccp(240,112)]]; 
      [bg2 runAction:[CCMoveTo actionWithDuration:1.5 position:ccp(240,80)]]; 
      bgSkyer = false; 
     } 
+0

加載所有UI元素後,如何將它放入while(true)? –

+0

@Adithya'while(true)'是人們所說的無限循環,你不想在任何程序中擁有它。至少,試試'while(flag_var)',或者更好地找到另一種不使用循環的方式。 – Lukman

回答

1

正如Jebego的回答所示,您需要使用CCRepeatForever。但是,假設您使用bgSkyer作爲標誌在兩個位置之間切換,如果您使用CCRepeatForeverCCSequence一起使用,我們可以完全跳過該標誌,如下所示(顯式變量用於清晰,但您始終可以將它們合併到如果你想單行):

CCMoveTo *moveTo_240_95 = [CCMoveTo actionWithDuration:1.5 position:ccp(240,95)]; 
CCMoveTo *moveTo_240_80 = [CCMoveTo actionWithDuration:1.5 position:ccp(240,80)]; 
CCSequence *actionsForBg2 = [CCSequence actions:moveTo_240_95, moveTo_240_80, nil]; 
CCAction *repeatForBg2 = [CCRepeatForever actionWithAction:actionsForBg2]; 
[bg2 runAction:repeatForBg2] 

CCMoveTo *moveTo_240_100 = [CCMoveTo actionWithDuration:0.5 position:ccp(240,100)]; 
CCMoveTo *moveTo_240_112 = [CCMoveTo actionWithDuration:0.5 position:ccp(240,112)]; 
CCSequence *actionsForBg3 = [CCSequence actions:moveTo_240_100, moveTo_240_112, nil]; 
CCAction *repeatForBg3 = [CCRepeatForever actionWithAction:actionsForBg3]; 
[bg3 runAction:repeatForBg3] 

CCSequence執行傳遞到它的一個又一個的順序動作,CCRepeatForever會重複序列永遠,直到你的節點上,或直到調用[node stopAllActions]該節點的dealloc 「編。

+0

工作沒有麻煩..非常感謝:) –

0

我覺得這樣的事情可能是你在找什麼:

if (bgSkyer == false) { 
    CCMoveTo *moveOne = [CCMoveTo actionWithDuration:0.5 position:ccp(240,100)]; 
    CCRepeatForever *repeatOne = [CCRepeatForever actionWithAction:moveOne]; 
    [bg3 runAction:repeatOne]; 

    CCMoveTo *moveTwo = [CCMoveTo actionWithDuration:1.5 position:ccp(240,95)]; 
    CCRepeatForever *repeatTwo = [CCRepeatForever actionWithAction:moveTwo]; 
    [bg3 runAction:repeatTwo]; 
}else{ 
    //just repeat code, etc... 
} 

希望工程!

相關問題