Показать сообщение отдельно
Старый 18.07.2007, 13:39
goarcade вне форума Посмотреть профиль Отправить личное сообщение для goarcade Найти все сообщения от goarcade
  № 6  
Ответить с цитированием
goarcade

Регистрация: Sep 2006
Сообщений: 32
мне кажется, этот вариант реализации тоже подойдет:
Код:
createEmptyMovieClip("korablik",0);
korablik.beginFill(0xcccccc,100);
drawRect(korablik,-10,-5,20,10);
korablik.endFill();

createEmptyMovieClip("target",1);
target.beginFill(0xcc0000,100);
drawRect(target,-2,-2,4,4);
target.endFill();

korablik._x=100
korablik._y=100

function onMouseDown() {
	target._x = _xmouse;
	target._y = _ymouse;
	onEnterFrame = function () {
		goto(korablik,target._x,target._y,0.2,4)
	};
}
function goto(mc:MovieClip, gotoX:Number, gotoY:Number, w:Number, speed:Number) {
	var nx:Number = Math.cos(mc._rotation*Math.PI/180);
	var ny:Number = Math.sin(mc._rotation*Math.PI/180);
	var dx:Number = gotoX-mc._x;
	var dy:Number = gotoY-mc._y;
	//находим угол, между направлением мувика и точки{gotoX,gotoY}
	var theta:Number = Math.atan2(nx*dy-ny*dx, nx*dx+ny*dy);
	//w - коэффициент вращения от 0 до 1
	mc._rotation += w*theta*180/Math.PI;
	mc._x += nx*speed;
	mc._y += ny*speed;
}
function drawRect(mc:MovieClip,x:Number,y:Number,w:Number,h:Number)
{
	mc.moveTo(x  ,y  );
	mc.lineTo(x+w,y  );
	mc.lineTo(x+w,y+h);
	mc.lineTo(x  ,y+h);
	mc.lineTo(x  ,y  );
}