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:上执行事件



以上就是本篇完成功能。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐