1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| class RealTrace
{
static var whatForm:Number=new Number(0);
private var draw:MovieClip;
private var i:Number;
private var pointx:Array;
private var pointy:Array;
private var intervalID:Number;
private var speed:Number;//vitesse de "rafraichissement"
private var delta:Number;//pas d'incrementation : precission
private var angle:Number;
private var module:Number;
private var raiseModule:Number;
function RealTrace(mc:MovieClip)
{
i=0;
speed=10;
delta=1;
pointx=new Array(200,300,350,300,200,100,50,100,200);
pointy=new Array(350,300,200,100,50,100,200,300,350);
draw=mc.createEmptyMovieClip("draw"+whatForm, mc.getNextHighestDepth());
whatForm++;
// bug sous flash playeur 7 gnu/linux
// draw.beginFill(0x443322, 100);
draw.lineStyle(1, 0x00ff00, 100);
draw.moveTo(pointx[0], pointy[0]);
}
function traceLine()
{
var p1x:Number=new Number(pointx[i]);
var p1y:Number=new Number(pointy[i]);
var p2x:Number=new Number(pointx[i+1]);
var p2y:Number=new Number(pointy[i+1]);
var px:Number=new Number(p2x-p1x);
var py:Number=new Number(p2y-p1y);
module=Math.sqrt(px*px+py*py);
if(py==0)
angle=Math.acos(px/module);
else
angle=Math.acos(px/module)*py/Math.abs(py);
raiseModule=0;
intervalID=setInterval(this, "raiseLine", speed);
}
function raiseLine()
{
raiseModule=raiseModule+delta;
if(raiseModule>module)
{
i++;
draw.lineTo(pointx[i],pointy[i]);
clearInterval(intervalID);
if(i<(pointx.length-1))
traceLine();
// bug sous flash playeur 7 gnu/linux
/* else
draw.endFill();
*/
}
else
{
draw.lineTo(raiseModule*Math.cos(angle)+pointx[i],raiseModule*Math.sin(angle)+pointy[i]);
}
}
} |
Partager