动态模型动画的集合。使用
Model#activeAnimations
访问。
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); });
-
动画集中动画的数量。
Methods
-
add(options) → ModelAnimation
-
创建动画并将其添加到集合中,动画具有指定的初始属性。
这会引发
ModelAnimationCollection#animationAdded
事件,例如,用户界面可以保持同步。Name Type Description options
Object 具有以下属性的对象: Name Type Default Description name
String 用于标识动画的 glTF 动画名称。 startTime
JulianDate optional 开始播放动画的场景时间。如果未定义,动画将从下一帧开始播放。 delay
Number 0.0
optional 从开始时间到开始播放的延迟时间,以秒为单位。 stopTime
JulianDate optional 停止播放动画的场景时间。如果未定义,动画将持续播放。 removeOnStop
Boolean false
optional 为 true 时,动画会在停止播放后移除。 speedup
Number 1.0
optional 大于 1.0 的值会提高动画播放速度(相对于场景时钟速度);小于 1.0 的值会降低动画播放速度。 reverse
Boolean false
optional loop
ModelAnimationLoop ModelAnimationLoop.NONE
optional 确定动画是否循环以及如何循环。 Returns:
添加到集合中的动画。Throws:
-
DeveloperError : 动画未加载。等待
Model#readyPromise
解析。 -
DeveloperError : options.name 必须是有效的动画名称。
-
DeveloperError : options.speedup 必须大于 0。
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(options) → Array.<ModelAnimation>
-
为模型中的每个动画创建一个具有指定初始属性的动画,并将其添加到集合中。
这将引发每个模型的
ModelAnimationCollection#animationAdded
事件,以便用户界面保持同步。Name Type Description options
Object optional 具有以下属性的对象: Name Type Default Description startTime
JulianDate optional 开始播放动画的场景时间。如果未定义,动画将从下一帧开始播放。 delay
Number 0.0
optional 从开始时间到开始播放的延迟时间,以秒为单位。 stopTime
JulianDate optional 停止播放动画的场景时间。如果未定义该值,动画将持续播放。 removeOnStop
Boolean false
optional 为true时,动画停止播放后会被移除。 speedup
Number 1.0
optional 大于 1.0 的值会提高动画相对于场景时钟速度的播放速度;小于 1.0 的值会降低播放速度。 reverse
Boolean false
optional 为true时,动画将反向播放。 loop
ModelAnimationLoop ModelAnimationLoop.NONE
optional 确定动画是否循环以及如何循环。 Returns:
由ModelAnimation
对象组成的数组,每个动画对应一个数组。如果没有 glTF 动画,则数组为空。Throws:
-
DeveloperError : 动画未加载。等待
Model#readyPromise
解析。 -
DeveloperError : options.speedup 必须大于 0。
Example:
model.activeAnimations.addAll({ speedup : 0.5, // Play at half-speed loop : SuperMap3D.ModelAnimationLoop.REPEAT // Loop the animations });
-
-
确定该集合是否包含给定的动画。
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); }
-
从动画集中移除动画。
这将引发
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
-
移除动画集中的所有动画。
这将引发每个动画的
ModelAnimationCollection#animationRemoved
事件,以便用户界面保持同步。