cocos2d-x創建和轉換場景

什麼是場景?

場景是包含精靈(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) );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章