ModelAnimationCollection

internal constructor new Cesium.ModelAnimationCollection()

通过访问模型的动画 Model#activeAnimations 来获取动画集合。不要直接调用构造函数。
活动模型动画的集合。
See:

Members

当为 true 时,即使场景时间暂停,动画也会播放。然而, 动画是否进行取决于分配给模型动画的 animationTime 函数。 默认情况下,这是基于场景时间的,因此使用默认设置的模型 无论此设置如何都不会动画。
Default Value: false
当动画添加到集合时引发的事件。这可以用于 例如,保持 UI 同步。
Default Value: new Event()
Example:
model.activeAnimations.animationAdded.addEventListener(function(model, animation) {
  console.log(`Animation added: ${animation.name}`);
});
当动画从集合中移除时引发的事件。这可以用于 例如,保持 UI 同步。
Default Value: new Event()
Example:
model.activeAnimations.removed.addEventListener(function(model, animation) {
  console.log(`Animation removed: ${animation.name}`);
});
集合中的动画数量。
拥有此动画集合的模型。

Methods

创建并使用指定的初始属性将动画添加到集合中。

这会引发 ModelAnimationCollection#animationAdded 事件,以便例如保持 UI 同步。

Name Type Description
options object 具有以下属性的对象:
Name Type Default Description
name string optional 标识动画的 glTF 动画名称。如果 options.indexundefined,则必须定义此属性。
index number optional 标识动画的 glTF 动画索引。如果 options.nameundefined,则必须定义此属性。
startTime JulianDate optional 开始播放动画的场景时间。当为 undefined 时,动画将在下一帧开始播放。
delay number 0.0 optionalstartTime 到开始播放的延迟时间(以秒为单位)。仅当 options.loop 为 ModelAnimationLoop.NONE 时才会影响动画。
stopTime JulianDate optional 停止播放动画的场景时间。当为 undefined 时,动画将播放其完整时长。
removeOnStop boolean false optionaltrue 时,动画停止播放后会被移除。仅当 options.loop 为 ModelAnimationLoop.NONE 时才会影响动画。
multiplier number 1.0 optional 大于 1.0 的值会相对于场景时钟速度增加动画播放速度;小于 1.0 的值会减慢速度。
reverse boolean false optionaltrue 时,动画将反向播放。
loop ModelAnimationLoop ModelAnimationLoop.NONE optional 确定动画是否循环播放以及如何循环播放。
animationTime ModelAnimation.AnimationTimeCallback optional 如果定义,则计算此动画的本地动画时间。
Returns:
添加到集合中的动画。
Throws:
Examples:
// 示例 1. 按名称添加动画
model.activeAnimations.add({
  name : 'animation name'
});
// 示例 2. 按索引添加动画
model.activeAnimations.add({
  index : 0
});
// 示例 3. 添加动画并提供所有属性和事件
const startTime = Cesium.JulianDate.now();

const animation = model.activeAnimations.add({
  name : 'another animation name',
  startTime : startTime,
  delay : 0.0,                                 // 在 startTime 时播放(默认)
  stopTime : Cesium.JulianDate.addSeconds(startTime, 4.0, new Cesium.JulianDate()),
  removeOnStop : false,                        // 动画停止时不移除(默认)
  multiplier : 2.0,                            // 以双倍速度播放
  reverse : true,                              // 反向播放
  loop : Cesium.ModelAnimationLoop.REPEAT      // 循环播放动画
});

animation.start.addEventListener(function(model, animation) {
  console.log(`Animation started: ${animation.name}`);
});
animation.update.addEventListener(function(model, animation, time) {
  console.log(`Animation updated: ${animation.name}. glTF animation time: ${time}`);
});
animation.stop.addEventListener(function(model, animation) {
  console.log(`Animation stopped: ${animation.name}`);
});
为模型中的所有动画创建并使用指定的初始属性将动画添加到集合中。

这会为每个动画引发 ModelAnimationCollection#animationAdded 事件,以便例如保持 UI 同步。

Name Type Description
options object optional 具有以下属性的对象:
Name Type Default Description
startTime JulianDate optional 开始播放动画的场景时间。当为 undefined 时,动画将在下一帧开始播放。
delay number 0.0 optionalstartTime 到开始播放的延迟时间(以秒为单位)。仅当 options.loop 为 ModelAnimationLoop.NONE 时才会影响动画。
stopTime JulianDate optional 停止播放动画的场景时间。当为 undefined 时,动画将播放其完整时长。
removeOnStop boolean false optionaltrue 时,动画停止播放后会被移除。仅当 options.loop 为 ModelAnimationLoop.NONE 时才会影响动画。
multiplier number 1.0 optional 大于 1.0 的值会相对于场景时钟速度增加动画播放速度;小于 1.0 的值会减慢速度。
reverse boolean false optionaltrue 时,动画将反向播放。
loop ModelAnimationLoop ModelAnimationLoop.NONE optional 确定动画是否循环播放以及如何循环播放。
animationTime ModelAnimation.AnimationTimeCallback optional 如果定义,则计算所有动画的本地动画时间。
Returns:
ModelAnimation 对象数组,每个添加到集合中的动画对应一个。如果没有 glTF 动画,则返回空数组。
Throws:
Example:
model.activeAnimations.addAll({
  multiplier : 0.5,                            // 以半速播放
  loop : Cesium.ModelAnimationLoop.REPEAT      // 循环播放动画
});

contains(runtimeAnimation)boolean

确定此集合是否包含给定的动画。
Name Type Description
runtimeAnimation ModelAnimation 要检查的运行时动画。
Returns:
如果此集合包含该动画则返回 true,否则返回 false
返回集合中指定索引处的动画。索引从零开始, 并随着动画的添加而增加。移除动画会将其后的所有动画 向左移动,从而更改它们的索引。此函数通常用于 遍历集合中的所有动画。
Name Type Description
index number 动画的从零开始的索引。
Returns:
指定索引处的运行时动画。
Example:
// 输出集合中所有动画的名称。
const animations = model.activeAnimations;
const length = animations.length;
for (let i = 0; i < length; ++i) {
  console.log(animations.get(i).name);
}

remove(runtimeAnimation)boolean

从集合中移除动画。

这会引发 ModelAnimationCollection#animationRemoved 事件,以便例如保持 UI 同步。

也可以通过将 ModelAnimationCollection#removeOnStop 设置为 true 来隐式地从集合中移除动画。当动画被移除时, ModelAnimationCollection#animationRemoved 事件仍会引发。

Name Type Description
runtimeAnimation ModelAnimation 要移除的运行时动画。
Returns:
如果动画被移除则返回 true;如果在集合中未找到动画则返回 false
Example:
const a = model.activeAnimations.add({
  name : 'animation name'
});
model.activeAnimations.remove(a); // 返回 true
从集合中移除所有动画。

这会为每个动画引发 ModelAnimationCollection#animationRemoved 事件,以便例如保持 UI 同步。

Need help? The fastest way to get answers is from the community and team on the Cesium Forum.