Здравствуйте, товарищи)
Я, наконец-то написал НОРМАЛЬНО ЕЗДЯЩИЙ танчик!!)
И теперь хочу сделать так, чтобы его ускорение было плавным) Мне в голову пришла идея (быть может она и абсурдна немного): осуществить анимацию посредством цикла for и таймера.
Суть в том, что в цикле переменная i будет отвечать за скорость объекта (она постоянно увеличивается, так что будет и ускорение). А в конце цикла можно поставить таймер, например на 100 мс, чтобы ускорение было не мгновенным. Ограничение скорости будет задаваться в цикле for.
Ниже представлен мой код:

Код AS3:
package {
import flash.display.*;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
public class Tank extends MovieClip {
private var moveFlag:Boolean=false;
private var move:String;
public function Tank() {
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
}
function onKeyDown(e:KeyboardEvent):void {
trace(e.keyCode + " x=" + this.x + " y=" + this.y);
if (! moveFlag) {
moveFlag=true;
if (e.keyCode==37) {
move="left";
} else if (e.keyCode == 39) {
move="right";
} else if (e.keyCode == 38) {
move="up";
} else if (e.keyCode == 40) {
move="down";
}
this.addEventListener(Event.ENTER_FRAME, handler_enterFrame);
this.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
}
function handler_enterFrame(e:Event):void { /*в этой функции представлены условия движения в стороны*/
if (move==="left") {
this.rotation=270;
this.x-=5;
} else if (move === "right") {
this.rotation=90;
this.x+=5;
} else if (move === "up") {
this.rotation=0;
this.y-=5;
} else if (move === "down") {
this.rotation=180;
this.y+=5;
}
}
private function onKeyUp(e:KeyboardEvent):void {
this.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
this.removeEventListener(Event.ENTER_FRAME, handler_enterFrame);
moveFlag=false;
}
}
}
Но, я работал только с простыми таймерами, которые представлены в Муке. С ними все получается. Но здесь, похоже нужно делать вложенные функции.. Помогите мне пожалуйста реализовать мою задумку
Заранее спасибо Вам)