I'm trying to use
view.watch ("finished", function(){
console.log ("animation finished")
});
once I get something like this working. I have created an array of cameras to create a series of animateTo animations s to so a multiple part fly through using a loop.
Currently I can't get them to play in sequence as I loop through the camera array
Thanks for any help
Probably because they are asynchronous calls. You may call them in order of 1, 2, 3, but 2 could return before 1.
Hi Rex,
you can totally do this. I set up a example here: Chaining animations
var cameras = [
{
"position": {
"x": 860866.9791700585,
"y": 5776206.000594208,
"spatialReference": {
"wkid": 102100,
"latestWkid": 3857
},
"z": 5182.999999999069
},
"heading": 270.0000000089171,
"tilt": 79.9999999867539
},
{
"position": {
"x": 852082.9255940468,
"y": 5784990.056948395,
"spatialReference": {
"wkid": 102100,
"latestWkid": 3857
},
"z": 5182.999999997206
},
"heading": 180,
"tilt": 79.9999999681663
},
{
"position": {
"x": 843580.3118266261,
"y": 5776487.440662808,
"spatialReference": {
"wkid": 102100,
"latestWkid": 3857
},
"z": 5182.999999997206
},
"heading": 90.00000000865207,
"tilt": 79.99999998165575
},
{
"position": {
"x": 852039.3825317192,
"y": 5767378.401137406,
"spatialReference": {
"wkid": 102100
},
"z": 5182.999999999069
},
"heading": 359.99999914622634,
"tilt": 79.99999998987897
}
].map(Camera.fromJSON);
var delay = function(delay) {
var deferred = new Deferred();
setTimeout(function() {
deferred.resolve();
});
return deferred.promise;
};
window.animateCamera = function() {
var timeline = cameras.concat();
var next = function() {
var camera = timeline.shift();
if (camera) {
return view.animateTo(camera).then(next);
}
}
var animation = promiseUtils.resolve()
.then(function() { return delay(500); })
.then(next);
animation.then(function() {
console.log("animation finished done");
});
};
var logProperty = function(newValue, oldValue, prop) {
var oldValueString = (oldValue && typeof oldValue === "object") ? "[object]" : oldValue;
var newValueString = (newValue && typeof newValue === "object") ? "[object]" : newValue;
console.log(prop + " changed from " + oldValueString + " to " + newValueString);
};
view.watch("stationary, animation, interacting", logProperty)
Have fun!