日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建

發(fā)布時(shí)間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

cocos2dx的框架可以說主要由導(dǎo)演,場(chǎng)景,層,精靈來(lái)構(gòu)成:

1、其中導(dǎo)演,意如其名,就是操控整個(gè)游戲的一個(gè)單例,管理著整個(gè)游戲。

2、場(chǎng)景就像電影的一幕劇情,所以說,懂得如何劃分好游戲的場(chǎng)景,是開始動(dòng)手做游戲的第一步。

3、一個(gè)場(chǎng)景會(huì)有很多層,用來(lái)處理場(chǎng)景不同的功能。

4、而精靈則是最小的單位,比如子彈,飛機(jī),敵機(jī)都是一個(gè)個(gè)的精靈所組成的。

?

二、WelcomeScene的搭建:

1、場(chǎng)景和層的二種搭建方法:

(1)一種就是跟HelloWorld示例一樣的方法,以一個(gè)層為主體,然后這個(gè)層建立成一個(gè)場(chǎng)景,這種方式適合用再一個(gè)場(chǎng)景下只有一個(gè)層的時(shí)候,可以縮短代碼的長(zhǎng)度。

(2)另一種就是先建立一個(gè)場(chǎng)景,然后再建立層。這是我比較推薦的做法,因?yàn)楸救耸莻€(gè)小白,認(rèn)為這種方法比較如何我們正常人的思維= =。然后先貼WelcomeScene.h的代碼:

#include "cocos2d.h"USING_NS_CC; //用引擎要的頭文件和名字空間class WelcomeScene :public Scene { public:CREATE_FUNC(WelcomeScene); //一個(gè)宏定義virtual bool init(); //繼承的init方法 };

1、CREATE_FUNC():其實(shí)它就是一個(gè)宏定義,可以追蹤下去看他的代碼:

#define CREATE_FUNC(__TYPE__)\ static __TYPE__* create() \{ \__TYPE__ *pRet = new __TYPE__(); \if (pRet && pRet->init()) \{ \pRet->autorelease(); \return pRet; \} \else \{ \delete pRet; \pRet = NULL; \return NULL; \} }

其實(shí)就是一個(gè)創(chuàng)建的方法,首先new一個(gè)新的對(duì)象,然后檢驗(yàn)是否申請(qǐng)到內(nèi)存,沒有的話直接跳過,有的話,執(zhí)行init()的方法。于是呢init()方法便成為一個(gè)場(chǎng)景的主干,就相當(dāng)于C++語(yǔ)言的main函數(shù)的感覺吧。

2、然后就是init的方法做了什么,我們看看WelcomeScene.cpp:

#include "WelcomeScene.h" #include "WelcomeLayer.h"USING_NS_CC;bool WelcomeScene::init() {if (!Scene::init()){return false;}auto layer = WelcomeLayer::create();if (layer){this->addChild(layer);}return true; }

其實(shí)就是創(chuàng)建一個(gè)WelcomeLayer然后通過addChild的方法加到這個(gè)場(chǎng)景當(dāng)中。

三、WelcomeLayer的搭建

如果說Scene是個(gè)大的一幕劇情,那么layer就代表了這一幕劇情中每一個(gè)角色。

這個(gè)WelcomeLayer主要是實(shí)現(xiàn)一個(gè)資源的加載,由于不能太過無(wú)聊所以還得加一個(gè)小小的緩沖幀動(dòng)畫。然后:

1、我們先看如何進(jìn)行資源的加載和背景的加入。

//主要通過cocos已經(jīng)實(shí)現(xiàn)的單例將所需要的圖片的plist文件加入SpriteFrameCache::getInstance()->addSpriteFramesWithFile("shoot.plist");SpriteFrameCache::getInstance()->addSpriteFramesWithFile("shoot_background.plist");//創(chuàng)建背景auto background = Sprite::createWithSpriteFrameName("background.png");background->setAnchorPoint(Vec2::ZERO);background->setPosition(Vec2::ZERO);this->addChild(background);//創(chuàng)建copyRightauto copyRight = Sprite::createWithSpriteFrameName("shoot_copyright.png");copyRight->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height / 3*2));this->addChild(copyRight);

(1)大家可以想一下,其實(shí)一個(gè)游戲的本質(zhì)就是在不停的繪圖,那你想想,如果每次再畫一個(gè)圖的時(shí)候再把圖片加入到內(nèi)存中,是不是會(huì)一卡一卡的 = = 所以呢,我們通過cocos2d封裝的方法一次性先加入進(jìn)去。

(2)然后大家可能不大清楚什么是plist文件,首先我們加載圖片資源的時(shí)候,其實(shí)是把所有的圖片打包成一個(gè)圖片加入進(jìn)去的,但我們要記錄那個(gè)圖片在新生成的圖片的哪一個(gè)位置,所以便需要引入一個(gè)plist文件,它就是一張表格,記錄了每個(gè)圖片在新生成圖片中的位置。上圖。如下~

???? ……?????????????????????????????????????????????

????????????????? 小的圖片???????????????????????????????????????????????????????????????????????????????????????? 打包后新生成的圖片。

(3)然后就是創(chuàng)建一個(gè)背景的精靈,設(shè)置錨點(diǎn)和位置,最后加入到這個(gè)層中。然后主要是這個(gè)錨點(diǎn)的定義,錨點(diǎn)其實(shí)就相當(dāng)于在一個(gè)圖片上打上一個(gè)圖釘,以這一個(gè)圖釘?shù)奈恢脕?lái)代表整個(gè)圖片的位置,然后通過setPosition來(lái)設(shè)置圖片的位置。

(4)copyRight和背景的創(chuàng)建類似。

(5)Vec2就是Point,代表一個(gè)點(diǎn)的數(shù)據(jù)類型。

2、幀動(dòng)畫的創(chuàng)建:

auto gameLoading = Sprite::createWithSpriteFrameName("game_loading1.png");gameLoading->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 7*3));this->addChild(gameLoading);auto animation = Animation::create();animation->setDelayPerUnit(0.5f);animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("game_loading1.png"));animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("game_loading2.png"));animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("game_loading3.png"));animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("game_loading4.png"));auto animate = Animate::create(animation);gameLoading->runAction(animate);return true;

幀動(dòng)畫就是通過記賬圖片在很短的時(shí)間內(nèi)進(jìn)行形成的動(dòng)畫,所以可以看到,我們先設(shè)置動(dòng)畫的第一幀為一個(gè)精靈,然后創(chuàng)建一個(gè)幀動(dòng)畫,通過addSpriteFrame的方法加入圖片,然后通過setDelayPerUnit的方法設(shè)置切換圖片的時(shí)間,然后讓精靈做這個(gè)動(dòng)畫,然后的然后就看效果吧,這一節(jié)學(xué)習(xí)筆記就結(jié)束了= =,我怎么覺得寫完會(huì)累死的節(jié)奏。

?

??????????????????????????????????????????????????

總結(jié)

以上是生活随笔為你收集整理的cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆午夜 | 欧美一区二区福利 | 亚洲天堂网络 | 春物催眠| 日本91在线| av综合导航 | 五月婷婷在线视频 | 亚洲性夜 | 欧美成人性生活 | 视频国产一区 | 日韩视频在线免费观看 | 午夜美女视频 | 日韩少妇视频 | 欧美日韩国产一区二区三区 | 亚天堂 | 欧美专区日韩专区 | 天天射网站 | 国产精品伦一区 | 激情欧美日韩 | 久久久欧洲 | 成人久久久久久 | 精品人伦一区二区三区蜜桃免费 | 天天干天天操天天 | 精品不卡一区二区三区 | 超碰在线免费观看97 | 羞辱狗奴的句子有哪些 | 精品人妻一区二区三区四区五区 | 国产精品亚洲lv粉色 | av大全在线 | 91福利视频免费观看 | 亚州欧美 | 欧美激情二区三区 | 久久精品婷婷 | 久久久精品人妻av一区二区三区 | n0659极腔濑亚美莉在线播放播放 | 俺也去av| 男人天堂2024 | 成人特级毛片69免费观看 | 亚洲中文字幕97久久精品少妇 | 成人a√| 欧美特黄一级大片 | 黄色片子视频 | 爱如潮水3免费观看日本高清 | 大尺度激情吻胸视频 | 色婷婷久 | 香蕉久久国产av一区二区 | 成人免费看视频 | 一区二区三区高清在线观看 | jlzzjlzz亚洲女人18 | 99久久久国产精品无码网爆 | 强行挺进白丝老师翘臀网站 | 国产精品怡红院 | 激情综合图| 国产一区二区免费在线 | 貂蝉被到爽流白浆在线观看 | 国产人妖在线观看 | 国产视频第三页 | 亚洲免费大全 | 亚洲国产一二 | 新疆毛片| 亚洲第一国产 | 国产另类精品 | 熟女少妇一区二区 | 日韩大尺度在线观看 | 成人免费一区二区三区在线观看 | 国产簧片 | 东北少妇不带套对白 | 日本三级中文字幕在线观看 | 手机在线一区二区 | 丨国产丨调教丨91丨 | 亚洲图片另类小说 | 中文字幕无码人妻少妇免费 | 色欧美综合 | 性生活在线视频 | 在线观看视频国产 | 男女视频在线观看免费 | 久草热在线| 泰坦尼克号3小时49分的观看方法 | 日本黄色www | 久久久久久av无码免费网站 | 51人人看| 小泽玛利亚一区二区三区在线观看 | 国产精品久久久久毛片 | 我要看一级黄色片 | 国产在线精品一区 | 黄色一级一片免费播放 | 免费福利在线 | 人人99| 午夜久久电影 | 成人小视频免费在线观看 | 欧洲亚洲一区二区 | 亚洲高清在线免费观看 | 日韩第四页| 精品中文在线 | 亚洲字幕av| 小泽玛丽亚在线观看 | 在线观看日本 | 色爽交| 亚洲青色在线 |