今天主要总结一下,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了。