Cocos3.4 横版游戏制作-《KillBear》- 开始界面
转载时请务必以超链接形式标明文章,原始出处 。 上一篇: Cocos3.4 横版游戏制作-《KillBear》-暂停层+屏蔽下层监听 开发环境win64 : vs2010 简单的做一个开始界面.
开始界面的背景,本例中使用一张已经做好的图片作为背景. 按钮放上3个,分别是:
回调Scene来处理它们 代码otherGameStart
#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
#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;
}
}
需要注意的: 而下面这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()));
最后特比特别注意: AppDelegate当游戏刚开始,希望载入的是GameStartScene而不是GameScene,需要在AppDelegate中修改它,当然最上方需要包含GameStartScene #include "GameStartScene.h"
...
auto scene = GameStartScene::createScene();
director->runWithScene(scene);
结果 结语本篇非常简单的创建了一个开始界面,下篇通过ScrollView创建关卡选择界面. (为什么不用PageView?需要触摸回弹并利用ScrollView动画回弹效果) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- iphone: – 用UILocalNotification声音播放录制的声音
- VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
- c# – EditorFor / CheckBoxFor boolean将data-val-require
- 【Oracle】再看事务
- 常用正则表达式大全
- c# – 如何将sqlparameter传递给IN()?
- [6]Cocos2d-x之关于屏幕大小与节点大小、节点缩放问题
- swift 协议
- AliSQL 20171010版本发布 Sequence兼容PostgreSQL/Oracle语
- ruby-on-rails – 我们可以使用Ruby on rails开发移动网络应