ActionScript Code:
MovieClip.prototype.bump = function(x,y,radius,force){
for(z in this){
var distx = this[z]._x - x;
var disty = this[z]._y - y;
var distance=Math.sqrt(distx*distx + disty*disty);
if(distance==0) distance=1;
var cos = distx/distance;
var sin = disty/distance;
if(distance<radius)
{
this[z]._x += force*cos*(radius-distance);
this[z]._y += force*sin*(radius-distance);
}
}
}
Par exemple: pour un clip nommé 'test' avec plein de carrés alignés dedans (pour bien voir l'effet) je mets:
ActionScript Code:
_root.test.bump(0,0,200,0.3);
Une petite précision: les coordonnées x et y du centre de la lentille sont exprimées dans le clip, pas dans le root, de ce fait la position de 'test' importe peu, la distortion est toujours la même.
Tuto par Damien