cocos2d-x SpriteFrameCache/TextureCache/AnimationCache

/*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上的封装。缓存的是精灵帧,是纹理指定区域的矩形块。各精灵帧都在同一纹理中,通过切换不同的框帧来显示出不同的图案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值