cocos2d x中精靈的使用

2021-06-18 19:02:05 字數 2353 閱讀 4338

精靈是2d遊戲中得主角,這次就總結一下cocos2d-x中精靈的使用。

一,載入

首先,建立乙個變數 ccsprite *psprite;

載入函式分為兩組initwith***x和spritewith***x,其主要的區別是使用initwith***x的手工作業,而spritewith***x是純自動化作業。在spritewith***x中,先分配記憶體,然後載入,最後加入到autorelease中。而前者只有載入的部分,分配記憶體以及釋放都需要靠自己。下邊全部以spritewith***x函式說明。

1,從檔案中直接載入

從檔案中載入很簡單,只需要 ccsprite::spritewithfile("檔案完整名稱"); 其中檔名必須是完整路徑,用cocos2d-x生成的專案中resources目錄為根目錄。若有乙個檔案目錄為..\resources\chars\a.png 則 檔名部分就應該為"chars/a.png"。值得注意的是,在windows下,字尾名大寫小寫無所謂,但是在mac下,字尾的大小寫必須與檔案完全一致,否則無法載入。

此函式還有乙個過載函式,後邊多乙個ccrect引數,可以通過此引數設定載入中某個矩形區域。

2,間接載入

有些經常被用到或者需要頻繁載入移除的一些資源,如果每次都從檔案中載入,程式的效率會變得非常低,通常的做法是將這些檔案先讀到快取中,然後再從快取中載入。

cctexture2d *ptexture = cctexturecache::sharedtexturecache()->addimage(pszfilename);

這個函式將乙個加入快取並返回乙個cctexture2d的指標。然後就可以

psprite = ccsprite::spritewithtexture(ptexture);

如果乙個資源已經被加入到了快取,addimage是不會再加一遍的。程式中我很少會直接用spritewithtexture這個函式,因為需要儲存ptexture的指標。而在spritewithfile函式中起內部就已經使用了上述過程。

ccspriteframecache *pcache = ccspriteframecache::sharedspriteframecache();

pcache->addspriteframeswithfile("***x.plist");

其中plist檔案的路徑是完整路徑。

然後可以用兩種方式載入

psprite = ccsprite::spritewithspriteframe(pcache->spriteframebyname(szframename));

psprite = ccsprite::spritewithspriteframename(szframename);

看起來第乙個函式比較麻煩,實際上,第二個函式呼叫的是第乙個函式。。。。值得說明的是,這裡的szframename不需要完整路徑,而是檔名索引。

二,常用操作

精靈載入完了就改各種使用了。

1,錨點

錨點就是所有旋轉,移動,縮放的參考點。cocos2-x中預設的錨點是中心點。錨點用比例來表示範圍為0-1,(0,0)點代表左下點,(1,1)代表右上點。設定的函式為setanchorpoint(ccp(0.5, 0.5));

2,旋轉

setrotation(angle) 其中angle為角度不是弧度。正數為順時針旋轉,負數為逆時針旋轉。

3,位置

setposition(ccp(xpos, ypos)) xpos和ypos為相對于父節點錨點的位置。

4,縮放

setscale(s);   // 整體縮放

setscalex(s); // 原座標x軸縮放

setscaley(s); // 原座標y軸縮放

s為比例,s = 1表示原尺寸。

5,傾斜

setskewx(s); // 原座標x軸傾斜

setskewy(s); // 原座標y軸傾斜

x軸向右為正,y軸向上為正。

6,透明度

setopacity(s);

s範圍0-255,0完全透明,255完全不透明。

7,可見

setisvisible(bvisible)

bvisible為bool值true代表可見false代表不可見

8,翻轉

setflipx(bflip);  // 水平翻轉

setflipy(bflip);  // 豎直翻轉

bflip為true,則翻轉,false不翻轉。注意,翻轉是針對原的操作,水平翻轉相當於在編輯軟體裡水平翻轉一樣。不根據錨點進行翻轉。翻轉以後,設定的以前設定的錨點不會隨著的翻轉而改變。比如設定右下角為錨點,則翻轉以後,錨點為翻轉後的的右下角(是不是有點繞?)

最後,初始化完成後,不要忘了使用addchild加入到父節點,否則是不會顯示的。

cocos2d x中的精靈

所有的遊戲都有 sprites 精靈,你可能知道或者不知道它們是什麼。精靈就是遊戲中在場景裡進行移動的物件。你可以操縱它們。精靈可能是遊戲中最主要的角色。我知道你在想什麼 難道每乙個圖形物件都是精靈sprite嗎?當然不是!為什麼?當你操縱乙個精靈的時候,它就是乙個精靈。如果你不對它進行操作,那它就...

Cocos2d x中的精靈

精靈的繼承關係 1.減少檔案讀取次數 2.減少opengl es繪製呼叫並且加速渲染 3.減少記憶體消耗 運用集方式為什麼會減少記憶體碎片?通常使用zwoptex和texturepacker設計和生成紋理圖集檔案,以及紋理圖集座標檔案 plist 組成。使用精靈幀快取 有以下幾種 1.紋理快取 2....

cocos2d x建立精靈

建立精靈 方法一 有一張檔案建立 l ocal spritename cc.sprite create test.dog cc.sprite會自動將檔案載入為紋理,並用於初始化精靈 精靈還可以僅顯示的一部分 l ocal spritename cc.sprite create test.png cc...