什麼是場景?
場景是包含精靈(Sprites),標籤(Labels),節點(Nodes)和其他遊戲所需對象的容器。場景負責遊戲邏輯的運行和遊戲內容的逐幀渲染。每個遊戲至少需要一個場景,你可以將場景想象成一部電影,場景就是其中正在運行並且用戶可以實時看到的電影畫面。遊戲中可以擁有多個場景,並且可以在多個不同的場景之間自然的切換。Cocos2d-x提供了多種場景切換效果,你甚至可以使用超酷的切換效果。
創建場景
創建場景很簡單:
1
|
auto
myScene = Scene::create(); |
其實最重要的是一定要記住定義好GUI元素的繪製順序以及z-order。
場景使用範例
下面讓我們創建一個簡單的場景。cocos2d-x使用右手座標系系統,也就是屏幕和顯示位置的原點(0,0)在左下角,我們的遊戲元素給出的座標是相對於原點計算出來的相對座標。如下我們創建一個簡單的場景,然後加入幾個元素:
1
2
3
4
5
6
7
8
9
|
auto
dirs = Director::getInstance(); Size
visibleSize = dirs->getVisibleSize(); auto
scene1 = Scene::create(); auto
label1 = Label::createWithTTF( "My
Game" ,
"Marker
Felt.ttf" ,
36); label1->setPosition(Vec2(visibleSize.width
/ 2, visibleSize.height / 2)); scene->addChild(label1);
auto
sprite1 = Sprite::create( "mysprite.png" );
sprite1->setPosition(Vec2(100,
100)); scene->addChild(sprite1); |
運行這段代碼就會看到一個簡單的場景,裏面有一個標籤和一個精靈。當然,這僅僅只是萬里長征的第一步。
多個場景的切換
在遊戲中肯定需要在不同的場景之間切換,比如開始一個新遊戲、遊戲進入下一章以及退出遊戲的時候都需要用到,Cocos2d-x提供了多種形式的切換方式。
Ways to transition between Scenes 幾種場景切換的方式
場景切換的方式有好多種,每種切換方式都有特有的功能,比如下面這個:
1
|
auto
myScene = Scene::create(); |
runWithScene -只能用於第一個場景的運行,這也是啓動遊戲第一個場景的方式。
1
|
Director::getInstance()->runWithScene(myScene); |
replaceScene -直接替換一個場景。
1
|
Director::getInstance()->replaceScene(myScene); |
pushScene -暫停執行當前正在運行的場景,把它放入暫停場景的堆棧之中,使用該方法必須要求當前有正在運行的場景。
1
|
Director::getInstance()->pushScene(myScene); |
popScene - 用堆棧中的場景替換正在運行的場景,正在運行的場景會被移除,該方法也要求當前有正在運行的場景。
1
|
Director::getInstance()->popScene(myScene); |
場景切換特效
在場景切換時可以增加一些特效:
1
2
3
4
|
auto
myScene = Scene::create(); //
Transition FadeDirector::getInstance()->replaceScene(TransitionFade::create(0.5, myScene, Color3B(0,255,255)));
//
FlipXDirector::getInstance()->replaceScene(TransitionFlipX::create(2, myScene));
//
Transition Slide InDirector::getInstance()->replaceScene(TransitionSlideInT::create(1, myScene) ); |