cocos2dx-3.10 开发初探(一)

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



以上就是本篇完成功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值