cocos2dx-3.10 开发初探(一)
cocos2dx-3.10 开发初探(一)1.版权声明转载请注明出处:http://blog.csdn.net/iuoon/article/details/517538172.开篇前言cocos2dx作为国产优秀开源引擎,闲暇之余就研究一下,本篇已cocos2dx -3.10版本开发,制作一个demo初探cocos2dx的世界。
·
cocos2dx-3.10 开发初探(一)
1.版权声明
转载请注明出处:http://blog.csdn.net/iuoon/article/details/51753817
2.开篇前言
cocos2dx作为国产优秀开源引擎,闲暇之余就研究一下,本篇已cocos2dx -3.10版本开发,制作一个demo初探cocos2dx的世界。
3.内容
一、欢迎界面制作
首先是首页制作,使用cocosstudio制作一个欢迎界面
我这里只是放入了一个logo,比较简单,也可以发挥相信欢迎界面做好看点。
贴上代码
#include "WelcomeScene.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
using namespace cocostudio::timeline;
WelcomeScene::WelcomeScene()
{
}
WelcomeScene::~WelcomeScene()
{
}
cocos2d::Scene * WelcomeScene::createScene()
{
auto scene = Scene::create();
auto layer = WelcomeScene::create();
scene->addChild(layer);
return scene;
}
bool WelcomeScene::init()
{
if (!Layer::init())
{
return false;
}
auto rootNode = CSLoader::createNode("scene/WelcomeScene.csb");
addChild(rootNode);
scheduleOnce(schedule_selector(WelcomeScene::GotoLogin),2.0f); //延迟两秒执行
return true;
}
void WelcomeScene::GotoLogin(float dt)
{
auto loginscene = LoginScene::createScene();
TransitionScene * reScene = TransitionCrossFade::create(1.0f, loginscene);//界面切换效果
Director::getInstance()->replaceScene(reScene);
}
以上代码加了个延时执行,使欢迎界面能够显示两秒之后再跳转。
二、登陆界面制作
界面目前不实现输入用户名和密码登陆,先做个登陆按钮
以上为界面,下面看下代码:
#include "LoginScene.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
#include "MainScene.h"
USING_NS_CC;
using namespace cocostudio::timeline;
LoginScene::LoginScene()
{
}
LoginScene::~LoginScene()
{
}
cocos2d::Scene * LoginScene::createScene()
{
auto scene = Scene::create();
auto layer = LoginScene::create();
scene->addChild(layer);
return scene;
}
bool LoginScene::init()
{
if (!Layer::init())
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto rootNode = CSLoader::createNode("scene/LoginScene.csb");
addChild(rootNode);
auto start_bt = static_cast<Button*>(rootNode->getChildByName("Button_3"));
start_bt->addTouchEventListener(CC_CALLBACK_2(LoginScene::GotoGame,this));
return true;
}
void LoginScene::GotoGame(Ref * pSender, Widget::TouchEventType type)
{
auto mainlayer = MainScene::createScene();
TransitionScene * res = TransitionCrossFade::create(1.0f, mainlayer);
switch (type)
{
case cocos2d::ui::Widget::TouchEventType::BEGAN:
break;
case cocos2d::ui::Widget::TouchEventType::MOVED:
break;
case cocos2d::ui::Widget::TouchEventType::ENDED:
log("touch start game");
Director::getInstance()->replaceScene(res);
break;
case cocos2d::ui::Widget::TouchEventType::CANCELED:
break;
default:
break;
}
}
这里面按钮用的Button,需要注意一点的是,如果直接给button设置监听事件,会触发两次事件,那是因为没有指定
既触发了begin,又触发了end,为解决这个这个问题
所以只在
Widget::TouchEventType::ENDED:上执行事件
以上就是本篇完成功能。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)