cocos2d-x SpriteFrameCache/TextureCache/AnimationCache

来源:互联网 发布:广告牌计算软件 编辑:程序博客网 时间:2024/06/05 08:01
/*SpriteFrameCache*///通过plist和对应的png文件,把一批精灵添加到帧缓存中SpriteFrameCache::getInstance()->addSpriteFramesWithFile("fish.plist", "fish.png");//从帧缓存中获取一个精灵auto sp = Sprite::createWithSpriteFrameName("fish01_01.png");sp->setAnchorPoint(Vec2(0, 0));sp->setPosition(Vec2(0, 300));addChild(sp, 9);/*TextureCache*///创建一个精灵,同时把精灵图片添加到纹理缓存中auto sp1 = Sprite::createWithTexture(Director::getInstance()->getTextureCache()->addImage("HelloWorld.png"));sp1->setPosition(Vec2(300, 300));sp1->setScale(0.5f);addChild(sp1, 8);//从纹理缓存中获取一个图片来创建精灵auto sp11 = Sprite::createWithTexture(Director::getInstance()->getTextureCache()->getTextureForKey("HelloWorld.png"));sp11->setPosition(Vec2(300, 100));sp11->setScale(0.5f);addChild(sp11, 8);/*AnimationCache*///从SpriteFrameCache中获取每一帧组成动画Vector<SpriteFrame*> sps;for (int i = 1; i < 11; i++){char buf[30] = {0};sprintf_s(buf, "fish03_%02d.png", i);auto spfm = SpriteFrameCache::getInstance()->getSpriteFrameByName(buf);sps.pushBack(spfm);}auto animation = Animation::createWithSpriteFrames(sps, 0.2f);//animation->setLoops(100);//把动画添加到AnimationCache中AnimationCache::getInstance()->addAnimation(animation, "fish");//从AnimationCache中获取动画创建一个动画动作auto animate = Animate::create(AnimationCache::getInstance()->getAnimation("fish"));auto sp33 = Sprite::create();sp33->setPosition(Vec2(100, 300));addChild(sp33, 9);//重复执行这个动画动作sp33->runAction(RepeatForever::create(animate));


  • TextureCache是最底层也是最有效的纹理缓存,缓存的是加载到内存中的纹理资源,也就是图片资源。
  • SpriteFrameCache精灵框帧缓存,缓存的是精灵帧。
  • SpriteFrameCache是基于TextureCache上的封装。缓存的是精灵帧,是纹理指定区域的矩形块。各精灵帧都在同一纹理中,通过切换不同的框帧来显示出不同的图案。

0 0
原创粉丝点击