new Cesium.ModelAnimationCollection()
模型动画的集合。使用
Model#activeAnimations
进行访问。
成员变量
animationAdded : Event
将动画添加到集合时触发的事件。例如,这可以用于保持UI同步。
-
Default Value:
new Event()
示例:
model.activeAnimations.animationAdded.addEventListener(function(model, animation) {
console.log('Animation added: ' + animation.name);
});
animationRemoved : Event
从集合中移除动画时引发的事件。例如,这可以用于保持UI同步。
-
Default Value:
new Event()
示例:
model.activeAnimations.animationRemoved.addEventListener(function(model, animation) {
console.log('Animation removed: ' + animation.name);
});
集合中动画的数量。
内置方法
创建具有指定初始属性的动画并将其添加到集合中。
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
具有下列属性的对象:
|
返回值:
返回添加到集合中的动画。
异常情况:
-
DeveloperError : 动画没有被加载,等待
Model#readyPromise
完成。 -
DeveloperError : options.name 必须是一个有效的动画名称。
-
DeveloperError : options.index 必须是有效的动画索引。
-
DeveloperError : options.name 或者 options.index必须定义其中一个。
-
DeveloperError : options.multiplier 必须大于0。
示例:
// 例1:按名称添加动画
model.activeAnimations.add({
name : 'animation name'
});
// 例2:按索引添加动画
model.activeAnimations.add({
index : 0
});
// 例3:添加动画并提供所有属性和事件
var startTime = Cesium.JulianDate.now();
var animation = model.activeAnimations.add({
name : 'another animation name',
startTime : startTime,
delay : 0.0, // 在startTime时播放 (默认的)
stopTime : Cesium.JulianDate.addSeconds(startTime, 4.0, new Cesium.JulianDate()),
removeOnStop : false, // 动画停止时不移除(默认的)
multiplier : 2.0, // 2倍速播放
reverse : true, // 反向播放
loop : Cesium.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);
});
为模型中的每个动画创建并将具有指定初始属性的动画添加到集合中。
这将引发每个模型的ModelAnimationCollection#animationAdded
事件。
Name | Type | Description | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
optional
具有下列属性的对象:
|
返回值:
ModelAnimation
对象的数组,每个对象对应一个添加到集合中的动画。如果没有glTF动画,则数组为空。
异常情况:
-
DeveloperError : 动画没有被加载,等待
Model#readyPromise
完成。 -
DeveloperError : options.multiplier 必须大于0。
示例:
model.activeAnimations.addAll({
multiplier : 0.5, // 半速播放
loop : Cesium.ModelAnimationLoop.REPEAT // 循环的动画
});
确定此集合是否包含给定的动画。
Name | Type | Description |
---|---|---|
animation |
ModelAnimation | 要查找的动画。 |
返回值:
如果集合中包含该动画,返回true。
返回指定索引处的动画,此函数通常用于遍历集合中的所有动画。
Name | Type | Description |
---|---|---|
index |
Number | 动画的索引。 |
返回值:
返回该索引处的动画。
示例:
// 输出集合中所有动画的名称。
var animations = model.activeAnimations;
var length = animations.length;
for (var i = 0; i < length; ++i) {
console.log(animations.get(i).name);
}
从集合中移除一个动画。
这将引发ModelAnimationCollection#animationremove
事件。
通过将ModelAnimation#removeOnStop
设置为true
>,也可以隐式地从集合中删除动画,
当动画被移除时,ModelAnimationCollection#animationremove
事件仍然被触发。
Name | Type | Description |
---|---|---|
animation |
ModelAnimation | 将要被移除的动画。 |
返回值:
移除成功返回true,如果在集合中没有找到该动画返回false。
示例:
var a = model.activeAnimations.add({
name : 'animation name'
});
model.activeAnimations.remove(a); // 返回true
removeAll()
从集合中移除所有动画。
这将为每个对象引发animationremove
事件。