您好,登錄后才能下訂單哦!
游戲需要暫停時,一般都是將游戲界面變灰,暫停所有動作,然后彈出一堆的按鈕。
這該如何實現暫停界面呢?
1、定義
我定義了兩個類:Game游戲類、GamePause暫停類。
Game類中調用doPause()函數進行游戲暫停,卻換到GamePause暫停畫面。
2、doPause()
這里需要用到CCRenderTexture這個動態紋理類,顧名思義就是可以動態創建紋理圖片。
在doPause類中使用該類,將游戲界面截個圖。
// //創建CCRenderTexture,紋理畫布大小為窗口大小(480,320) CCRenderTexture *renderTexture = CCRenderTexture::create(480,320); //遍歷Game類的所有子節點信息,畫入renderTexture中。 //這里類似截圖。 renderTexture->begin(); this->getParent()->visit(); renderTexture->end(); //將游戲界面暫停,壓入場景堆棧。并切換到GamePause界面 CCDirector::sharedDirector()->pushScene(GamePause::scene(renderTexture)); //
3、GamePause
(1)在類中添加一個用于創建GamePause場景的靜態函數,且傳入參數為在doPause()函數中截圖的動態紋理圖片renderTexture。
// static cocos2d::CCScene* scene(CCRenderTexture* sqr); //
(2)實現創建GamePause場景的靜態函數。
這里相當于將RenderTexture動態紋理圖片作為場景的背景圖片。
// CCScene* GamePause::scene(CCRenderTexture* sqr) { CCScene *myscene = CCScene::create(); GamePause* mylayer = GamePause::create(); myscene->addChild(mylayer); //增加部分:使用Game界面中截圖的sqr紋理圖片創建Sprite //并將Sprite添加到GamePause場景層中 CCSprite *_spr = CCSprite::createWithTexture(sqr->getSprite()->getTexture()); _spr->setPosition(ccp(240,135)); //窗口大小(480,320),這個相對于中心位置。 _spr->setFlipY(true); //翻轉,因為UI坐標和OpenGL坐標不同 _spr->setColor(cocos2d::ccGRAY); //圖片顏色變灰色 myscene->addChild(_spr); return myscene; } //
4、繼續游戲
若要繼續游戲,由于Game界面是push到場景堆棧中的。所以只要popScene,即可還原到游戲界面,即可繼續游戲。
// CCDirector::sharedDirector()->popScene(); //
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。