
Код AS3:
private function moveCar(e:MouseEvent):void
{
if (isDown == false) return;
if ((car.x >= _pointers[i].x - 1 && car.x <= _pointers[i].x + 1) || (car.y >= _pointers[i].y - 1 && car.y <= _pointers[i].y + 1))
{
i++;
}
dx = _pointers[i].x - _pointers[i -1].x;
dy = _pointers[i].y - _pointers[i -1].y;
radians = Math.atan2(dy, dx);
rotatePlayer();
var k:Number = dy/dx;
// trace (k);
var mX:Number = stage.mouseX;
var mY:Number = stage.mouseY;
var b:Number = findB (k, car.x, car.y);
// trace (b);
var XX:Number = findX (b, k);
var YY:Number = findY (b, k, XX);
car.x = XX;
car.y = YY;
trace (car.x);
trace (car.y);
trace ('============');
}
private function rotatePlayer():void
{
var degrees:Number = radians * 180/Math.PI +90;
car.rotation = degrees;
}
public function findB(k1:Number,px1:Number,py1:Number):Number
{
return py1-k1*px1;
}
public function findX(b1:Number,k1:Number):Number
{
return ((stage.mouseY+(1/k1)*stage.mouseX)-b1)/(k1+1/k1);
}
public function findY(b1:Number,k1:Number,x:Number):Number
{
return k1*x+b1;
}