cocos2d第三篇--場(chǎng)景與層

場(chǎng)景與層的關(guān)系

編程的時(shí)候往往不需要子類化場(chǎng)景牲证,而是子類化層闽撤。雖然場(chǎng)景與層之間是1:n組成的關(guān)系添吗,但是通過模板生成的工程默認(rèn)情況下都是1:1的關(guān)系届惋。由模板生成的HelloWorldScene.h和HelloWorldScene.cpp文件中聲明和定義了層HelloWorld類入桂。場(chǎng)景與層的靜態(tài)結(jié)構(gòu)關(guān)系如xia:scene(1)——layer(1...n)奄薇。從這里我們可以看到HelloWorld是子類化Layer,其中createScene()是靜態(tài)函數(shù)事格,create()也是驚天函數(shù)惕艳,init()是實(shí)例函數(shù)用來初始化層,Scene類是Cocos2d-x提供的場(chǎng)景類驹愚,其中的create()是靜態(tài)函數(shù)用來創(chuàng)建場(chǎng)景远搪,addChild()是實(shí)例函數(shù)用來將剛剛創(chuàng)建的層添加到場(chǎng)景中。

場(chǎng)景切換相關(guān)函數(shù)

場(chǎng)景切換是通過導(dǎo)演類Director實(shí)現(xiàn)的逢捺,其中的相關(guān)函數(shù)如下:

  • 1)void runWithScene(Scene *scene).該函數(shù)可以運(yùn)行場(chǎng)景谁鳍,只能在啟動(dòng)第一個(gè)場(chǎng)景時(shí)調(diào)用該函數(shù)。如果已經(jīng)有一個(gè)場(chǎng)景運(yùn)行劫瞳,則不能調(diào)用該函數(shù)
  • 2)void replaceScene(Scene *scene).切換到下一個(gè)場(chǎng)景倘潜。用一個(gè)新的場(chǎng)景替換當(dāng)前場(chǎng)景,當(dāng)前被終端釋放掉
  • 3)void pushScene(Scene *scene).切換到下一個(gè)場(chǎng)景中志于,將當(dāng)前場(chǎng)景掛起放入到場(chǎng)景堆棧中涮因,然后切換到下一個(gè)場(chǎng)景中。
    *4)void popScene().與pushScene配合使用伺绽,可以回到上一個(gè)場(chǎng)景养泡。
  • 5)void popToRootScene().與pushScene配合使用,可以回到根場(chǎng)景奈应。
    需要注意replaceScene和pushScene使用的區(qū)別澜掩,replaceScene會(huì)釋放和銷毀場(chǎng)景,如果要保持原來場(chǎng)景的狀態(tài)杖挣,replaceScene函數(shù)不適合肩榕,pushScene并不會(huì)釋放和銷毀場(chǎng)景,原來的場(chǎng)景的狀態(tài)可以保持惩妇,但是游戲中也不能同時(shí)又太多的場(chǎng)景對(duì)象運(yùn)行株汉。

場(chǎng)景過渡動(dòng)畫

場(chǎng)景切換時(shí)是可以添加過渡動(dòng)畫的筐乳,場(chǎng)景過渡動(dòng)畫是由TransitionScene類和它的子類展示的。TransitionScene類的直接子類有13個(gè)郎逃,而且有些子類還有子類哥童,全部的過渡動(dòng)畫類有30多個(gè)。但是其使用方式都是一樣的類似如下代碼:

    auto scene = MyFirsh::createScene();
    auto rescene = TransitionFlipX::create(1.0f, scene);
    Director::getInstance()-> pushScene(rescene);

意思就是基本所有的過渡動(dòng)畫都是這樣子寫的褒翰,我們要做的就是把代碼中的TransitionFlipX替換成自己想要的效果就OK了贮懈;

場(chǎng)景的生命周期

  • 1)bool init()。初始化層調(diào)用优训。
  • 2)void onEnter()朵你。進(jìn)入層時(shí)調(diào)用
  • 3)void onEnterTransitionDidFinish()。進(jìn)入層而且過渡動(dòng)畫結(jié)束時(shí)調(diào)用揣非。
  • 4)void onExit()抡医。退出層時(shí)調(diào)用。
  • 5)void onExitTransitionDidStart()早敬。退出層而且開始過渡動(dòng)畫時(shí)調(diào)用忌傻。
    1. void cleanup()。層對(duì)象被清除時(shí)調(diào)用搞监。
      提示:層繼承于節(jié)點(diǎn)水孩,這些生命周期函數(shù)根本上是從Node繼承而來。事實(shí)上所有Node對(duì)象都有這些函數(shù)琐驴,只要是子類化這些類都可以重寫這些函數(shù)俘种,來處理這些對(duì)象的不同生命周期階段事件。

重寫HelloWorld層中的幾個(gè)生命周期函數(shù)绝淡,代碼如下:

bool HelloWorld::init()
{
      if(!Layer::init())
      {
            return false;
      }
      log("HelloWorld init");
      ...
      return true;
}

void HelloWorld::onEnter()
{
    Layer::onEnter();
    log("HelloWorld onEnter");
}

注意:在重寫生命周期函數(shù)中宙刘,第一行代碼應(yīng)該是調(diào)用父類的函數(shù)。列如牢酵,HelloWorld::onEnter()中第一行應(yīng)該是Layer::onEnter()函數(shù)悬包,如果不調(diào)用父類的函數(shù)則可能會(huì)導(dǎo)致層中的動(dòng)畫,動(dòng)作或者計(jì)劃無法執(zhí)行馍乙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末布近,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子潘拨,更是在濱河造成了極大的恐慌,老刑警劉巖饶号,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铁追,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡茫船,警方通過查閱死者的電腦和手機(jī)琅束,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門扭屁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涩禀,你說我怎么就攤上這事料滥。” “怎么了艾船?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵葵腹,是天一觀的道長。 經(jīng)常有香客問我屿岂,道長践宴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任爷怀,我火速辦了婚禮阻肩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘运授。我一直安慰自己烤惊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布吁朦。 她就那樣靜靜地躺著柒室,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喇完。 梳的紋絲不亂的頭發(fā)上伦泥,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音锦溪,去河邊找鬼不脯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刻诊,可吹牛的內(nèi)容都是我干的防楷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼则涯,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼复局!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粟判,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤亿昏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后档礁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體角钩,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了递礼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惨险。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖脊髓,靈堂內(nèi)的尸體忽然破棺而出辫愉,到底是詐尸還是另有隱情,我是刑警寧澤将硝,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布恭朗,位于F島的核電站,受9級(jí)特大地震影響袋哼,放射性物質(zhì)發(fā)生泄漏冀墨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一涛贯、第九天 我趴在偏房一處隱蔽的房頂上張望诽嘉。 院中可真熱鬧,春花似錦弟翘、人聲如沸虫腋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悦冀。三九已至,卻和暖如春睛琳,著一層夾襖步出監(jiān)牢的瞬間盒蟆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工师骗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留历等,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓辟癌,卻偏偏與公主長得像寒屯,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子黍少,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法寡夹,類相關(guān)的語法,內(nèi)部類的語法厂置,繼承相關(guān)的語法菩掏,異常的語法,線程的語...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,127評(píng)論 25 707
  • (一)Java部分 1昵济、列舉出JAVA中6個(gè)比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,104評(píng)論 0 62
  • 對(duì)于熟悉的事物智绸,我們往往缺少欣賞的心情或颊。最壞的情緒留給最親的人,最熟視無睹的漠然留給最近的風(fēng)景传于。 匆匆行走于事之間...
    夏日樹蔭閱讀 353評(píng)論 0 0
  • 小慧第一次見古天還有這樣一副吊兒郎當(dāng)?shù)哪樱庀虢o他一記悶棍醉顽,不過古天的話讓她心里覺得美美的-----這簡(jiǎn)直就是她...
    萬樹心語閱讀 91評(píng)論 0 0