Код AS3:
package {
import flash.text.*;
import flash.events.*;
import flash.ui.*;
import flash.utils.Timer;
import flash.display.*;
public class main_game extends MovieClip {
public var manX, manY : int;
public var speed = 3;
//---------------------------------------
public function main_game() {
dude.stop();
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
//----------------------------------------
private function onAddedToStage(event:Event) {
this.stage.stageFocusRect = false;
stage.focus = this;
stage.addEventListener(MouseEvent.CLICK, onClick);
}
//-------------------------
//-----------------------------------------------
function onClick(e:MouseEvent) { //нажатие кнопки - запомнили
dude.stop();
manX = e.stageX;
manY = e.stageY; //запомнила координаты
stage.addEventListener(Event.ENTER_FRAME, render);
}
//--------------------------------------------------
//-----------------------------------------------
function render(e:Event) { //
//************
var moires1 = [0, 22.6, 66.6, 111.6, 156.6, 202.6, 247.6, 294.6];
var moires2 = [22.5, 66.5, 111.5, 156.5, 202.5, 247.5, 294.5, 340.5];
var radians = - Math.atan2(dude.y-manY, dude.x-manX);
var degrees = radians*180/Math.PI+180;
//trace (degrees);
var angle = 1;
var destX, destY :int;
var a: String;
for (var i=0; i<=moires1.length; ++i) {
if (degrees>=moires1[i] && degrees<=moires2[i]) {angle = i}
else if (degrees>340.5 && degrees<=360) {angle = 0 }
}
var j = 0;
var offsetX = manX - dude.x;
var offsetY = manY - dude.y;
if (offsetX > 0) {destX = 1} else {destX = -1} //направление + или -
if (offsetY > 0) {destY = 1} else {destY = -1}
//
graphics.lineStyle(0, 0);
graphics.moveTo(dude.x, dude.y);
graphics.lineTo(manX, manY);
//
/*trace("____________")
trace("x=",dude.x, "mx=",manX, "offsetX = ", offsetX);
trace("y=",dude.y, "mx=",manY, "offsety = ", offsetY);
trace("____________")*/
a = angle + "1";
//trace(a);
if (Math.abs(offsetX) > speed) {
dude.gotoAndPlay(a);
dude.play();
/*if (dude.currentLabel.charAt(1) == "7") {
dude.gotoAndPlay(a);
dude.play();
}*/
//trace(dude.currentLabel);
dude.x = dude.x + speed * destX; //переместили
offsetX = offsetX - speed * destX;
}
if (Math.abs(offsetY)> speed) {
dude.play();
dude.y = dude.y + speed * destY;
offsetY = offsetY - speed * destY;
}
//stage.removeEventListener(Event.ENTER_FRAME, render);
}
//--------------------------------------------------
}
}
Вот весь класс, он один
|