通过SpriteBatchNode可以实现多张图片的绘制仅需一次绘制,从而提高帧率,而这的前提条件是是多个图片拥有同一个纹理,而在实际中,我们会用多多个不同的图片;
那么这时候我们就需要想办法了,没错,就是打包多张图片成一张图片,那么就只有一个纹理了;
至于打包的工具,比如:TexturePacker,打包之后会生成 plist及png文件
如:girls.png,girls.plist
然后我们通过以下代码实现sprite的加载:
SpriteFrameCache* cache = SpriteFrameCache::getInstance(); cache->addSpriteFramesWithFile("girls.plist", "girls.png"); Sprite* sprite = Sprite::createWithSpriteFrameName("sprite1.png"); sprite->setPosition(Point(100,120)); this->addChild(sprite); Sprite* sprite2 = Sprite::createWithSpriteFrameName("sprite3.png"); sprite2->setPosition(Point(260,120)); this->addChild(sprite2);
这里面的Sprite加载的图片名称则是打包之前的图片名称,具体的可以查看一下plist文件确认一下。
原文:http://www.cnblogs.com/skyry/p/5037369.html