我知道這個問題已被問及之前的答案,但沒有一個答案似乎符合我想要做的。我需要能夠暫停動畫,但仍然可以讓我的暫停菜單出現並詢問用戶輸入。這是可能的,如果是這樣,我該怎麼做。如何在cocos2d中暫停遊戲?
回答
我嘗試了所有的建議,但沒有一個在我的情況下工作,所以這就是我最終做的工作,對我來說非常合適。這是暫停。
[self pauseSchedulerAndActions];
for (CCNode *child in [self children]) {
[child pauseSchedulerAndActions];
}
而這個恢復:
[selfReference resumeSchedulerAndActions];
for (CCNode *child in [selfReference children]) {
[child resumeSchedulerAndActions];
}
停止只是動畫?
[ [ CCDirector sharedDirector ] stopAnimation ];
[ [ CCDirector sharedDirector ] startAnimation ];
如果要停止一切,暫停一下,因爲你已經看到了做其他任何地方(菜單已被移動到位後),則取消暫停,一旦用戶觸摸某一件事。
有兩種方法pause
和resume
爲此,在CCDirector
:
[[CCDirector sharedDirector] pause];
和
[[CCDirector sharedDirector] resume];
從文檔:
正在運行的場景將被drawed但所有計劃的計時器將暫停,暫停時,提款率將爲4 FPS,以減少CPU消耗
我是新來的cocos2D和使用單獨的遊戲循環(而不是scheduleupdate),並與其他一些調度程序一起未調度。它會自動暫停遊戲,同時我在遊戲玩家的頂部放置一個新圖層(即Pauselayer)。 顯得相當複雜,但爲我工作。
我建議你推 「暫停的場景」 的cocos2d的現場堆棧。
CCScene * pauseScene = ...;
[[CCDirector sharedDirector] pushScene:pauseScene];
這會自動暫停當前場景(我假設是水平的場景),並運行「暫停場景」,使用戶可以與它進行交互。
這是非常重要要記住上面的指令被執行後,你將有2個場景在cocos2d的場景棧(水平場面[凍結] +暫停現場[運行])。
所以,一旦你在「暫停場景」,如果你想簡歷水平,你只需要流行從堆棧中暫停的場景。
[[CCDirector sharedDirector] popScene];
這將自動刪除「暫停場景」並恢復堆棧(這是關卡場景)中的前一場景。
請記住,您總是需要在某個時間「彈出」暫停場景。重要的是不要忘記「級別場景」仍然在cocos2d的場景堆棧中!
例如:如果在「暫停場景」你有一個按鈕加載水平選擇菜單,永遠離開目前的水平,你應該實現它如下:
CCScene * levelSelector = ...
[[CCDirector sharedDirector] popScene]; // to remove the "pause scene" from the stack
[[CCDirector sharedDirector] replaceScene:levelSelector]; // replace the "level scene" with the "levelSelector scene"
我用:
@interface CCNode (PauseAdded)
@end
@implementation CCNode (PauseAdded)
-(void) traversePause
{
CCNode* a = [children_ lastObject];
CCARRAY_FOREACH(children_, a)
{
[scheduler_ pauseTarget:a];
[actionManager_ pauseTarget:a];
[a traversePause];
}
[scheduler_ pauseTarget:self];
[actionManager_ pauseTarget:self];
}
-(void) traverseResume
{
CCNode* a = [children_ lastObject];
CCARRAY_FOREACH(children_, a)
{
[a traverseResume];
[scheduler_ resumeTarget:a];
[actionManager_ resumeTarget:a];
}
[scheduler_ resumeTarget:self];
[actionManager_ resumeTarget:self];
}
@end
這樣,你可以做這樣的事情假設你的遊戲層從休止層分離:
[scene.game_layer traversePause];
而取消暫停:
[scene.game_layer traverseResume];
試試這個暫停按鈕類https://github.com/iabtyagi/custom-pause-cocos2d。 完全符合您的要求。
隨着Cocos 2D版本2的行動管理器不再是一個單身人士。而是代碼已經與CCDirector融合。
所以這是暫停在特定的場景中所有的行動,並恢復他們以及方式。
-(void)pauseGamePlayScene{
for(CCSprite *sprite in [self children]) {
[[[CCDirector sharedDirector] actionManager]pauseTarget:sprite];
}
}
-(void)resumeGamePlayScene{
for(CCSprite *sprite in [self children]) {
[[[CCDirector sharedDirector] actionManager]resumeTarget:sprite];
}
}
Cocos 2d Ver 2 Action Manager Documentation
希望這有助於。
CCPhysicsNode * _physics;
_physics.paused = TRUE; //將暫停遊戲,但沒有行動。
_physics.paused = FALSE; //它會恢復你的紡紗和下降的精靈,而按鈕可壓如暫停比賽中。
- 1. 的cocos2d的Android不暫停遊戲
- 2. 如何在cocos2d遊戲中實現暫停/恢復?
- 3. cocos2d-android:如何玩/暫停遊戲狀態
- 4. 當遊戲暫停時Phaser「暫停遊戲」文本
- 5. 如何在cocos2d中從後臺恢復遊戲後保持暫停狀態?
- 6. 如何在cocos2d遊戲中添加短暫停頓(思考時間)
- 7. 如何暫停和恢復andengine遊戲?
- 8. Flash - 暫停遊戲ActionScript 3
- 9. scoreLabel.text使得遊戲暫停
- 10. 暫停遊戲(ActionScript 3)
- 11. 暫停遊戲循環?
- 12. clearInterval和暫停遊戲
- 13. 在通話過程中暫停遊戲
- 14. 在遊戲中暫停,UICustomalertview/UIView
- 15. 如何在cocos2d中記錄遊戲iPhone
- 16. 如何記錄cocos2d遊戲?
- 17. 如何在Cocos2d中暫停和恢復
- 18. nextpeer在cocos2d遊戲
- 19. 如何暫停遊戲並在日冕中顯示新圖層
- 20. 如何在android andengine遊戲中製作暫停/恢復事件?
- 21. 如何在SpriteKit和SceneKit中暫停遊戲 - SWIFT
- 22. 如何在Flash遊戲中實現音樂的「暫停」按鈕?
- 23. 如何整合cocos2d遊戲和遊戲中心
- 24. 如何在cocos2d環境之外爲cocos2d遊戲實現虛擬遊戲杆?
- 25. AIR to Android/OUYA的Flash遊戲:暫停應用/遊戲
- 26. 如何重置遊戲在cocos2d
- 27. Javascript:暫停/暫停JavaScript俄羅斯方塊遊戲
- 28. 遊戲c的暫停按鈕#
- 29. 遊戲暫停/恢復功能
- 30. 當進入背景時暫停遊戲