首页 > 代码库 > cocos2dx游戏开发——微信打飞机学习笔记(十一)——GameOverScene的搭建

cocos2dx游戏开发——微信打飞机学习笔记(十一)——GameOverScene的搭建

一、创建文件~

         GameOverScene.h

         GameOverScene.cpp

         GameOverLayer.h

         GameOverLayer.cpp

二、How to do?

        就是加入一个转场就好~转到GameOverScene,然后我们先简单实现下GameOverScene

(1)搭建GameOverScene

           由于我们结束场景是一个计分板,所以我们需要在创建场景的时候需要传入一个_score,所以我们在写创建函数的时候就需要有一个参数,其他的话都是一样的。

Gameover* Gameover::create(int score){    auto pRet = new Gameover();    if (pRet && pRet->init(score))    {        pRet->autorelease();        return pRet;    }    else    {        delete pRet;        pRet = NULL;        return NULL;    }

(2)搭建GameoverLayer

         同上首先创建函数需要引入一个score,然后就是Init之中的操作。

1、初始化背景~

    auto background = Sprite::createWithSpriteFrameName("gameover.png");    background->setAnchorPoint(Vec2::ZERO);    background->setPosition(Vec2(0,-120));    this->addChild(background);

2、回到游戏按钮的设置

    auto again = MenuItemImage::create("btn_finish.png","btn_finish.png",CC_CALLBACK_0(GameOverLayer::restart, this));//设置菜单项    auto menu = Menu::create(again,NULL);//创建菜单    menu->setPosition(Vec2(Director::getInstance()->getVisibleSize().width-100,50));//定位    this->addChild(menu);//加入到Layer

void GameOverLayer::restart(){        auto scene = GameScene::create();//创建一个新的GameScene    auto transition = TransitionJumpZoom::create(1, scene);    Director::getInstance()->getInstance()->replaceScene(transition);//transition一下~}

(3)我们需要在GameScene中的GameLoop中玩家死翘翘的时候加入转场的操作~

if (!_player->getisAlive())    {        this->gameover();    }void GameScene::gameover(){    _enemyLayer->stopAllEnemiesSpaw();  //停止发射敌人    _bullet->stopSpawBullet();           //停止发射子弹    _background->stopBackground();          //停止移动背景            auto gameover = Gameover::create(6);     //先随便传个分数= =,因为我们还没有加
                                                 //计分。        auto transition = TransitionJumpZoom::create(1.0, gameover);        Director::getInstance()->replaceScene(transition);    }

       然后呢,在这里我发现,我们即使创建了转场动画,也不会显示,而是会直接跳到GameOver中去,这个我也不是很理解,而且我也尝试了不同的方法,结果都不行。测试例中的代码是在点击一个按钮后转场,但是不是按按钮再转场却没有相关的demo,于是乎,暂时无解,希望大家给小白我解惑一下。

然后就Ok了,大家可以自己尝试一下下~

cocos2dx游戏开发——微信打飞机学习笔记(十一)——GameOverScene的搭建