Cocos2dx CCSprite CCSpriteFrame CCTexture2D CCAnimation學習總結

1. CCTexture2D    CCSpriteFrame   CCSprite   三者之間的關係

CCTexture2D   是貼圖紋理, 是緩存到GPU中的圖片數據。

CCSpriteFrame  是相對於動畫來說的概念,代表動畫中“幀”,CCSpriteFrame  是貼圖紋理CCTexture2D中某塊區域,或者這個貼圖紋理。

CCTexture2D  和 CCSpriteFrame   都是我們看不到的 , 我們真正能看到的 應該是 CCSprite。

CCSprite  是顯示到場景中的精靈, 是被實際畫出來的東西,  那CCSprite 和 CCTexture2D ,CCSpriteFrame   又有什麼關係呢?  

下面我將給你們來介紹。


CCSprite   的創建方式有如下幾種

1.CCSprite   可以通過  圖片的路徑來創建。

2,CCSprite   可以通過  CCSpriteFrame   來創建

3,CCSprite   可以通過  CCTexture2D     來創建


其實上面三種創建方式 ,最後的函數調用都是通過 CCTexture2D    ,來創建一個  CCSprite.   

最後都會掉到如下函數

 所以總的來說,CCSprite的創建 是通過 緩存在GPU中的 貼圖紋理來實現的。



2. 介紹一下 與CCSprite   CCSpriteFrame  CCTexture2D  有關的,能提高效率的一些緩存單例類


CCSpriteFrameCache  精靈幀緩存類,通過.plist  和 .png圖片  來緩存了一些CCSpriteFrame的對象, 這個類解決 碎圖 問題,  大大提高了效率, 通過一些工具

把一些碎圖 (小圖片)整合到一張大圖片中,通過加載一次貼圖紋理,就把所有的整合到大圖中的圖片 加載了進去,緩存到CCSpriteFrameCache 對象中,以後

就可以通過碎圖的名字,從 CCSpriteFrameCache 對象中 獲取 精靈幀對象。 然後可以使用獲取的精靈幀做其他處理


CCTextureCache    貼圖紋理緩存類, 這個類可以把一些圖片加載到GPU之後, 緩存起來, 以後直接取就可以了。



接下來要說說的 ,我感覺比較重要的兩個類 CCSpriteBatchNode  和 CCTextureAtlas, 這兩個類只所以重要,是因爲它們大大提高了渲染效率。

舉例來說,如果你想創建1000個一樣精靈圖片,你有可能創建1000個CCSprite, 這樣也是可以的。 

但是引擎在渲染的時候要渲染1000次(調用1000次CCSprite draw方法)。

如果使用CCSpriteBatchNode   只需渲染一次(調用1次CCSpriteBatchNode   draw方法),重要繪畫顯示而是使用CCTextureAtlas對象中 drawNumberOfQuads方法。

drawNumberOfQuads方法會把所有要顯示的精靈顯示出來。


CCSpriteBatchNode   通常也是加載一張包括很多碎圖的大圖片, 然後獲取這些碎圖精靈  添加到CCSpriteBatchNode對象中。


3.  CCAnimition  和  CCSpriteFrame 之間的關係

     

    我的理解是CCAnimation 是個動畫,不過是個靜態容器, 這裏面存儲一些靜態的  CCSpriteFrame  和一些幀間    隔時間之類的信息。    而是不能播放的, 如果要播放必須通

過CCAnimate類來實現, 這個纔是播放動畫的類。



如上是我的一些學習總結,有什麼不對的 ,歡迎指正, 共同學習進步。






 






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章