zoukankan      html  css  js  c++  java
  • 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了,大家可以自己尝试一下下~

  • 相关阅读:
    $(document).ready() 、 $('#id').load() 、window.onload 的区别
    Ajax的Get和Post的区别
    jquery slideDown slideUp 对于table无效
    .net 中连接mysql
    数据库日志文件太大如何处理
    支持IE,FireFox,Chrome三大主流浏览器,通过js+Flash方式将table导出Excel文件
    Sql2008的行列转换之行转列
    Java 8最快的垃圾收集器是什么?
    window.location.hash属性介绍
    高并发量网站解决方案
  • 原文地址:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/3944155.html
Copyright © 2011-2022 走看看