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