精靈是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...