91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 15、Cocos2dx 3.0游戲開發找小三之Sprite:每個精靈都是上輩子折翼的天使

15、Cocos2dx 3.0游戲開發找小三之Sprite:每個精靈都是上輩子折翼的天使

發布時間:2020-08-08 16:51:47 來源:網絡 閱讀:440 作者:danielzzu 欄目:開發技術
重開發者的勞動成果,轉載的時候請務必注明出處:http://blog.csdn.net/haomengzhu/article/details/30475395

Sprite 
Sprite 可以說是游戲中最重要的組成元素;
它描述了游戲中的精靈,是 Node 的一個最重要也最靈活的子類。
Sprite 很重要,它代表了游戲中一個最小的可見單位,
同時Sprite 也很靈活,它裝載了一個平面紋理,具有豐富的表現力,而且 可以通過多種方式加載。
如果說 Scene 和 Layer 代表了宏觀的游戲元素管理,那么 Sprite 則為微觀世界提供了豐富靈活的細節表現。

紋理
紋理就是一張圖片,這張圖片被精靈顯示出來。紋理是3D游戲中繪制到物體表面上的圖案;
Cocos2d-x使用了 3D 繪圖庫 OpenGL;
這樣一來,我們既可以利用圖形加速器提高繪圖效率,也可以在游戲中加入 3D 變換特效,實現更絢麗的效果。
為了在 3D 環境中繪制平面圖形,Cocos2d-x 只需在 3D 空間中垂直于視線的平面上繪制矩形,在矩形的表面使用紋理貼圖即可。

創建小天使
游戲開發應用中,精靈是由一個紋理創建的;如果不對精靈做任何設置,精靈就是顯示在屏幕上的一張圖片。
通常精靈被置于層中,因此我們首選在層的初始化方法中創建精靈,設置屬性,并添加到層中。
最常用的創建精靈的方式 是:使用一個圖片文件通過使用 Sprite 的工廠方法 create 來創建精靈;
auto bg= Sprite::create("bg.png");
這個工廠方法包含一個std::string字符串參數,表示精靈所用紋理的文件名。

Sprite 會自動把圖片作為紋理載入到游戲中,然后使用紋理初始化精靈。 
精靈不但可以顯示一個完整的紋理,也可以僅顯示紋理的一部分。
通過Sprite* Sprite::create(const std::string& filename, const Rect& rect)就可以達到目的;

下面的代碼使用兩個參數的 create 工廠方法創建了一個精靈:
這個精靈使用"bg.png"作為紋理,但是僅顯示紋理左上角 100×100 像素大小的部分:
auto bg2= CCSprite::create("bg.png", Rect(0, 0, 100, 100));
第一個參數是所使用紋理的文件名,第二個參數是一個Rect 類型的結構體,表示紋理中顯示出來的矩形部分。
Rect(x,y,width,height)用來方便地創建一個矩形。
需要注意的是,紋理的坐標系中原點(0,0)位于左上角,原點向右是 x 軸的正方向,原點向下是 y 軸的正方向。
坐標系統以后再詳細描述;

給小天使穿衣服
創建了精靈后,我們還需要把精靈安排在合適的位置,否則引擎也不能決定精靈將如何呈現出來。
諸如精靈的位置、方向、縮放比例等參數都是精靈的屬性,我們在層中添加精靈之前,需要對它們進行恰當地設置。
下面的代碼首先獲取屏幕大小,然后根據屏幕大小把精靈置于屏幕中央:
Size size = Director::getInstance()->getWinSize(); Point pos = Point(size.width / 2, size.height / 2); bg->setPosition(pos); 
我們可以看到,在這段代碼中我們修改了精靈的 Position 屬性。
Position 屬性是一個 Point 類型的結構體,表示精靈在 層中的位置,它是精靈相對于層的坐標。
把精靈的位 置坐標設置為屏幕長寬的一半,就可以使精靈位于屏幕中央了。 

精靈具有十分豐富的屬性,我們可以利用這些屬性讓精靈靈活地呈現出來。
但實際上,這些屬性不僅僅是精靈才擁有的,同時也屬于Node。
Sprite 繼承自 CCNode,因而也繼承了它的全部屬性。

天使來到了人間
社置完精靈的屬性后,就該把精靈添加到層中了。
實際上 Sprite 與 Layer 都繼承自 CCNode,向一個游戲元素中添加其他游戲元素的 addChild 是 Node 包含的方法,因此我們完全可以如同向場景中添加層一樣,把精靈添加到層中;
this->addChild(bg);

其他常用成員
Sprite 還擁有以下常用的成員:
1、初始化方法
CCSprite 擁有許多種不同的初始化方法,可以方便地創建精靈。
使用這些方法,我們不僅可以通過圖片文件來創建精靈,還可以直接使用紋理或精靈框幀來創建精靈。
a、使用圖片文件
static Sprite* create(const std::string& filename); static Sprite* create(const std::string& filename, const Rect& rect);
其中 filename為圖片的文件名,直接傳入圖片文件相對于"Resource"文件夾的路徑即可;
rect 為可選參數,用于指定精靈顯示紋理的部分,它使用前面介紹的紋理坐標系。
b、使用 Texture2D
static Sprite* createWithTexture(Texture2D *texture); static Sprite* createWithTexture(Texture2D *texture, const Rect& rect, bool rotated=false);
Texture2D 類型的 texture參數為紋理對象,可以使用 TextureCache 類的 addImage 方法把圖片文件裝載為紋理并返回,而 rect 與使用圖片文件創建精靈的 rect 參數相同。
c、使用 SpriteFrame 創建
static Sprite* createWithSpriteFrame(SpriteFrame *spriteFrame); static Sprite* createWithSpriteFrameName(const std::string& spriteFrameName);
SpriteFrame 類型的 spriteFrame參數為紋理框幀。SpriteFrame 保存了一個 Texture2D 的引用與一個 Rect 來表
示紋理中的一部分。使用 SpriteFrame 初始化精靈時,也可使精靈顯示部分紋理。

2、紋理相關的屬性
Sprite 提供了以下與紋理相關的屬性,用于獲取或設置精靈內容。
Texture2D* _texture:獲取或設置精靈所用的紋理。使用此方法設置紋理后,精靈將會顯示一個完整的紋理。
Rect _rect:獲取或設置紋理顯示部分。此 Rect 采用紋理坐標,即左上角為原點。
SpriteBatchNode* _batchNode:獲取或設置精靈所屬的批節點。

3、紋理相關的方法
Sprite 提供了以下與紋理相關的方法。
virtual void setSpriteFrame(SpriteFrame* newFrame):設置顯示中的紋理框幀,
其中 newFrame為新的紋理框幀,其代表的紋理或紋理的顯示部分都可以與舊的框幀不同。 
virtual SpriteFrame* getSpriteFrame() const:獲取正在顯示的紋理框幀。
virtual bool isFrameDisplayed(SpriteFrame *pFrame) const:返回一個值,表示pFrame是否是正在顯示中的紋理框幀。

4、顏色相關的屬性
Sprite 提供了以下與顏色相關的屬性:
Color3B color:獲取或設置疊加在精靈上的顏色。Color3B 由三個顏色分量(紅色、綠色和藍色分量)組成。默認為純白色,表示不改變精靈的顏色,如果設置為其他值,則會改變精靈的顏色。
GLubyte Opacity:獲取或設置精靈的不透明度。GLubyte 為 OpenGL 的內置類型,表示一個無符號 8 位整數,取值范圍從最小值 0 到最大值 255。
bool isOpacityModifyRGB:獲取或設置精靈所使用的紋理數據是否已經預乘 Alpha 通道。當包含 Alpha 通道的圖片顯示錯誤時,可以嘗試修改這個屬性。

郝萌主友情提示:
守護精靈,守護屬于你的天使、、、

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红安县| 独山县| 全州县| 丹江口市| 林芝县| 剑河县| 普陀区| 五莲县| 衡东县| 天等县| 保山市| 海林市| 聂拉木县| 时尚| 台州市| 来凤县| 峡江县| 平塘县| 阿巴嘎旗| 商都县| 达拉特旗| 和静县| 武陟县| 鄂托克前旗| 铅山县| 城市| 双城市| 黔西县| 托克托县| 凤台县| 汕尾市| 渭南市| 客服| 手游| 武强县| 佛坪县| 岚皋县| 达日县| 鄂伦春自治旗| 临清市| 大理市|