Non-linear camera movement
How to move the camera using a custom-defined function for the speed
When calling wade.moveCamera, you can use a constant for the speed, but you can also use a function. This function is passed the distance to the target, and returns a number, that is the speed to use for the camera movement.
App = function()
{
var zoomIn = true;
this.load = function()
{
wade.loadImage('/snippets/samples/back.jpg');
wade.loadImage('/snippets/samples/cc_logo.png');
};
this.init = function()
{
// create 2 objects and add them to the scene
var background = new SceneObject(new Sprite('/snippets/samples/back.jpg'));
wade.addSceneObject(background);
var logo = new SceneObject(new Sprite('/snippets/samples/cc_logo.png'));
wade.addSceneObject(logo);
// tell wade to move the camera again when it's finished moving
this.onCameraMoveComplete = this.moveCamera;
// start moving the camera
this.moveCamera();
};
this.moveCamera = function()
{
// choose a target
var target = zoomIn? {x: (Math.random() - 0.5) * 200, y: (Math.random() - 0.5) * 150, z: Math.random() * 5} : {x:0, y: 0, z: 1};
// move camera towards target, using a function to calculate its speed based on the distance to our target
wade.moveCamera(target, function(distance)
{
return Math.max(distance, 5);
});
};
};
Your code was executed successfully!