ModelAnimationCollection

new Cesium.ModelAnimationCollection ()

活动模型动画的集合。使用 Model#activeAnimations 访问它。
See:

Members

animateWhilePaused : Boolean

如果为 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.animationRemoved.addEventListener(function(model, animation) {
  console.log(`Animation removed: ${animation.name}`);
});
集合中的动画数量。

Methods

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

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

Name Type Description
options Object 具有以下属性的对象:
姓名 类型 默认 描述
name 细绳 可选 标识动画的 glTF 动画名称。如果 options.index undefined ,则必须定义。
index 数字 可选 标识动画的 glTF 动画索引。如果 options.name undefined ,则必须定义。
startTime 朱利安日期 可选 开始播放动画的场景时间。当这是 undefined 时,动画从下一帧开始。
delay 数字 0.0 可选 startTime 到开始播放的延迟,以秒为单位。
stopTime 朱利安日期 可选 停止播放动画的场景时间。当这是 undefined 时,动画将播放完整的持续时间。
removeOnStop 布尔值 false 可选 当为 true 时,动画在停止播放后被移除。
multiplier 数字 1.0 可选 大于 1.0 的值会增加动画相对于场景时钟速度的播放速度;小于 1.0 的值会降低速度。
reverse 布尔值 false 可选 true 时,动画反向播放。
loop 模型动画循环 ModelAnimationLoop.NONE 可选 确定动画是否循环以及如何循环。
animationTime ModelAnimation.AnimationTimeCallback 可选 如果已定义,则计算此动画的本地动画时间。
Returns:
添加到集合中的动画。
Throws:
Examples:
// Example 1. Add an animation by name
model.activeAnimations.add({
  name : 'animation name'
});

// Example 2. Add an animation by index
model.activeAnimations.add({
  index : 0
});
// Example 3. Add an animation and provide all properties and events
const startTime = Cesium.JulianDate.now();

const animation = model.activeAnimations.add({
  name : 'another animation name',
  startTime : startTime,
  delay : 0.0,                          // Play at startTime (default)
  stopTime : Cesium.JulianDate.addSeconds(startTime, 4.0, new Cesium.JulianDate()),
  removeOnStop : false,                 // Do not remove when animation stops (default)
  multiplier : 2.0,                        // Play at double speed
  reverse : true,                       // Play in reverse
  loop : Cesium.ModelAnimationLoop.REPEAT      // Loop the animation
});

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 具有以下属性的 可选 对象:
姓名 类型 默认 描述
startTime 朱利安日期 可选 开始播放动画的场景时间。当这是 undefined 时,动画从下一帧开始。
delay 数字 0.0 可选 startTime 到开始播放的延迟,以秒为单位。
stopTime 朱利安日期 可选 停止播放动画的场景时间。当这是 undefined 时,动画将播放完整的持续时间。
removeOnStop 布尔值 false 可选 当为 true 时,动画在停止播放后被移除。
multiplier 数字 1.0 可选 大于 1.0 的值会增加动画相对于场景时钟速度的播放速度;小于 1.0 的值会降低速度。
reverse 布尔值 false 可选 true 时,动画反向播放。
loop 模型动画循环 ModelAnimationLoop.NONE 可选 确定动画是否循环以及如何循环。
animationTime ModelAnimation.AnimationTimeCallback 可选 如果定义,计算所有动画的本地动画时间。
Returns:
一组 ModelAnimation 对象,每个添加到集合中的动画一个。如果没有 glTF 动画,则数组为空。
Throws:
Example:
model.activeAnimations.addAll({
  multiplier : 0.5,                        // Play at half-speed
  loop : Cesium.ModelAnimationLoop.REPEAT      // Loop the animations
});

contains (animation) Boolean

确定此集合是否包含给定动画。
Name Type Description
animation ModelAnimation 要检查的动画。
Returns:
如果此集合包含动画,则为 true ,否则为 false
返回集合中指定索引处的动画。索引从零开始,并随着动画的添加而增加。删除动画会将其后的所有动画向左移动,从而更改它们的索引。此函数通常用于迭代集合中的所有动画。
Name Type Description
index Number 动画的从零开始的索引。
Returns:
指定索引处的动画。
Example:
// Output the names of all the animations in the collection.
const animations = model.activeAnimations;
const length = animations.length;
for (let i = 0; i < length; ++i) {
  console.log(animations.get(i).name);
}

remove (animation) Boolean

从集合中移除动画。

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

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

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

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