cocos2d x場景與層的使用

2021-06-29 07:04:29 字數 4566 閱讀 4607

今天學習了cocosd-x中場景和層的使用。

本次例項有兩個場景helloword , setting,在helloword的遊戲設定中可以切換到setting場景

首先我們新建乙個setting類,繼承自cocos2d::layer類

具體**如下:

#ifndef __helloworld_scene_h__

#define __helloworld_scene_h__

#include "cocos2d.h"

class helloworld : public cocos2d::layer

;#endif // __helloworld_scene_h__

#include"settingscene.h"

using_ns_cc;

scene *setting::createscene()

bool setting::init()

size visiblesize = director::getinstance()->getvisiblesize();

vec2 origin = director::getinstance()->getvisibleorigin();

//背景建立

sprite *bg = sprite::create("setting-back.png");

bg->setposition(origin.x + visiblesize.width / 2,

origin.y + visiblesize.height / 2);

this->addchild(bg);

auto soundonmenuitem = menuitemimage::create("on.png",

"on.png");

auto soundoffmenuitem = menuitemimage::create("off.png",

"off.png");

auto soundtogglemenuitem = menuitemtoggle::createwithcallback(cc_callback_1(setting::menusoundtogglecallback, this),

soundonmenuitem,

soundoffmenuitem,

null);

soundtogglemenuitem->setposition(director::getinstance()->converttogl(vec2(818, 220)));

//**設定

auto musiconmenuitem = menuitemimage::create("on.png",

"on.png");

auto musicoffmenuitem = menuitemimage::create("off.png",

"off.png");

auto musictogglemenuitem = menuitemtoggle::createwithcallback(cc_callback_1(setting::menumusictogglecallback, this),

musiconmenuitem,

musicoffmenuitem,

null);

musictogglemenuitem->setposition(director::getinstance()->converttogl(vec2(818, 362)));

//ok按鈕

auto okmenuitem = menuitemimage::create("ok-down.png",

"ok-up.png", cc_callback_1(setting::menuokcallback , this));

okmenuitem->setposition(director::getinstance()->converttogl(vec2(600, 510)));

menu* mn = menu::create(soundtogglemenuitem, musictogglemenuitem, okmenuitem, null);

mn->setposition(vec2::zero);

this->addchild(mn);

return true;

}void setting::menusoundtogglecallback(cocos2d::ref* psender)

void setting::menumusictogglecallback(cocos2d::ref* psender)

void setting::menuokcallback(cocos2d::ref* psender)

以上就完成了對setting類的封裝,下面我們只要在helloworld場景中進行場景的切換就可以了

具體**如下:

// on "init" you need to initialize your instance

bool helloworld::init()

size visiblesize = director::getinstance()->getvisiblesize();

vec2 origin = director::getinstance()->getvisibleorigin();

//新增背景

sprite *bg = sprite::create("background.png");

bg->setposition(vec2(origin.x + visiblesize.width / 2,

origin.y + visiblesize.height / 2));

this -> addchild(bg);

//開始精靈

sprite *startspritenormal = sprite::create("start-up.png");

sprite *startspriteselected = sprite::create("start-down.png");

menuitemsprite *startmenuitem = menuitemsprite::create(startspritenormal,

startspriteselected,

cc_callback_1(helloworld::menuitemstartcallback, this));

startmenuitem->setposition(director::getinstance()->converttogl(vec2(700, 170)));

//設定選單

menuitemimage *settingmenuitem = menuitemimage::create(

"setting-up.png",

"setting-down.png",

cc_callback_1(helloworld::menuitemsettingcallback, this));

settingmenuitem->setposition(director::getinstance()->converttogl(vec2(480, 400)));

//設定幫助選單

menuitemimage *helpmenuitem = menuitemimage::create(

"help-up.png",

"help-down.png",

cc_callback_1(helloworld::menuitemhelpcallback, this));

helpmenuitem->setposition(director::getinstance()->converttogl(vec2(860, 480)));

menu *mn = menu::create(startmenuitem, settingmenuitem, helpmenuitem, null);

mn->setposition(vec2::zero);

this->addchild(mn);

return true;

}void helloworld::menuitemstartcallback(cocos2d::ref *psender)

void helloworld::menuitemsettingcallback(cocos2d::ref *psender)

void helloworld::menuitemhelpcallback(cocos2d::ref *psender)

具體使用到的場景切換函式:

void pushscene(); //切換到下乙個場景,將當前場景掛起到場景堆疊中,然後切換到下乙個場景

void popscene();  //回到上乙個場景

以及場景過度動畫:

auto sc = setting::createscene();

auto rescene = transitionjumpzoom::create(2.0f, sc);

director::getinstance()->pushscene(rescene);

關鍵**就是第二句動畫的設定。具體動畫型別去檢視過渡動畫類transitionscene類和它的自雷

COCOS2DX 場景與層

runscene scene 啟動第乙個場景時使用 popscene 與pushscene配合使用,可以回到上乙個場景 poptorootscene 與pushscene配合使用,可以回到根場景 2.場景過渡動畫 由transitionsecene和它的子類展示 3.場景的生命週期函式 ctor建構...

Cocos2d x 下的場景,層,精靈

cocos2d的場景是用來裝載層,精靈的容器。可以向場景中新增層和精靈。層和精靈之間可以互相新增。層,精靈,以及場景都是繼承自節點cnode的類,因此在以遊戲為根節點的樹上他們都是子節點。如果乙個精靈新增到了乙個層,而該層新增進入了場景,那麼移動這個層的時候就會使得層中的場景一起運動。但是如果層中的...

Cocos2d x之場景切換

在很多rpg遊戲中大部分存在多個場景,如開始的歡迎介面 選單介面 戰鬥介面 場景切換只需要呼叫ccdirector shareddirector replacescene s s為新的場景,這句 的是含意,是用新的場景s去替換掉舊的場景,但是這樣的場景替換,來得太突然,給使用者的感覺不太好,我們需要...