ModelAnimationCollection

活动模型动画的集合。使用Model#activeAnimations访问此。
new ModelAnimationCollection()
See:

Members

animationAdded : Event

将动画添加到集合时触发的事件。例如,这可以用来保持用户界面的同步。
Default Value: new Event()
Example:
model.activeAnimations.animationAdded.addEventListener(function(model, animation) {
  console.log('Animation added: ' + animation.name);
});

animationRemoved : Event

从集合中移除动画时触发的事件。例如,这可以用来保持用户界面的同步。
Default Value: new Event()
Example:
model.activeAnimations.animationRemoved.addEventListener(function(model, animation) {
  console.log('Animation removed: ' + animation.name);
});

(readonly) length : Number

集合中的动画数。

Methods

add(options) → {ModelAnimation}
创建具有指定初始属性的动画并将其添加到集合中。

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

Parameters:
options (Object)
Name Description
options.name
String
标识动画的GLTF动画名称。如果options.indexundefined,则必须定义。
options.index
Number
标识动画的GLTF动画索引。如果options.nameundefined,则必须定义。
options.startTime
JulianDate
开始播放动画的场景时间。当这是undefined时,动画将从下一帧开始。
options.delay
Number
default 0.0
startTime开始播放的延迟(秒)。
options.stopTime
JulianDate
停止播放动画的场景时间。当这是undefined时,动画将在其整个持续时间内播放。
options.removeOnStop
Boolean
default false
true时,动画停止播放后将被移除。
options.multiplier
Number
default 1.0
值大于1.0增加动画相对于场景时钟速度的播放速度;值小于1.0降低速度。
options.reverse
Boolean
default false
true时,动画将反向播放。
options.loop
ModelAnimationLoop
default ModelAnimationLoop.NONE
确定动画是否循环以及如何循环。
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
var startTime = bmgl.JulianDate.now();

var animation = model.activeAnimations.add({
  name : 'another animation name',
  startTime : startTime,
  delay : 0.0,                          // Play at startTime (default)
  stopTime : bmgl.JulianDate.addSeconds(startTime, 4.0, new bmgl.JulianDate()),
  removeOnStop : false,                 // Do not remove when animation stops (default)
  multiplier : 2.0,                        // Play at double speed
  reverse : true,                       // Play in reverse
  loop : bmgl.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);
});
Throws
addAll(options) → {Array.<ModelAnimation>}
为模型中的每个动画创建具有指定初始属性的动画并将其添加到集合中。

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

Parameters:
options (Object)
Name Description
options.startTime
JulianDate
开始播放动画的场景时间。当这是undefined时,动画将从下一帧开始。
options.delay
Number
default 0.0
startTime开始播放的延迟(秒)。
options.stopTime
JulianDate
停止播放动画的场景时间。当这是undefined时,动画将在整个持续时间内播放。
options.removeOnStop
Boolean
default false
true时,动画在停止播放后被删除。
options.multiplier
Number
default 1.0
值大于1.0增加动画相对于场景时钟速度的播放速度;值小于1.0降低速度。
options.reverse
Boolean
default false
true时,动画将反向播放。
options.loop
ModelAnimationLoop
default ModelAnimationLoop.NONE
确定动画是否循环以及如何循环。
Example
model.activeAnimations.addAll({
  multiplier : 0.5,                        // Play at half-speed
  loop : bmgl.ModelAnimationLoop.REPEAT      // Loop the animations
});
Throws
contains(animation) → {Boolean}
确定此集合是否包含给定的动画。
Parameters:
animation (ModelAnimation) 要检查的动画。
get(index) → {ModelAnimation}
返回集合中指定索引处的动画。索引是基于零的,并且随着动画的添加而增加。删除动画后,所有动画都会向左移动,从而更改其索引。此函数通常用于迭代集合中的所有动画。
Parameters:
index (Number) 动画的从零开始的索引。
Example
// Output the names of all the animations in the collection.
var animations = model.activeAnimations;
var length = animations.length;
for (var i = 0; i < length; ++i) {
  console.log(animations.get(i).name);
}
remove(animation) → {Boolean}
从集合中删除动画。

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

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

Parameters:
animation (ModelAnimation) 要删除的动画。
Example
var a = model.activeAnimations.add({
  name : 'animation name'
});
model.activeAnimations.remove(a); // Returns true
removeAll()
从集合中删除所有动画。

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