cocosd2dx3.0相对于之前版本改变还是比较大的。现在我们来学习一下3.0中sprite的一些用法:
sprite创建:
auto sprite = Sprite::create("Images/grossini_dance_atlas.png", Rect(x,y,85,121) ); //x,y表示图片在大图中的位置后边两参数表示长度和宽度 直接用图片初始化
auto BatchNode = SpriteBatchNode::create("Images/grossini_dance_atlas.png", 50);//首先创建以个spritebatchnode
auto sprite = Sprite::createWithTexture(BatchNode->getTexture(), Rect(x,y,85,121));//通过spritebatchnode创建
auto cache = SpriteFrameCache::getInstance();//创建一个缓存实例(单利模式) cache->addSpriteFramesWithFile("animations/grossini.plist");//两种添加图片方式 cache->addSpriteFramesWithFile("animations/grossini_gray.plist", "animations/grossini_gray.png"); cache->addSpriteFramesWithFile("animations/grossini_blue.plist", "animations/grossini_blue.png"); // // Animation using Sprite BatchNode //通过缓存初始化 // _sprite1 = Sprite::createWithSpriteFrameName("grossini_dance_01.png");
退出程序调用SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();SpriteBatchNode:可以引用且仅能一个纹理,sprite可以根据该纹理创建,并且加到spritebatchnode,所有的精灵添加到SpriteBatchNode被同一个OpenGL ES绘制。如果精灵没有添加到同一个SpriteBatchNode,那么OpenGL ES会为每一个精灵创建。当你创建精灵动画时,动画改变图片调用setDisplayFrame这个方法,这就是为什么动画必须在同一个纹理里。(翻译的testcpp可能理解有错)。