首先要解釋一下,為什么要使用TexturePacker?
這是應為我們做的游戲最終要運行在Android手機或者蘋果手機上,而Android或者ios系統使用的是OpenGL ES來渲染。所以我們要針對OpenGL ES來進行優化。
內存方面,OpenGL ES紋理要求寬和高都是2的n次冪的倍數。想一想,如果圖片的寬為33,而高為65,那么圖片加載到內存后的大小為多少?考慮到寬和高都是2的n次冪,所以加載到內存后的大小是64*128。所以我們可以考慮將小的圖片拼成到的圖片,然后加載。
渲染速度方面,OpenGL ES要求切換的紋理少,所以將圖片拼成大圖片,這樣就減少了紋理的切換。
所以使用TexturePacker是很有必要的。
打開TexturePacker,點擊Add Folder,將圖片全部加載進來。注意:我們應該事先將要拼湊的圖片放到同一個文件夾下。
這樣。TexturePacker就自動將我們要拼湊的圖片拼成了一個大圖,並且大圖的寬和高都是2的n次冪的倍數。
下面設置輸出格式:

Texture format設置成PNG。然后選擇Data file和Texture file的保存位置。點擊工具欄上的Publis。這樣我們就得到了plist文件和png文件。
下面就是在cocos2d-x中使用這兩個文件。
將這兩個文件復制到Resources文件夾中。
使用下面的代碼加載着兩個文件
- CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("last.plist","last.png");
接着創建一個CCSpriteBatchNode,將要渲染的精靈加載到CCSpriteBatchNode。
- CCTexture2D *texture=CCTextureCache::sharedTextureCache()->textureForKey("last.png");
- CCSpriteBatchNode *node=CCSpriteBatchNode::batchNodeWithTexture(texture);
- addChild(node);
然后就是創建精靈並且加載精靈了。
- CCSprite *s1=CCSprite::createWithSpriteFrameName("bird.png");
- s1->setPosition(ccp(35,32.5));
- node->addChild(s1);
- CCSprite *s2=CCSprite::createWithSpriteFrameName("cat.png");
- s2->setPosition(ccp(100,100));
- node->addChild(s2);
其中“bird.png”是小圖片的名字。注意:CCSpriteBatchNode中的Sprite都要用同一個紋理。
本文出自:http://blog.csdn.net/zhy_cheng/article/details/8680931
===============================================================
說明:
1.當點擊 Add Folder時,是選擇一個特定的文件夾,在選擇有存儲圖片的文件夾時不會顯示此文件夾下的所有圖片,即顯示是一個空文件夾。不要理會這些,直接到存放圖片的文件夾目錄,然后點擊選擇文件夾。
2.可以在左邊設置輸出的數據文件的路徑(一般數據文件路徑和紋理文件路徑是相同的),如果在左邊沒有設置相關的路徑,那么在點擊Publish時會彈出保存框。建議在左邊設置保存路徑,因為在左邊除了可以設置保存路徑外,還可以設置保存的紋理圖片的格式,可以是.png格式的也可以是.bmp格式的。
