QAbstractClipAnimator
是 Qt3D 动画系统中的基类,为动画播放功能提供基础实现。它属于 Qt3DAnimation 模块,主要用于控制动画剪辑(Animation Clip)的播放。
类继承关系
QObject → Qt3DCore::QNode → Qt3DAnimation::QAbstractClipAnimator
主要功能
QAbstractClipAnimator
提供:
- 动画剪辑的播放控制(播放、暂停、停止)
- 播放速度和循环控制
- 动画数据与目标对象的关联
主要属性和方法
属性
clip
: 设置/获取将要播放的动画剪辑running
: 控制动画是否正在运行loops
: 设置动画循环次数(-1表示无限循环)normalizedTime
: 动画当前标准化时间点(0.0-1.0)clock
: 动画使用的时钟
主要方法
start()
: 开始播放动画stop()
: 停止播放动画setRunning(bool running)
: 设置动画运行状态setClip(Qt3DAnimation::QAbstractAnimationClip *clip)
: 设置动画剪辑
子类
QAbstractClipAnimator
有两个主要子类:
QClipAnimator
: 用于控制关键帧动画QBlendedClipAnimator
: 用于混合多个动画剪辑
使用示例
// 创建一个简单的动画播放器
Qt3DCore::QEntity *entity = new Qt3DCore::QEntity(rootEntity);
// 创建一个变换组件
Qt3DCore::QTransform *transform = new Qt3DCore::QTransform();
entity->addComponent(transform);
// 创建动画剪辑
Qt3DAnimation::QClip *clip = new Qt3DAnimation::QClip();
// 设置动画关键帧数据
// ...
// 创建动画播放器
Qt3DAnimation::QClipAnimator *animator = new Qt3DAnimation::QClipAnimator(entity);
animator->setClip(clip);
animator->setRunning(true);
animator->setLoops(3); // 播放3次
// 为变换设置动画频道映射
Qt3DAnimation::QChannelMapper *channelMapper = new Qt3DAnimation::QChannelMapper();
// 设置频道映射
// ...
animator->setChannelMapper(channelMapper);
// 添加到实体
entity->addComponent(animator);
注意事项
QAbstractClipAnimator
是抽象基类,通常不直接使用,而是使用其子类QClipAnimator
或QBlendedClipAnimator
- 使用前需包含相应头文件:
#include <Qt3DAnimation/QAbstractClipAnimator>
- 动画系统通常需要设置动画剪辑、频道映射和目标对象才能正常工作