new ModelAnimationCollection()
Model#activeAnimations。不要直接调用构造函数
活动模型动画的集合。
Members
-
animateWhilePausedboolean
-
当为true时,即使场景时间暂停,动画也会播放。但是, 是否进行动画将取决于分配给模型动画的animationTime函数。 默认情况下,这基于场景时间,因此使用默认设置的模型无论此设置如何都不会动画。
- Default Value: false
animationAddedEvent
当动画添加到集合时触发的事件。这可以用于,例如,保持UI同步。
- Default Value: new Event()
Example
model.activeAnimations.animationAdded.addEventListener(function(model, animation) {
console.log(`Animation added: ${animation.name}`);
});
animationRemovedEvent
当动画从集合中移除时触发的事件。这可以用于,例如,保持UI同步。
- Default Value: new Event()
Example
model.activeAnimations.animationRemoved.addEventListener(function(model, animation) {
console.log(`Animation removed: ${animation.name}`);
});
readonly lengthnumber
集合中动画的数量。
readonly modelModel
拥有此动画集合的模型。
Methods
-
add(options){ModelAnimation}
-
创建具有指定初始属性的动画并将其添加到集合中。
这会触发
ModelAnimationCollection#animationAdded事件,例如,UI可以保持同步。Name Type Description optionsobject 具有以下属性的对象:
Name Type Default Description namestring 可选 标识动画的glTF动画名称。如果
options.index为undefined,则必须定义。indexnumber 可选 标识动画的glTF动画索引。如果
options.name为undefined,则必须定义。startTimeJulianDate 可选 开始播放动画的场景时间。当为
undefined时,动画在下一帧开始。delaynumber 0.0 可选 从
startTime到开始播放的延迟(以秒为单位)。只有当options.loop为 ModelAnimationLoop.NONE 时,这才会影响动画。stopTimeJulianDate 可选 停止播放动画的场景时间。当为
undefined时,动画播放其完整持续时间。removeOnStopboolean false 可选 当为
true时,动画在停止播放后被移除。只有当options.loop为 ModelAnimationLoop.NONE 时,这才会影响动画。multipliernumber 1.0 可选 大于
1.0的值增加动画相对于场景时钟速度的播放速度;小于1.0的值降低速度。reverseboolean false 可选 当为
true时,动画反向播放。loopModelAnimationLoop ModelAnimationLoop.NONE 可选 确定动画是否循环以及如何循环。
animationTimeModelAnimation.AnimationTimeCallback 可选 如果已定义,则计算此动画的本地动画时间。
Throws:
-
-
动画未加载。等待
Model#ready返回true。 - Type
- DeveloperError
-
-
-
options.name必须是有效的动画名称。
- Type
- DeveloperError
-
-
-
options.index必须是有效的动画索引。
- Type
- DeveloperError
-
-
-
options.name或options.index必须定义其一。
- Type
- DeveloperError
-
-
-
options.multiplier必须大于零。
- Type
- DeveloperError
-
Returns:
Type Description ModelAnimation 添加到集合中的动画。 Examples
// 示例1. 按名称添加动画 model.activeAnimations.add({ name : 'animation name' });// 示例2. 按索引添加动画 model.activeAnimations.add({ index : 0 });// 示例3. 添加动画并提供所有属性和事件 const startTime = SuperMap3D.JulianDate.now(); const animation = model.activeAnimations.add({ name : 'another animation name', startTime : startTime, delay : 0.0, // 在startTime播放(默认) stopTime : SuperMap3D.JulianDate.addSeconds(startTime, 4.0, new SuperMap3D.JulianDate()), removeOnStop : false, // 动画停止时不移除(默认) multiplier : 2.0, // 以双倍速度播放 reverse : true, // 反向播放 loop : SuperMap3D.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}`); }); -
-
addAll(options){Array.<ModelAnimation>}
-
为模型中的所有动画创建具有指定初始属性的动画并将它们添加到集合中。
这会为每个模型触发
ModelAnimationCollection#animationAdded事件,例如,UI可以保持同步。Name Type Description optionsobject 可选 具有以下属性的对象:
Name Type Default Description startTimeJulianDate 可选 开始播放动画的场景时间。当为
undefined时,动画在下一帧开始。delaynumber 0.0 可选 从
startTime到开始播放的延迟(以秒为单位)。只有当options.loop为 ModelAnimationLoop.NONE 时,这才会影响动画。stopTimeJulianDate 可选 停止播放动画的场景时间。当为
undefined时,动画播放其完整持续时间。removeOnStopboolean false 可选 当为
true时,动画在停止播放后被移除。只有当options.loop为 ModelAnimationLoop.NONE 时,这才会影响动画。multipliernumber 1.0 可选 大于
1.0的值增加动画相对于场景时钟速度的播放速度;小于1.0的值降低速度。reverseboolean false 可选 当为
true时,动画反向播放。loopModelAnimationLoop ModelAnimationLoop.NONE 可选 确定动画是否循环以及如何循环。
animationTimeModelAnimation.AnimationTimeCallback 可选 如果已定义,则计算所有动画的本地动画时间。
Throws:
-
-
动画未加载。等待
Model#ready返回true。 - Type
- DeveloperError
-
-
-
options.multiplier必须大于零。
- Type
- DeveloperError
-
Returns:
Type Description Array.<ModelAnimation> 一个 ModelAnimation对象数组,每个添加到集合中的动画对应一个。如果没有glTF动画,数组为空。Example
model.activeAnimations.addAll({ multiplier : 0.5, // 以半速播放 loop : SuperMap3D.ModelAnimationLoop.REPEAT // 循环动画 }); -
-
contains(runtimeAnimation){boolean}
-
确定此集合是否包含给定的动画。
Name Type Description runtimeAnimationModelAnimation 要检查的运行时动画。
Returns:
Type Description boolean 如果此集合包含动画则为 true,否则为false。 -
get(index){ModelAnimation}
-
返回集合中指定索引处的动画。索引从零开始, 并随着动画的添加而增加。移除动画会将其后面的所有动画向左移动, 改变它们的索引。此函数通常用于迭代集合中的所有动画。
Name Type Description indexnumber 动画的从零开始的索引。
Returns:
Type Description ModelAnimation 指定索引处的运行时动画。 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 runtimeAnimationModelAnimation 要移除的运行时动画。
Returns:
Type Description boolean 如果动画被移除则为 true;如果在集合中未找到动画则为false。Example
const a = model.activeAnimations.add({ name : 'animation name' }); model.activeAnimations.remove(a); // Returns true -
removeAll()
-
从集合中移除所有动画。
这会为每个动画触发
ModelAnimationCollection#animationRemoved事件, 例如,UI可以保持同步。