Цитата:
Сообщение от zurkis
ты не жди пока тебе ответят, пробуй сам разбираться, а будет ответ тогда и применяй к себе
|
я так и делаю.
И вот спустя 24 часа с красными глазами и не полностью функционированием мозга я пришёл к такому решению, сделать всё это за счёт скорости. Типа как "Мук" пишет "Анимация построенная на скорости" Вот теперь появилась другая проблема, как это реализовать?
Вот собственно и сама идея:
Есть объект на сцене (Box), заставляю его вдвигаться по оси "y" с интервалом установленным в "Timer" т.е. сам таймер и сдвигает объект по оси "y". Чего добиться хочу я:
нажали клавишу, "Вох" рванул с интервалом в "20" после, интервал медленно увеличивается до "100" что и заставляет объект плавно снижать скорость. Естественно если достигли нужного нам интервала, выключаем "таймер" или попросту перестаём сдвигать объект. Т.е. я так понял что моя проблема была не в отклике клавиш а в плавности объекта. Если кто знаком с таким методом, может поделитесь, а то я себе уже всю голову взорвал.
Добавлю, пока скорость объекта плавно достигает нуля, у нас как раз остаётся время на обработку следующих событий.
Есть ещё вопрос, если кто делал игры основаны на скорости: Какое количество кадров вы выставляете или обновляете экран после каждого действия?
Добавлено через 8 минут
Цитата:
Сообщение от gr_crd
Вот решение:
 Код AS3:
// эти 4 логические переменные укажут, нажата ли сейчас определенная клавиша
// влево, вправо, вверх, вниз
var leftIsDown:Boolean=false;
var rightIsDown:Boolean=false;
var upIsDown:Boolean=false;
var downIsDown:Boolean=false;
//.......... .......... ............. .........
}
Эти логические переменные по сути и есть флаги.
Как пользователь нажал кнопку - ставим - нажато.
Как только отпустил - не нажато.
И при EnterFrame проверяем переменную - если нажато - движение.
И не будет никаких "заиканий", потомучто они возникают только если вешать движение на событие клавиатуры. В вашем коде причина именно в этом, т.к. он не может грузить процессор на 100+%
|
По сути я привёл тот же пример, но всё равно спс.
НАРОД!!! ПРОШУ, НЕ ОСТАВЛЯЙТЕ ЭТУ ТЕМУ!! Очень важно её правильное решение, это будет полезно всем!
Добавлено через 39 минут
Вот привожу малость от своей идеи. При нажатие на "stage" указателем мыши объект ускоряется. Помогите додумать плавное поведение объекта. Не отрицаю, ещё немного и я сам додумаю, просто уже на столько измотался, ппц.
Игра уже почти готова, а мозгов не осталось.

Код AS3:
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class Main extends Sprite {
private var f:int = 100;
private var n:int = 0;
private var time:Timer;
private var Box:Sprite;
public function Main() {
time = new Timer(2, 0);
time.addEventListener(TimerEvent.TIMER, timerBox);
time.start();
stage.addEventListener(MouseEvent.MOUSE_DOWN, speedBox);
Box = new Sprite();
Box.graphics.lineStyle(1);
Box.graphics.beginFill(0x0000ff, 1);
Box.graphics.drawRect(100, 0, 50, 50);
addChild(Box);
}
private function speedBox(e:MouseEvent):int {
f = f - 10;
return f;
}
private function timerBox(e:TimerEvent):void {
n++;
if (n >= f){
if (Box.y == 150) {
Box.y = 0;
n = 0;
} else {
Box.y ++;
n = 0;
}
}
}
}
}
Добавлено через 47 минут
Придумал вот такую вставку, а вот как правильно её использовать? эх...

Код AS3:
if (f >= 100) {
f = 100;
} else {
f = f + 5;
}
return f;