Sie können Illusion verwenden, um einen schönen Splat-Effekt zu erzeugen.
Da Objekte sich "vergrößern", wenn sie sich nähern, können Sie eine zunehmende Größe plus eine leichte Bewegung animieren, um Ihren Splat-Effekt zu erstellen.
Sie können context.drawImage verwenden, um die Größenänderung zu handhaben:
context.drawImage(splashImg, 0 ,0, splashImg.width, splashImg.height,
newX, newY, newWidth, newHeight);
Hier ist der Code und ein Fiddle: http://jsfiddle.net/m1erickson/r8Grf/
body{ background-color: ivory; }
canvas{border:1px solid red;}
$(function(){
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
window.requestAnimFrame = (function(callback) {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
$("go").html("Wird geladen...");
var count=80;
var win=new Image();
var splash;
win.onload=function(){
splash=new Image();
splash.onload=function(){
ctx.drawImage(win,0,0);
}
splash.src="http://dl.dropbox.com/u/139992952/splash2.svg";
}
win.src="http://dl.dropbox.com/u/139992952/window.png";
$("#go").click(function(){ count=80; animate(); });
function animate() {
// Zeichnungen
if(--count>1){
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.drawImage(win,0,0);
ctx.globalCompositeOperation = 'destination-over';
ctx.drawImage(splash,0,0,splash.width,splash.height,25,25,splash.width/count,splash.height/count);
ctx.restore();
}
// neuer Frame anfordern
requestAnimFrame(function() {
animate();
});
}
}); // Ende $(function(){});
Splatzen!