cocos2d-x 百分比动作1 Progress半径模式

本文深入探讨了百分比动作在coco2d-x框架中的实现方式,包括如何使用ProgressTo和ProgressFromTo类创建动作,如何通过ProgressTimer对象执行这些动作,并详细介绍了动作参数、效果展示以及逆时针旋转、设置参考点和非线性百分比变化等高级用法。同时,文章揭示了一个在特定版本中发现的有趣现象,并提供了复现步骤。

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

百分比动作是指按照指定的时间间隔变化百分比的一类动作。

实现类主要是ProgressTo 和 ProgressFromTo


常用方法:


ProgressTo* ProgressTo::create(float duration, float percent)

duration表示持续时间,percent表示目标百分比

代表从0%开始,结束于指定百分比的动作。


ProgressFromTo* ProgressFromTo::create(float duration, float fromPercentage, float toPercentage)

duration表示持续时间,fromPercentage表示初始百分比,toPercentage表示目标百分比

代表从指定百分比开始,结束与指定百分比的动作。


但是百分比动作不能直接被精灵等可见物体执行,而是需要将这些动作包裹进ProgressTimer对象来执行。

auto vSize = Director::getInstance()->getVisibleSize();

auto circle = Sprite::create("circle_blue.png");

auto progressTimer = ProgressTimer::create(circle);
progressTimer->setPosition(vSize / 2);//设置位置 在屏幕中心
progressTimer->setType(ProgressTimerType::RADIAL);//设置模式 RADIAL:半径 BAR:进度条 默认RADIAL
progressTimer->setMidpoint(Vec2(0.5, 0.5));//设置百分比效果参考点 默认(0,0)
progressTimer->setReverseProgress(false);//动作是否反向执行 默认false
progressTimer->setReverseDirection(false);//动作是否逆序执行 默认false
this->addChild(progressTimer);

auto progressTo = ProgressFromTo::create(2, 20, 80);
progressTimer->runAction(RepeatForever::create(progressTo->clone()));//为了方便展示 这里让动作重复执行


运行后会发现,动作只执行了一次,并没有重复执行。

但是,把ProgressTo::create(2, 100)改成ProgressFromTo::create(2, 0, 100), 就会发现动作是可以重复执行的,不知道这算不算一个Bug(coco2d-x 3.2版本)。


效果如下:


想要逆时针旋转,把setReverseDirection(true)设置为true就可以了,效果如下:



可以设置别的参考点,把setMidpoint(Vec2(0.6, 0.6)), 效果如下:


不一定要从0-100,把ProgressFromTo::create(2, 0, 100)改成ProgressFromTo::create(2, 20, 80),效果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值