新手學(xué)lua筆記

轉(zhuǎn)自--http://www.cocos.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/basic-concepts/zh.md

導(dǎo)演、場景限寞、層、精靈
在Cocos2d-x-3.x引擎中履植,采用節(jié)點樹形結(jié)構(gòu)來管理游戲?qū)ο笄幕危粋€游戲可以劃分為不同的場景玫霎,一個場景又可以分為不同的層妈橄,一個層又可以擁有任意個可見的游戲節(jié)點(即對象,游戲中基本上所有的類都派生于節(jié)點類Node)眷蚓。可以執(zhí)行Action來修改游戲節(jié)點的屬性叉钥,使其移動、旋轉(zhuǎn)投队、放大爵川、縮小等等敷鸦。
每一個時刻都有一個場景在獨立運行寝贡,通過切換不同的場景來完成一個游戲流程,游戲流程的管理由Director來執(zhí)行圃泡,其基本框架類圖如下:

frame.png

導(dǎo)演(Director)
一款游戲好比一部電影,只是游戲具有更強(qiáng)的交互性蟆淀,不過它們的基本原理是一致的拯啦。所以在Cocos2dx中把統(tǒng)籌游戲大局的類抽象為導(dǎo)演(Director)熔任,Director是整個cocos2dx引擎的核心,是整個游戲的導(dǎo)航儀疑苔,游戲中的一些常用操作就是由Director來控制的,比如OpenGL ES的初始化惦费,場景的轉(zhuǎn)換,游戲暫停繼續(xù)的控制恍箭,世界坐標(biāo)和GL坐標(biāo)之間的切換,對節(jié)點(游戲元素)的控制等扯夭,還有一些游戲數(shù)據(jù)的保存調(diào)用鞍匾,屏幕尺寸的獲取等都要由Director類來管理控制的交洗。
因為Director是游戲項目的總導(dǎo)演橡淑,會經(jīng)常調(diào)用進(jìn)行一些控制,所以該Director利用了單件設(shè)計模式梁棠,也就是項目里取到的director都是同一個。用getInstance() 方法取得Director的實例,具體的API可以參考相關(guān)文檔蜜笤,就不做贅述了。
場景(Scene)
Scene場景也是cocos2dx中必不可少的元素把兔,游戲中通常我們需要構(gòu)建不同的場景(至少一個),游戲里關(guān)卡县好、版塊的切換也就是一個一個場景的切換围橡,就像在電影中變換舞臺和場地一樣。場景的一個重要的作用就是流程控制的作用缕贡,我們可以通過Director的一系列方法控制游戲中不同的場景的自由切換翁授。
下面是Director控制場景的常用方法:
-runWithScene( Scene *scene ) 啟動游戲拣播,并運行scene場景。本方法在主程序第一次啟動主場景的時候調(diào)用收擦。如果已有正在運行的場景則不能調(diào)用該方法贮配;會調(diào)用pushScene-->startAnimation。
-pushScene( Scene *scene ) 將當(dāng)前運行中的場景暫停并壓入到代碼執(zhí)行場景棧中塞赂,再將傳入的scene設(shè)置為當(dāng)前運行場景泪勒,只有存在正在運行的場景時才調(diào)用該方法;
-replaceScene( Scene *scene ) 直接使用傳入的scene替換當(dāng)前場景來切換畫面宴猾,當(dāng)前場景被釋放圆存。這是切換場景時最常用的方法。
-popScene() 釋放當(dāng)前場景仇哆,再從代碼執(zhí)行場景中彈出棧頂?shù)膱鼍奥僬蓿⑵湓O(shè)置為當(dāng)前運行場景。如果棧為空税产,直接結(jié)束應(yīng)用怕轿。和PushScene結(jié)對使用
-end() 釋放和終止執(zhí)行場景辟拷,同時退出應(yīng)用
-pause() 暫停當(dāng)前運行場景中的所有計時器和動作撞羽,場景仍然會顯示在屏幕上
-resume () 恢復(fù)當(dāng)前運行場景的所有計時器和動作,場景仍然會顯示在屏幕上

同時場景是層的容器衫冻,包含了所有需要顯示的游戲元素诀紊。通常,當(dāng)我們需要完成一個場景時候隅俘,會創(chuàng)建一個Scene的子類邻奠,并在子類中實現(xiàn)我們需要的功能。比如为居,我們可以在子類的初始化中載入游戲資源碌宴,為場景添加層,啟動音樂播放等等蒙畴。
Layer是處理玩家事件響應(yīng)的Node子類贰镣。與場景不同,層通常包含的是直接在屏幕上呈現(xiàn)的內(nèi)容膳凝,并且可以接受用戶的輸入事件碑隆,包括觸摸,加速度計和鍵盤輸入等蹬音。我們需要在層中加入精靈上煤,文本標(biāo)簽或者其他游戲元素,并設(shè)置游戲元素的屬性著淆,比如位置劫狠,方向和大兴┌獭;設(shè)置游戲元素的動作等嘉熊。通常遥赚,層中的對象功能類似,耦合較緊阐肤,與層中游戲內(nèi)容相關(guān)的邏輯代碼也編寫在層中凫佛,在組織好層后,只需要把層按照順序添加到場景中就可以顯示出來了孕惜。要向場景添加層愧薛,我們可以使用addChild方法。
addChild( Node *child ) addChild( Node *child, int zOrder ) addChild( Node *child, int zOrder, int tag )
其中衫画,Child參數(shù)就是節(jié)點毫炉。對于場景而言,通常我們添加的節(jié)點就是層削罩。先添加的層會被置于后添加的層之下瞄勾。如果需要為它們指定先后次序,可以使用不同的zOrder值弥激。tag是元素的標(biāo)識號碼进陡,如果為子節(jié)點設(shè)置了tag值,就可以在它的父節(jié)點中利用tag值就可以找到它了微服。層可以包含任何Node作為子節(jié)點趾疚,包括Sprites(精靈), Labels(標(biāo)簽),甚至其他的Layer對象以蕴。


layer.png

上圖所示的圖片中糙麦,叫做HelloWorldScene的場景中有三個不同層,在layer3層上又有上個不同的精靈丛肮。

下面是一個創(chuàng)建三個不同層的例子:


example.jpg

上圖所示的圖片中赡磅,叫做HelloWorldScene的場景中有三個不同層,在layer3層上又有上個不同的精靈宝与。
下面是一個創(chuàng)建三個不同層的例子:
auto layer = LayerColor::create(Color4B(0, 128, 128, 255));
layer->setContentSize(CCSizeMake(120, 80));
layer->setPosition(Point(50, 50));
addChild(layer, 10);
auto layer1 = LayerColor::create(Color4B(128, 0, 128, 255));
layer1->setContentSize(CCSizeMake(120, 80));
layer1->setPosition(Point(100, 80));
addChild(layer1, 20);
auto layer2 = LayerColor::create(Color4B(128, 128, 0, 255));
layer2->setContentSize(CCSizeMake(120, 80));
layer2->setPosition(Point(150, 110));
addChild(layer2, 30);

精靈
Cocos2d中的精靈和其他游戲引擎中的精靈相似焚廊,它可以移動,旋轉(zhuǎn)伴鳖,縮放节值,執(zhí)行動畫徙硅,并接受其他轉(zhuǎn)換榜聂。Cocos2dx的Sprite由Texure,frame和animation組成嗓蘑,由openes負(fù)責(zé)渲染须肆。主要的類關(guān)系如下: 簡單過程可描述為:使用Texture2D加載圖片匿乃,可以用Texture2D生成對應(yīng)的SpriteFrame(精靈幀),將SpriteFrame添加到Animation生成動畫數(shù)據(jù)豌汇,用Animation生成Animate(就是最終的動畫動作)幢炸,最后用Sprite執(zhí)行這個動作。
創(chuàng)建精靈的幾種方式:
直接創(chuàng)建:

auto sprite = Sprite::create("HelloWorld.png");      
this->addChild(sprite,0);

使用紋理來創(chuàng)建精靈

auto sprite1 = Sprite::createWithTexture(TextureCache::getInstance()->addImage("HelloWorld.png"));
this->addChild(sprite1, 0);

使用精靈幀來創(chuàng)建精靈

auto sprite2=Sprite::createWithSpriteFrameName("HelloWorld.png");  
this->addChild(sprite2, 0);

在Cocos2dx中實現(xiàn)精靈顯示的基本過程如下:
//創(chuàng)建Scene
auto scene = Scene::create();
//創(chuàng)建層
auto layer = HelloWorld::create();
//把層加入場景中
scene->addChild(layer);
//創(chuàng)建一個精靈
auto sprite = Sprite::create("HelloWorld.png");
//把精靈加到層里
layer->addChild(sprite, 0);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拒贱,一起剝皮案震驚了整個濱河市宛徊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逻澳,老刑警劉巖闸天,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異斜做,居然都是意外死亡苞氮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門瓤逼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笼吟,“玉大人,你說我怎么就攤上這事霸旗∩蜕” “怎么了玩讳?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我线召,道長,這世上最難降的妖魔是什么餐禁? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任诵肛,我火速辦了婚禮,結(jié)果婚禮上箱蟆,老公的妹妹穿的比我還像新娘沟绪。我一直安慰自己,他們只是感情好空猜,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布绽慈。 她就那樣靜靜地躺著,像睡著了一般辈毯。 火紅的嫁衣襯著肌膚如雪坝疼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天谆沃,我揣著相機(jī)與錄音钝凶,去河邊找鬼。 笑死唁影,一個胖子當(dāng)著我的面吹牛耕陷,可吹牛的內(nèi)容都是我干的掂名。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼哟沫,長吁一口氣:“原來是場噩夢啊……” “哼饺蔑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嗜诀,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猾警,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后隆敢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肿嘲,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年筑公,在試婚紗的時候發(fā)現(xiàn)自己被綠了雳窟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡匣屡,死狀恐怖封救,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捣作,我是刑警寧澤誉结,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站券躁,受9級特大地震影響惩坑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜也拜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一以舒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧慢哈,春花似錦蔓钟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至键俱,卻和暖如春兰绣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背编振。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工缀辩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓雌澄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杯瞻。 傳聞我的和親對象是個殘疾皇子镐牺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

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

  • 前言 我選擇開發(fā)一個游戲有很多原因。我覺得自己是“核心”玩家魁莉,過去的大部分時間我都花在玩游戲睬涧,自己制作、閱讀和游戲...
    月影檀香閱讀 11,888評論 1 27
  • 1. Scene 場景 創(chuàng)建一個Scene 2.節(jié)點 Node 節(jié)點即構(gòu)成cocos2d世界的基本單位節(jié)點封裝了基...
    寫java的逗比叫z1閱讀 1,025評論 0 2
  • 打飛機(jī)這個游戲并不是我原創(chuàng)旗唁,只是拿來學(xué)習(xí)使用畦浓。望原作者見諒。剛剛開始是強(qiáng)烈建議簡書可以上傳源代碼的检疫,但是后來一想讶请,...
    holly_wang_王小飛閱讀 1,745評論 0 11
  • 他 ..有女朋友了,終于還是有了∈合保現(xiàn)在距離分手也有兩年三個月十七天夺溢,我一直的故作瀟灑,倔強(qiáng)的逼自己不能流眼淚 烛谊,一...
    風(fēng)吹不動的葉子閱讀 126評論 0 0
  • 1风响、今日學(xué)習(xí):背誦單詞70,畫思維導(dǎo)圖1副丹禀; 2状勤、練習(xí)及總結(jié): 1)八個思維導(dǎo)圖用來指導(dǎo)孩子的日常學(xué)習(xí):分別是圓圈...
    譚麗閱讀 324評論 0 0