PDA

Просмотр полной версии : управление разворотом


SDS
16.06.2011, 20:15
Приветствую! Я конкретный новичек в этом. Делаю не большую игрушку. Не могу реализовать такое: Стоит герой на клавиатуре нажимается кнопка, герой поворачивается вправо. Затем на клавиатуре нажимается опять эта же кнопка и он поворачивается влево (т.е _xscale = 70 и _xscale = -70) Спасибо.

mooncar
16.06.2011, 21:03
То есть "поворачивается" - это зеркальное отражение?
Добавляете слушаетля клавиатуры, определяете обработчик событий нажатия, в нем проверяете код нажатой клавиши и в зависимости от него делаете этот разворот для нужного мувика.
В хелпе есть примеры работы у клавиатурой.

SDS
17.06.2011, 00:24
Да, зеркальное отражение. Вот про слушателя клавиатуры я бы послушал) Можно примерчик? А с переменными можно как нибудь ? . И еще где "хелп"? это где "ЧАВО"?

mooncar
17.06.2011, 01:13
Жметe F1 в прграмме Adobe Flash, переходите к AS2 Language Reference, далее класс Key.
Тут вам и синтаксис, и примеры.

PS. Потрудитесь разобраться, как пользоваться хелпом, это половина успеха в работе с флешем.

PPS. Слушатель - это тоже "переменная", класса Object.

vivado
17.06.2011, 11:33
Приветствую! Я конкретный новичек в этом. Делаю не большую игрушку. Не могу реализовать такое: Стоит герой на клавиатуре нажимается кнопка, герой поворачивается вправо. Затем на клавиатуре нажимается опять эта же кнопка и он поворачивается влево (т.е _xscale = 70 и _xscale = -70) Спасибо.

Вот в ооочень давно делал. Вроде все доступно описано.
Поворот персонажа (http://blogs.mail.ru/bk/vivado/E5BF9A81FEAE762.html)

mooncar
17.06.2011, 11:49
vivado, нежелательно учить новичков неправильным вещам - записи кода на объектах.

vivado
17.06.2011, 12:04
vivado, нежелательно учить новичков неправильным вещам - записи кода на объектах.

Яж предупредил что ооочень давно делал еще на Macromedia Flash 5, если глянешь код то там еще tellTarget присутствует ))) Кстати а что плохого если он на мувик перса повесит код, подумаешь раньше все так делали пока AS 3.0 не появился, вот тогда то и пошла мода все в одном кадре писать.
А вы хоть бы чем новичкам помогли ток критикуете. Самое простое сделать так...

Например для игры с видом сверху
SDS создай мувик со своим персонажем повернутым наверх и повесь на этот мувик код


onClipEvent (load){
speed = 7; // Скорость объекта
}

onClipEvent (enterFrame) //для каждого кадра
{
if (Key.isDown(Key.LEFT)) { //При нажатии кнопки НАЛЕВО
_x -= speed;
_rotation = 270; //Поворот объекта

}
if (Key.isDown(Key.RIGHT)) { //При нажатии кнопки НАПРАВО
_x += speed; //Изменение скорости
_rotation = 90; //Поворот объекта
}
if (Key.isDown(Key.UP)) { //ПРИ нажатии кнопки ВВЕРЖ
_y -= speed; //Изменение скорости
_rotation = 0; //Поворот объекта
}
if (Key.isDown(Key.DOWN)) { //При нажатии кнопки ВНИЗ
_y += speed; //Изменение скорости
_rotation = 180; //Поворот объекта
}
//Проверка на нажатие двух клавиш сразу
//и присваивание поворота в нужную сторону
if (Key.isDown(Key.LEFT) && Key.isDown(Key.UP))
{_rotation = 315;}
if (Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN))
{_rotation = 215;}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN))
{_rotation = 135;}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.UP))
{_rotation = 45;}
}


Можно сделать и по другому, писать весь код в одном кадре и не вешать на отдельные объекты, но для начала можно и так...

SDS
17.06.2011, 19:07
Вот в ооочень давно делал. Вроде все доступно описано.
Поворот персонажа (http://blogs.mail.ru/bk/vivado/E5BF9A81FEAE762.html)
Спасибо, но это не то) надо чтобы именно мувик поворачивался зеркально по одной и той же клавише, по двум могу сделать а как по одной нет)

Добавлено через 2 минуты
Яж предупредил что ооочень давно делал еще на Macromedia Flash 5, если глянешь код то там еще tellTarget присутствует ))) Кстати а что плохого если он на мувик перса повесит код, подумаешь раньше все так делали пока AS 3.0 не появился, вот тогда то и пошла мода все в одном кадре писать.
А вы хоть бы чем новичкам помогли ток критикуете. Самое простое сделать так...

Например для игры с видом сверху
SDS создай мувик со своим персонажем повернутым наверх и повесь на этот мувик код


onClipEvent (load){
speed = 7; // Скорость объекта
}

onClipEvent (enterFrame) //для каждого кадра
{
if (Key.isDown(Key.LEFT)) { //При нажатии кнопки НАЛЕВО
_x -= speed;
_rotation = 270; //Поворот объекта

}
if (Key.isDown(Key.RIGHT)) { //При нажатии кнопки НАПРАВО
_x += speed; //Изменение скорости
_rotation = 90; //Поворот объекта
}
if (Key.isDown(Key.UP)) { //ПРИ нажатии кнопки ВВЕРЖ
_y -= speed; //Изменение скорости
_rotation = 0; //Поворот объекта
}
if (Key.isDown(Key.DOWN)) { //При нажатии кнопки ВНИЗ
_y += speed; //Изменение скорости
_rotation = 180; //Поворот объекта
}
//Проверка на нажатие двух клавиш сразу
//и присваивание поворота в нужную сторону
if (Key.isDown(Key.LEFT) && Key.isDown(Key.UP))
{_rotation = 315;}
if (Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN))
{_rotation = 215;}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN))
{_rotation = 135;}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.UP))
{_rotation = 45;}
}


Можно сделать и по другому, писать весь код в одном кадре и не вешать на отдельные объекты, но для начала можно и так...
Спасибо. У меня игра типа "Бокс" вид сбоку два персонажа бегают,дерутся, машут, кричат, вот надо чтоб каждый из них мог повернутся в противоположную сторону. А то бывает что спиной назад приходиться по рингу бегать)

Добавлено через 4 часа 43 минуты
Жду еще подсказк) игра почти готова а вот этой функции очень как не хватает))

vivado
20.06.2011, 12:53
Введи новую переменную например HeroNapr - для хранения значения отражения и доп. переменную например a которая будет принимать значения 1 и -1 для задания знака отражения. Ну и на нажатие своей кнопки обращайся к функции в которой будет что то типа этого:


function povorot(){
if (NaprHero==-100 || a==-1){ a=1; }
else { a=-1; }
hero._xscale = NaprHero*a; //Поворот объекта, hero - имя мувика твоего героя
trace (NaprHero*a);
}


Но правильнее наверное задать условие при котором мувики твоего героя и противника будут поворачиваться друг к другу автоматически, например...

if (hero._x>enemy._x) {
hero._xscale=-100
enemy._xscale=100
}
if (hero._x<enemy._x) {
hero._xscale=100
enemy._xscale=-100
}


ну в общем разберешься )))