Replace ol.animation.createSpin with ol.animation.createRotateFrom

This commit is contained in:
Frederic Junod
2013-02-06 17:10:21 +01:00
parent 3692918ed7
commit 3355f9345d
4 changed files with 29 additions and 27 deletions
+16 -16
View File
@@ -140,12 +140,12 @@ keyboardInteraction.addCallback('L', function() {
start: start, start: start,
duration: duration duration: duration
}); });
var spin = ol.animation.createSpin({ var rotateFrom = ol.animation.createRotateFrom({
turns: 2, rotation: 4 * Math.PI,
start: start, start: start,
duration: duration duration: duration
}); });
var preRenderFunctions = [bounce, panFrom, spin]; var preRenderFunctions = [bounce, panFrom, rotateFrom];
domMap.addPreRenderFunctions(preRenderFunctions); domMap.addPreRenderFunctions(preRenderFunctions);
webglMap.addPreRenderFunctions(preRenderFunctions); webglMap.addPreRenderFunctions(preRenderFunctions);
canvasMap.addPreRenderFunctions(preRenderFunctions); canvasMap.addPreRenderFunctions(preRenderFunctions);
@@ -175,12 +175,12 @@ keyboardInteraction.addCallback('M', function() {
start: start, start: start,
duration: duration duration: duration
}); });
var spin = ol.animation.createSpin({ var rotateFrom = ol.animation.createRotateFrom({
turns: -2, rotation: -4 * Math.PI,
start: start, start: start,
duration: duration duration: duration
}); });
var preRenderFunctions = [bounce, panFrom, spin]; var preRenderFunctions = [bounce, panFrom, rotateFrom];
domMap.addPreRenderFunctions(preRenderFunctions); domMap.addPreRenderFunctions(preRenderFunctions);
webglMap.addPreRenderFunctions(preRenderFunctions); webglMap.addPreRenderFunctions(preRenderFunctions);
canvasMap.addPreRenderFunctions(preRenderFunctions); canvasMap.addPreRenderFunctions(preRenderFunctions);
@@ -206,21 +206,21 @@ keyboardInteraction.addCallback('vV', function() {
layer.setVisible(!layer.getVisible()); layer.setVisible(!layer.getVisible());
}); });
keyboardInteraction.addCallback('x', function() { keyboardInteraction.addCallback('x', function() {
var spin = ol.animation.createSpin({ var rotateFrom = ol.animation.createRotateFrom({
turns: 2, rotation: 4 * Math.PI,
duration: 2000 duration: 2000
}); });
domMap.addPreRenderFunction(spin); domMap.addPreRenderFunction(rotateFrom);
webglMap.addPreRenderFunction(spin); webglMap.addPreRenderFunction(rotateFrom);
canvasMap.addPreRenderFunction(spin); canvasMap.addPreRenderFunction(rotateFrom);
}); });
keyboardInteraction.addCallback('X', function() { keyboardInteraction.addCallback('X', function() {
var spin = ol.animation.createSpin({ var rotateFrom = ol.animation.createRotateFrom({
turns: -2, rotation: -4 * Math.PI,
duration: 2000 duration: 2000
}); });
domMap.addPreRenderFunction(spin); domMap.addPreRenderFunction(rotateFrom);
webglMap.addPreRenderFunction(spin); webglMap.addPreRenderFunction(rotateFrom);
canvasMap.addPreRenderFunction(spin); canvasMap.addPreRenderFunction(rotateFrom);
}); });
domMap.getInteractions().push(keyboardInteraction); domMap.getInteractions().push(keyboardInteraction);
+5 -5
View File
@@ -38,11 +38,11 @@
@exportObjectLiteralProperty ol.animation.PanFromOptions.duration number|undefined @exportObjectLiteralProperty ol.animation.PanFromOptions.duration number|undefined
@exportObjectLiteralProperty ol.animation.PanFromOptions.easing function(number):number|undefined @exportObjectLiteralProperty ol.animation.PanFromOptions.easing function(number):number|undefined
@exportObjectLiteral ol.animation.SpinOptions @exportObjectLiteral ol.animation.RotateFromOptions
@exportObjectLiteralProperty ol.animation.SpinOptions.turns number @exportObjectLiteralProperty ol.animation.RotateFromOptions.rotation number
@exportObjectLiteralProperty ol.animation.SpinOptions.start number|undefined @exportObjectLiteralProperty ol.animation.RotateFromOptions.start number|undefined
@exportObjectLiteralProperty ol.animation.SpinOptions.duration number|undefined @exportObjectLiteralProperty ol.animation.RotateFromOptions.duration number|undefined
@exportObjectLiteralProperty ol.animation.SpinOptions.easing function(number):number|undefined @exportObjectLiteralProperty ol.animation.RotateFromOptions.easing function(number):number|undefined
@exportObjectLiteral ol.animation.ZoomFromOptions @exportObjectLiteral ol.animation.ZoomFromOptions
@exportObjectLiteralProperty ol.animation.ZoomFromOptions.resolution number @exportObjectLiteralProperty ol.animation.ZoomFromOptions.resolution number
+1 -1
View File
@@ -1,4 +1,4 @@
@exportSymbol ol.animation @exportSymbol ol.animation
@exportProperty ol.animation.createBounce @exportProperty ol.animation.createBounce
@exportProperty ol.animation.createPanFrom @exportProperty ol.animation.createPanFrom
@exportProperty ol.animation.createSpin @exportProperty ol.animation.createRotateFrom
+7 -5
View File
@@ -71,15 +71,15 @@ ol.animation.createPanFrom = function(options) {
/** /**
* @param {ol.animation.SpinOptions} options Options. * @param {ol.animation.RotateFromOptions} options Options.
* @return {ol.PreRenderFunction} Pre-render function. * @return {ol.PreRenderFunction} Pre-render function.
*/ */
ol.animation.createSpin = function(options) { ol.animation.createRotateFrom = function(options) {
var sourceRotation = options.rotation;
var start = goog.isDef(options.start) ? options.start : goog.now(); var start = goog.isDef(options.start) ? options.start : goog.now();
var duration = goog.isDef(options.duration) ? options.duration : 1000; var duration = goog.isDef(options.duration) ? options.duration : 1000;
var easing = goog.isDef(options.easing) ? var easing = goog.isDef(options.easing) ?
options.easing : goog.fx.easing.inAndOut; options.easing : goog.fx.easing.inAndOut;
var deltaTheta = 2 * options.turns * Math.PI;
return function(map, frameState) { return function(map, frameState) {
if (frameState.time < start) { if (frameState.time < start) {
@@ -87,9 +87,11 @@ ol.animation.createSpin = function(options) {
frameState.viewHints[ol.ViewHint.ANIMATING] += 1; frameState.viewHints[ol.ViewHint.ANIMATING] += 1;
return true; return true;
} else if (frameState.time < start + duration) { } else if (frameState.time < start + duration) {
var delta = easing((frameState.time - start) / duration); var delta = 1 - easing((frameState.time - start) / duration);
var deltaRotation =
sourceRotation - frameState.view2DState.rotation;
frameState.animate = true; frameState.animate = true;
frameState.view2DState.rotation += delta * deltaTheta; frameState.view2DState.rotation += delta * deltaRotation;
frameState.viewHints[ol.ViewHint.ANIMATING] += 1; frameState.viewHints[ol.ViewHint.ANIMATING] += 1;
return true; return true;
} else { } else {