转载时请务必以超链接形式标明文章,原始出处 。
资源为网上寻找的,仅研究学习用,若是侵犯版权请通知本人整改。
上一篇: Cocos3.4 横版游戏制作-《KillBear》-暂停层+屏蔽下层监听
上篇实现了游戏层中右上角添加一个按钮,用于暂停游戏功能的实现
本篇创建游戏开始界面,用于选择开始游戏还是退出游戏.
win64 : vs2010
Cocos2d-x v3.4Final
TexturePackerGUI
MapEdit
简单的做一个开始界面.
我们需要:
开始界面的背景,本例中使用一张已经做好的图片作为背景.
按钮放上3个,分别是:
开始游戏 游戏设置 结束游戏回调Scene来处理它们
代码 other GameStart .h#ifndef _GAME_START_SCENE_H_#define _GAME_START_SCENE_H_#include <cocos2d.h>USING_NS_CC;//#include "LevelChooseLayer.h"#include "GameScene.h"#include "ui/CocosGUI.h"#include "barrIErLayer.h"using namespace ui;class GameStartScene :public Layer { public: static cocos2d::Scene* createScene(); virtual bool init(); voID StartGameCallBack(Ref *pSender,Widget::touchEventType type); voID SettingCallBack(Ref *pSender,Widget::touchEventType type); voID CloseGameCallBack(Ref *pSender,Widget::touchEventType type); CREATE_FUNC(GameStartScen` ); }; #endif.cpp
#include "GameStartScene.h"#include "PopupLayer.h"Scene* GameStartScene::createScene(){ auto scene = Scene::create(); auto Layer = GameStartScene::create(); scene->addChild(Layer); return scene;}bool GameStartScene ::init(){ bool ret = false; do { Size visibleSize = Director::getInstance()->getVisibleSize(); auto blackground = Sprite::create("blackground.png"); addChild(blackground); blackground->setposition(Vec2(visibleSize.wIDth/2,visibleSize.height/2)); auto start_button = button::create("button.png"); start_button->setTitleText("Start"); start_button->setTitleFontname("微软雅黑"); start_button->setTitleFontSize(16); start_button->setposition(Vec2(visibleSize.wIDth/2,visibleSize.height*0.75)); start_button->addtouchEventListener(CC_CALLBACK_2(GameStartScene::StartGameCallBack,this)); addChild(start_button); auto setting_button = button::create("button.png"); setting_button->setTitleText("Set"); setting_button->setTitleFontname("微软雅黑"); setting_button->setTitleFontSize(16); setting_button->setposition(Vec2(visibleSize.wIDth/2,visibleSize.height*0.5)); setting_button->addtouchEventListener(CC_CALLBACK_2(GameStartScene::SettingCallBack,this)); addChild(setting_button); auto close_button = button::create("button.png"); close_button->setTitleText("End"); close_button->setTitleFontname("微软雅黑"); close_button->setTitleFontSize(16); close_button->setposition(Vec2(visibleSize.wIDth/2,visibleSize.height*0.25)); close_button->addtouchEventListener([=](Ref* pSender,Widget::touchEventType type) { switch (type) { case cocos2d::ui::Widget::touchEventType::ENDED: Director::getInstance()->end(); break; } }); addChild(close_button); ret = true; } while(0); return ret;}voID GameStartScene::StartGameCallBack(Ref *pSender,Widget::touchEventType type){ cclOG("StartGame"); switch (type) { case cocos2d::ui::Widget::touchEventType::ENDED: Director::getInstance()->replaceScene(TransitionCrossFade::create(0.5f,GameScene::createScene())); break; }}voID GameStartScene::SettingCallBack(Ref *pSender,Widget::touchEventType type){}voID GameStartScene::CloseGameCallBack(Ref *pSender,Widget::touchEventType type){ switch (type) { case cocos2d::ui::Widget::touchEventType::ENDED: Director::getInstance()->end(); break; }}
需要注意的:
Director::getInstance()->end();
结束整个游戏
而下面这2段代码功能相同,只是一个是直接在后面添加并编写当前回调函数,另一个是回调已经写好的函数
close_button->addtouchEventListener([=](Ref* pSender,Widget::touchEventType type) { switch (type) { case cocos2d::ui::Widget::touchEventType::ENDED: Director::getInstance()->end(); break; } });
以下代码实际上并未使用
voID GameStartScene::CloseGameCallBack(Ref *pSender,Widget::touchEventType type){ switch (type) { case cocos2d::ui::Widget::touchEventType::ENDED: Director::getInstance()->end(); break; }}
这一句调用已经写好的Scene切换动画来实现切换
Director::getInstance()->replaceScene(TransitionCrossFade::create(0.5f,GameScene::createScene()));
最后特比特别注意:
@H_968_419@switch (type)
本人在使用过程中忘了添加按键判定,由于button点击一次有2种状态,Began和Ended.
导致在点击一次的情况下函数调用了2次,这种低级错误卡了我半个小时.
望各位特别关注,button不是Menu,自己写回调代码需要注意.
当游戏刚开始,希望载入的是GameStartScene而不是GameScene,需要在AppDelegate中修改它,当然最上方需要包含GameStartScene
- .cpp
#include "GameStartScene.h"... auto scene = GameStartScene::createScene(); director->runWithScene(scene);结果
本篇非常简单的创建了一个开始界面,下篇通过ScrollVIEw创建关卡选择界面. (为什么不用PageVIEw?需要触摸回d并利用ScrollVIEw动画回d效果)
总结以上是内存溢出为你收集整理的Cocos3.4 横版游戏制作-《KillBear》- 开始界面全部内容,希望文章能够帮你解决Cocos3.4 横版游戏制作-《KillBear》- 开始界面所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)