【cocos2dx 3.2】一个都不能死7 游戏结束场景

来源:互联网 发布:马勒 交响曲 知乎 编辑:程序博客网 时间:2024/05/16 15:16

分析:

  1. 创建一个Layer类作为游戏结束场景
  2. 把主场景中的碰撞事件改为切换到游戏结束场景
  3. 点击Restart切换回主场景重新开始游戏

GameOver.h

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #ifndef __GAMEOVER_H__  
  2. #define __GAMEOVER_H__  
  3.   
  4. #include "cocos2d.h"  
  5. #include "HelloWorldScene.h"  
  6.   
  7. USING_NS_CC;  
  8.   
  9. //头文件必须写上,ifndef,不然会导致出错  
  10. //比如xxx定义被否决  
  11.   
  12. class GameOver : public LayerColor  
  13. {  
  14. public:  
  15.   
  16.     static Scene* createScene();  
  17.     virtual bool init();    
  18.     CREATE_FUNC(GameOver);  
  19.   
  20. private:  
  21.   
  22.     LabelTTF *title;  
  23. };  
  24.   
  25. #endif  

GameOver.cpp

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #include "GameOver.h"  
  2.   
  3. Scene* GameOver::createScene()  
  4. {  
  5.     auto GameOverScene = Scene::create();  
  6.     auto GameOverLayer = GameOver::create();  
  7.     GameOverScene->addChild(GameOverLayer);  
  8.     return GameOverScene;  
  9. }  
  10.       
  11. bool GameOver::init()  
  12. {  
  13.     if ( !LayerColor::initWithColor(Color4B(255,69,0,255)))  
  14.     {  
  15.         return false;  
  16.     }  
  17.   
  18.     Size visibelSize = Director::getInstance()->getVisibleSize();  
  19.   
  20.     title = LabelTTF::create();  
  21.     title->setString("Game Over!");  
  22.     title->setFontSize(60);  
  23.     title->setPosition(visibelSize.width/2,visibelSize.height-100);  
  24.     addChild(title);  
  25.   
  26.     auto restart = LabelTTF::create();  
  27.     restart->setString("Restart!");  
  28.     restart->setFontSize(80);  
  29.     restart->setPosition(visibelSize.width/2,visibelSize.height/2);  
  30.     addChild(restart);  
  31.   
  32.     auto listener = EventListenerTouchOneByOne::create();  
  33.     listener->onTouchBegan = [restart](Touch *t,Event *e)  
  34.     {  
  35.         if(restart->getBoundingBox().containsPoint(restart->convertToNodeSpace(t->getLocation())))  
  36.         {  
  37.             Director::getInstance()->replaceScene(HelloWorld::createScene());  
  38.         }  
  39.         return false;  
  40.     };  
  41.     Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,restart);  
  42.   
  43.     return true;  
  44. }    

效果


0 0
原创粉丝点击