15、Cocos2dx 3.0游戏开发找小三之Sprite:每一个精灵都是上辈子折翼的天使
生活随笔
收集整理的這篇文章主要介紹了
15、Cocos2dx 3.0游戏开发找小三之Sprite:每一个精灵都是上辈子折翼的天使
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
重開發人員的勞動成果,轉載的時候請務必注明出處: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 會自己主動把圖片作為紋理加載到游戲中,然后使用紋理初始化精靈。
以下的代碼使用兩個參數的 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:獲取或設置精靈所用的紋理。
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 通道的圖片顯示錯誤時,能夠嘗試改動這個屬性。
郝萌主友情提示: 守護精靈,守護屬于你的天使、、、
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 通道的圖片顯示錯誤時,能夠嘗試改動這個屬性。
郝萌主友情提示: 守護精靈,守護屬于你的天使、、、
轉載于:https://www.cnblogs.com/mengfanrong/p/5261728.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的15、Cocos2dx 3.0游戏开发找小三之Sprite:每一个精灵都是上辈子折翼的天使的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016/3/10 PHP (超
- 下一篇: 客户端网页编程,第二章思维导图