Cocos2dx3.2rc+cocosstudio学习日记(2)

今天主要总结一下,Cocos2DX的入口,以及对cocostudio创建的UI调用,控件调用。

1.Cocos2DX的入口:

在新建了一个Cocos2Dx工程以后,在VS中会发现这么一个源文件:AppDelegate.cpp

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLView::create("My Game");
        director->setOpenGLView(glview);
    }

    // turn on display FPS
    director->setDisplayStats(false);

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);

    // create a scene. it's an autorelease object
	auto scene = GameScene::scene();

    // run
    director->runWithScene(scene);

    return true;
}


这个就是工程的入口,这里需要注意几个比较重要的类,第一个就是Director导演类:

Director是一个共享的的对象,主要负责不同场景间的控制:判断活跃场景;改变场景;替换场景等

主要的方法有:

runWithScene(Scene* scene):这个用作启动第一个场景,一般只会用一次,一般也就用在入口函数中;

replaceScene(Scene* scene):切换场景,用一个新场景替换当前场景,当前场景被释放;

pushScene(Scene* scene):切换场景,当前场景被挂起到场景堆栈中,然后再切换到下一个场景;

void popScene():顾名思义,与pushScene配合使用,回到上一个场景;

void popToRootScene:同上,回到根场景;

2.Scene类:

上面提到了场景,场景在cocos2DX中如何理解?这里就需要对下面三个类进行一定的了解:

Node类

Scene类

Layer类

简单来说,Node就是父亲,Scene和Layer全部是在这个Node上面,Scene负责和Director打交道,一个Scene可以加载多个Layer。

大概是这么一个具体过程:Scene加载多个Layer,然后Director加载一个Scene进行显示。

3.如何调用Cocostudio的UI:

这里用下面的代码来进行说明【这是一段GameScene类的源文件,下面是初始化,初始化完成后调用Scene方法】:

 GameScene

bool GameScene::init()  //初始化 
{
	//GameLayer *gamelayer = GameLayer::node();


	//
	// 1. super init first
	if (!Scene::init())
	{
		return false;
	}



	/
	// 2. add your codes below...

	//调用cocosstudio的UI,注意Layout
	//层调用UI,这个界面场景调用层
	

	auto _uiLayer = Scene::create();
	auto _widget = dynamic_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("UI001_1.ExportJson"));
	_uiLayer->addChild(_widget);  
	this->addChild(_uiLayer);

	//初始UI界面中含的控件,通过调用的widget来进行获取
	//FirstChangeLoading为具体的相应事件
	Button* BUTTON001 = (Button*)Helper::seekWidgetByName(_widget, "Button_12");
	BUTTON001->addTouchEventListener(this, toucheventselector(GameScene::FirstChangeLoading));
	
	//进入下一个函数进行其他调用

	return true;
}<strong>
</strong>

可见,具体可以分为这样一个过程:

1.初始化判断:

super init first

2.创建对象:

<span style="font-size:18px;"><span style="font-size: 18px;">auto _uiScene = Scene::create();</span></span><pre name="code" class="cpp" style="font-size: 18px;">auto _uiLayer = Layer::create();


 
<span style="font-size:18px;"></span>

3.创建连接:

auto _widget = dynamic_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("UI001_1.ExportJson"));
4.进行连接:

_uiLayer->addChild(_widget);  
this->addChild(_uiLayer);
5.获取当前UI的控件

6.调用函数

7.return true


通过上面几部,就可以调用使用Cocostudio创建的UI了。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值