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類來實現, 這個纔是播放動畫的類。
如上是我的一些學習總結,有什麼不對的 ,歡迎指正, 共同學習進步。