制作横版游戏KillBear第9课:暂停层+屏蔽下层监听
发布日期:2021-05-10 00:54:00 浏览次数:9 分类:精选文章

本文共 4505 字,大约阅读时间需要 15 分钟。

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������������������

������������

  • Win64��������� vs2010
  • Cocos2d-x v3.4 Final
  • TexturePackerGUI
  • MapEdit

������������

������������������������������������������������������������������������������������������BUG���������������������������������������������������������������������������������������������������������������������������������������

������������

BarrierLayer ���

  • .h ������
#ifndef _BARRIER_LAYER_H_#define _BARRIER_LAYER_H_#include "cocos2d.h"USING_NS_CC;class BarrierLayer : public Layer{public:    BarrierLayer();    ~BarrierLayer();    bool init();    CREATE_FUNC(BarrierLayer);};#endif
  • .cpp ������
#include "BarrierLayer.h"BarrierLayer::BarrierLayer(){}BarrierLayer::~BarrierLayer(){}bool BarrierLayer::init(){    if(!Layer::init())        return false;    // ������������������������    LayerColor* backLayerColor = LayerColor::create(Color4B(25, 25, 25, 125));    this->addChild(backLayerColor);    // ������������������    auto callback = [](Touch*, Event*)     {        return true;    };    auto listener = EventListenerTouchOneByOne::create();    listener->onTouchBegan = callback;    listener->setSwallowTouches(true);    _eventDispatcher->add_event_listener_with_sence_graph_priority(listener, this);        return true;}

GamePause ���

  • .h ������
#ifndef _GAME_PAUSE_H_#define _GAME_PAUSE_H_#include "cocos2d.h"USING_NS_CC;class GamePause : public Layer{public:    GamePause();    ~GamePause();    bool init();    CREATE_FUNC(GamePause);};#endif
  • .cpp ������
#include "GamePause.h"#include "BarrierLayer.h"#include "GameScene.h"#include "GameStartScene.h"GamePause::GamePause(){}GamePause::~GamePause(){}bool GamePause::init(){    if(!Layer::init())        return false;    // ������������������...    // ������������������    auto continuebutton = Button::create("buttonclick.png");    continuebutton->setTitleText("Continue");    continuebutton->addTouchEventListener([\=](Ref* pSender, Widget::TouchEventType type)    {        switch (type)        {            case Widget::TouchEventType::ENDED:            {                getParent()->removeFromParent();                Director::getInstance()->resume();                break;            }        }    });    // ������������������    auto restartbutton = Button::create("buttonclick.png");    restartbutton->setTitleText("Restart");    restartbutton->addTouchEventListener([\=](Ref* pSender, Widget::TouchEventType type)    {        switch (type)        {            case Widget::TouchEventType::ENDED:            {                Director::getInstance()->resume();                Director::getInstance()->replaceScene(TransitionCrossFade::create(0.5f, GameScene::createScene()));                break;            }        }    });    // ���������������������    auto titlebutton = Button::create("buttonclick.png");    titlebutton->setTitleText("ToTitle");    titlebutton->addTouchEventListener([\=](Ref* pSender, Widget::TouchEventType type)    {        switch (type)        {            case Widget::TouchEventType::ENDED:            {                Director::getInstance()->resume();                // Director::getInstance()->replaceScene(GameStartScene::createScene());                break;            }        }    });    continuebutton->setPosition(Vec2(0, 50) + CenterPoint);    restartbutton->setPosition(CenterPoint);    titlebutton->setPosition(Vec2(0, -50) + CenterPoint);    addChild(continuebutton);    addChild(restartbutton);    addChild(titlebutton);    return true;}

������������

������ Director ���������������������

  • Director::getInstance()->pause()���������������������
  • Director::getInstance()->replaceScene()���������������
  • Director::getInstance()->resume()���������������������

PopupLayer ���������

���������������������������������������������

auto popup = PopupLayer::create(targetLayer, type);popup->runAction(getActionWithNum(type));

������������������

  • ���������������������������������������
  • ���������������������������������������������
  • ������������������������������
  • ������������������������������������

������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������

上一篇:制作横版游戏KillBear第8课:技能及CD实现
下一篇:制作横版游戏KillBear第10课:开始界面

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月03日 11时17分26秒