Animation创建动画两种方式和AnimationCache动画缓存调用

本文详细介绍了在Android中创建动画的两种主要方式:使用Animation类和AnimationCache机制。通过实例解析了如何运用这些方法来实现流畅的UI动画效果,同时探讨了AnimationCache在大量动画场景下提高性能的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**************************动画****************************/
	// 手动创建动画
	auto animation = Animation::create();
		char szName[10] = { 0 };
	for (int i = 1; i <= 8; i++){
		sprintf(szName, "s_%d.png", i);
		animation->addSpriteFrameWithFile(szName); 
	}
	animation->setLoops(-1); // 设置循环次数,-1代表无限循环
	animation->setDelayPerUnit(2.8f / 14.0f); // 每帧间隔时间
	animation->setRestoreOriginalFrame(true); // 是否恢复到动画的原始帧
	auto action = Animate::create(animation);

	// 文件创建动画
	auto frameCache = SpriteFrameCache::getInstance();
	frameCache->addSpriteFramesWithFile("LoliRun.plist", "LoliRun.png");  // 增加动画plist和png文件
	SpriteFrame* frame = NULL;
	Vector<SpriteFrame*> frameVec;
	for (int i = 1; i <= 8; i++){
		frame = frameCache->getSpriteFrameByName(StringUtils::format("s_%d.png", i));
		frameVec.pushBack(frame);
	}
	auto animation2 = Animation::createWithSpriteFrames(frameVec, 0.1, -1);  // 参数动画队列,动画每帧间隔,动画执行次数
	auto action2 = Animate::create(animation2);
	/**********************************************************/

        AnimationCache::getInstance()->addAnimation(animation, "Loliruns");   // 将动画命名,加入到AnimationCache中,以后可随时调用

	auto animate = Animate::create(AnimationCache::getInstance()->getAnimation("Loliruns")); // 从AnimationCache调用动画名为Loliruns的动画


	/******************************设置动画精灵两种方式**********************************/
	auto sprite = Sprite::create();

	// 方法1:从SpriteFrameCache中根据名字获得对应的精灵帧,再设置
	sprite->setSpriteFrame(spriteFrameCache->getSpriteFrameByName("s_1.png"));

	// 方法2:从Animation中获得对应的帧,再进行设置
	//sprite->setDisplayFrameWithAnimationName("dogs", 0);
	sprite->setPosition(Vec2(200, 200));
	addChild(sprite);
	sprite->runAction(animate);
	/**********************************************************************************/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值