ModelAnimationCollection

new SuperMap3D.ModelAnimationCollection()

动态模型动画的集合。使用 Model#activeAnimations 访问。
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);
});

readonlylength : Number

动画集中动画的数量。

Methods

add()ModelAnimation

创建动画并将其添加到集合中,动画具有指定的初始属性。 这会引发 ModelAnimationCollection#animationAdded 事件,例如,用户界面可以保持同步。
Name Type Default Description
options.name String 用于标识动画的 glTF 动画名称。
options.startTime JulianDate optional 开始播放动画的场景时间。如果未定义,动画将从下一帧开始播放。
options.delay Number 0.0 optional 从开始时间到开始播放的延迟时间,以秒为单位。
options.stopTime JulianDate optional 停止播放动画的场景时间。如果未定义,动画将持续播放。
options.removeOnStop Boolean false optional 为 true 时,动画会在停止播放后移除。
options.speedup Number 1.0 optional 大于 1.0 的值会提高动画播放速度(相对于场景时钟速度);小于 1.0 的值会降低动画播放速度。
options.reverse Boolean false optional
options.loop ModelAnimationLoop ModelAnimationLoop.NONE optional 确定动画是否循环以及如何循环。
Returns:
添加到集合中的动画。
Throws:
Examples:
// Example 1. Add an animation
model.activeAnimations.add({
  name : 'animation name'
});
// Example 2. Add an animation and provide all properties and events
var startTime = SuperMap3D.JulianDate.now();

var animation = model.activeAnimations.add({
  name : 'another animation name',
  startTime : startTime,
  delay : 0.0,                          // Play at startTime (default)
  stopTime : SuperMap3D.JulianDate.addSeconds(startTime, 4.0, new SuperMap3D.JulianDate()),
  removeOnStop : false,                 // Do not remove when animation stops (default)
  speedup : 2.0,                        // Play at double speed
  reverse : true,                       // Play in reverse
  loop : SuperMap3D.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);
});

addAll()Array.<ModelAnimation>

为模型中的每个动画创建一个具有指定初始属性的动画,并将其添加到集合中。

这将引发每个模型的 ModelAnimationCollection#animationAdded 事件,以便用户界面保持同步。

Name Type Default Description
options.startTime JulianDate optional 开始播放动画的场景时间。如果未定义,动画将从下一帧开始播放。
options.delay Number 0.0 optional 从开始时间到开始播放的延迟时间,以秒为单位。
options.stopTime JulianDate optional 停止播放动画的场景时间。如果未定义该值,动画将持续播放。
options.removeOnStop Boolean false optional 为true时,动画停止播放后会被移除。
options.speedup Number 1.0 optional 大于 1.0 的值会提高动画相对于场景时钟速度的播放速度;小于 1.0 的值会降低播放速度。
options.reverse Boolean false optional 为true时,动画将反向播放。
options.loop ModelAnimationLoop ModelAnimationLoop.NONE optional 确定动画是否循环以及如何循环。
Returns:
ModelAnimation对象组成的数组,每个动画对应一个数组。如果没有 glTF 动画,则数组为空。
Throws:
Example:
model.activeAnimations.addAll({
  speedup : 0.5,                        // Play at half-speed
  loop : SuperMap3D.ModelAnimationLoop.REPEAT      // Loop the animations
});

contains(animation)Boolean

确定该集合是否包含给定的动画。
Name Type Description
animation ModelAnimation 要检查的动画
Returns:
如果此集合包含动画,则为 true,否则为 false。

get(index)ModelAnimation

返回动画集合中指定索引处的动画。 索引为0,并随着动画的添加而增加。 移除一个动画会将其后的所有动画向左移动,从而改变它们的索引。 此函数通常用于遍历集合中的所有动画。
Name Type Description
index Number 动画的0点索引。
Returns:
指定索引处的动画。
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事件,以便用户界面保持同步。

当动画被移除时,ModelAnimationCollection#animationRemoved 事件仍会被触发。

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

removeAll()

移除动画集中的所有动画。

这将引发每个动画的 ModelAnimationCollection#animationRemoved 事件,以便用户界面保持同步。