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.index 是undefined ,則必須定義。
|
options.index
Number
|
標識動畫的GLTF動畫索引。如果options.name 是undefined ,則必須定義。
|
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
-
DeveloperError : 未加載動畫。等待
Model#readyPromise
解決。 -
DeveloperError : options.name必須是有效的動畫名稱。
-
DeveloperError : options.index必須是有效的動畫索引。
-
DeveloperError : 必須定義options.name或options.index。
-
DeveloperError : options.multipler必須大于零。
為模型中的每個動畫創建具有指定初始屬性的動畫并將其添加到集合中。
這會引發每個模型的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
-
DeveloperError : 未加載動畫。等待
Model#readyPromise
解決。 -
DeveloperError : options.multipler必須大于零。
確定此集合是否包含給定的動畫。
Parameters:
返回集合中指定索引處的動畫。索引是基于零的,并且隨著動畫的添加而增加。刪除動畫后,所有動畫都會向左移動,從而更改其索引。此函數通常用于迭代集合中的所有動畫。
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);
}
從集合中刪除動畫。
這將引發ModelAnimationCollection#animationRemoved
事件,例如,UI可以保持同步。
通過將ModelAnimation#removeOnStop
設置為true
也可以從集合中隱式刪除動畫。移除動畫時,ModelAnimationCollection#animationRemoved
事件仍將被觸發。
Parameters:
Example
var a = model.activeAnimations.add({
name : 'animation name'
});
model.activeAnimations.remove(a); // Returns true
從集合中刪除所有動畫。
這會為每個動畫引發ModelAnimationCollection#animationRemoved
事件,例如,用戶界面可以保持同步。