Пятница, 29 Ноября 2024, 17:15

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
SwordOfTruthДата: Вторник, 02 Ноября 2010, 10:15 | Сообщение # 1 | Тема: Нужна помощь при движении обьектов
был не раз
Сейчас нет на сайте
Управление клавиатурой:
1) в начале добавляешь слушателей событий

addEventListener(Event.ENTER_FRAME, enterFrame);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);

2) AS3 реагирует только на действие клавиш "нажать"/"отпустить", но он не запоминает уже нажатых клавиш, поэтому придётся его "научить" запоминать их. Создадим "булевые" (да/нет) переменные:

var left:Boolean = false;
var right:Boolean = false;
var up:Boolean = false;
var down:Boolean = false;

3) Теперь создадим функции для слушателей keyUp и keyDown.

function keyDown(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT) left = true;
else if(e.keyCode == Keyboard.RIGHT) right = true;
else if(e.keyCode == Keyboard.UP) up = true;
else if(e.keyCode == Keyboard.DOWN) down = true;

}
function keyUp(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT) left = false;
else if(e.keyCode == Keyboard.RIGHT) right = false;
else if(e.keyCode == Keyboard.UP) up = false;
else if(e.keyCode == Keyboard.DOWN) down = false;

}

Опишу логику, чтобы было понятно:
Если(код клавиши = клавиша влево) left = истина; иначе если(код клавиши = клавиша вправо) right = истина; иначе если(код клавиши = клавиша вверх) up = истина; иначе если(код клавиши = клавиша вниз) down= истина;
Для функции отжатой клавиши аналогично только, переменным присваивается значение false(ложь).

4) Теперь создаёшь функцию каждого кадра enterFrame и говоришь ей что делать если та или иная клавиша нажата. Допустим ты создал машину с "именем экземпляра" (во вкладке "свойства") : CAR. Тогда:

function enterFrame(e:Event):void
{

if(left){
CAR.x -= 5;
}
if(right){
CAR.x += 5;
}
if(up){
CAR.y -= 5;
}
if(down){
CAR.y += 5;
}

5) Чтобы твоя машина смотрела в сторону курсора (ыыыыыы smile ) надо добавить в функцию каждого кадра следующее:

function everFrame(e:Event):void
{
CAR.rotation = (Math.atan2(mouseY - CAR.y,mouseX - CAR.x) * 180) / Math.PI ;
}

Примечание:
1) "5" - это фактически скорость, можешь задать ей какой-либо переменной.
2) координата Х направлена вправо, Y вниз.
3) если хочешь использовать другие клавиши клавиатуры то нужно знать их код, узнать его можно так:

function keyDown(e:KeyboardEvent):void
{
trace(e.keyCode);
}

В строке вывода сообщение тебе выведется число (код клавиши), его засунешь в условия if(e.keyCode == 87) //87 - код клавиши W

4) Есть немного другие способы движения, более реалистичные: например изменять координату через угол поворота и с ускорением.
5) Советую посмотреть сайт easyflash.org там есть бесплатные видео-уроки по этому поводу.

Сообщение отредактировал SwordOfTruth - Вторник, 02 Ноября 2010, 10:21
SwordOfTruthДата: Пятница, 29 Октября 2010, 16:50 | Сообщение # 2 | Тема: AS3.Выполнение определённой функции
был не раз
Сейчас нет на сайте
Допустим есть какая-то функция FunctionX(). И допустим есть какое-то условие в теле основной функции(EnterFrame):
if (x>0){ВЫПОЛНИТЬ ФУНКЦИЮ FunctionX()}
Как это сделать?
_root.FunctionX();// не помогает :(

PS: странно что тема создалась дважды, я не давно зарегистрировался здесь, а e-mail не подтвердил, тему создал -> мне написали, что, мол, ошибка "подтвердите e-mail" . Я подтвердил e-mail и создал тему. В итоге их две ыыы как удалить не нашёл wacko

Сообщение отредактировал SwordOfTruth - Пятница, 29 Октября 2010, 16:53
SwordOfTruthДата: Пятница, 29 Октября 2010, 16:46 | Сообщение # 3 | Тема: AS3.Выполнение определённой функции
был не раз
Сейчас нет на сайте
Допустим есть какая-то функция FunctionX(). И допустим есть какое-то условие в теле основной функции(EnterFrame):
if (x>0){ВЫПОЛНИТЬ ФУНКЦИЮ FunctionX()}
Как это сделать?
_root.FunctionX();// не помогает :(
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг