Просмотр полной версии : Движение клипа с помощью стрелок клавиатуры
Я буквально 3 дня назад установил Macromedia Flash MX (v7)
Собсно полазил по инэту и наткнулся на кучу флэш игр... вот захотелось научиться делать игры самому...
Убил кучу трафика на поиск всяческих туториалов но практичеки ничего не понял....
Надеюсь мне тут помогут освоить море возможностей ActionScriptа
вопрос №1:)
я создаю новый флэш документ, рисую квадрат, конвертирую его в символ(мовиКлип) и называю его KV
Подскажите как заставить двигаться символ KV про помощи стрелок клавиатуры (ап, давн, лэфт, райт)
Зарание благодарен :)
Автор отправляется придумывать нормальное название своей теме, которое я жду в личку. До тех пор — закрыто.
var list:Object = new Object ();
list.onKeyDown = function () {
trace (KV);
if (Key.isDown (Key.LEFT)) {
KV._x--;
}
if (Key.isDown (Key.RIGHT)) {
KV._x++;
}
if (Key.isDown (Key.UP)) {
KV._y--;
}
if (Key.isDown (Key.DOWN)) {
KV._y++;
}
};
Key.addListener (list);
Но если вы хотите научится по серьезному, то для начала запомните, что с клипы так не называют. Все буквы в названии прописью используют только для констант.
var list:Object = new Object ();
list.onKeyDown = function () {
trace (KV);
if (Key.isDown (Key.LEFT)) {
KV._x--;
}
if (Key.isDown (Key.RIGHT)) {
KV._x++;
}
if (Key.isDown (Key.UP)) {
KV._y--;
}
if (Key.isDown (Key.DOWN)) {
KV._y++;
}
};
Key.addListener (list);
Но если вы хотите научится по серьезному, то для начала запомните, что с клипы так не называют. Все буквы в названии прописью используют только для констант.
Спс!
я вставил этот код в первый кадр затем тестирую фильм и при нажатие например на стрелку вверх вылазит окошко с текстом
undefined
undefined
а квадрат(KV) как стоял на месте так и стоит....
А KV это название символа в библиотеке, или это название экземпляра?
А KV это название символа в библиотеке, или это название экземпляра?
это название символа в библиотеке.
Хм... чёто я так и не понял чем символ отличается от экземпляра.... я думал это одно и тоже...
подскажите пожалуйста что такое экземпляр и как ему дать название?...
Представте, что у вас не один объект, а несколько. И к кому тогда будет относится действие? Поэтому для каждого экземпляра (то что на сцене) дают собственное уникальное имя. Для этого надо открыть панель Properties и вместо <Instance Name> написать KV.
Представте, что у вас не обин объект, а несколько. И к кому тогда будет относится действие? Поэтому для каждого экземпляра (то что на сцене) дают собственное уникальное имя. Для этого надо открыть панель Properties и вместо <Instance Name> написать KV.
Спс за пояснение, дошло )
Вот и второй вопрос:
Квадрат(KV) двигается очень медленно... как изменить его скорость?
Ну например поменять _x-- на _x-=5, и по аналогии в других местах (_x-- это тоже самое, что и _x-=1)
Ну например поменять _x-- на _x-=5, и по аналогии в других местах (_x-- это тоже самое, что и _x-=1)
спс.
вот еще вопрос:
к примеру вместо квадрата я сделал танк :) как сделать чтоб танк всегда ехал носом вперёд?
вот во вложение мой танк.. видно что он всегда направлен вверх...
Не понял вопроса.
как сделать чтоб он поворачивал? допустим жму влево и танк поворачивается дулом в лево
сейчас кудаб я не жал он всегда повёрнут вверх....
var list:Object = new Object ();
KV.angle = 90;
KV.speed = 5;
KV.angleSpeed = 2;
KV.onEnterFrame = function () {
var x:Number = 0;
var y:Number = 0;
if (Key.isDown (Key.LEFT)) {
KV.angle -= KV.angleSpeed;
}
if (Key.isDown (Key.RIGHT)) {
KV.angle += KV.angleSpeed;
}
KV._rotation = KV.angle - 90;
if (Key.isDown (Key.UP)) {
x = -KV.speed * Math.cos (KV.angle * (Math.PI / 180));
y = -KV.speed * Math.sin (KV.angle * (Math.PI / 180));
}
if (Key.isDown (Key.DOWN)) {
x = KV.speed * Math.cos (KV.angle * (Math.PI / 180));
y = KV.speed * Math.sin (KV.angle * (Math.PI / 180));
}
KV._x += x;
KV._y += y;
};
var list:Object = new Object ();
KV.angle = 90;
KV.speed = 5;
KV.angleSpeed = 2;
KV.onEnterFrame = function () {
var x:Number = 0;
var y:Number = 0;
if (Key.isDown (Key.LEFT)) {
KV.angle -= KV.angleSpeed;
}
if (Key.isDown (Key.RIGHT)) {
KV.angle += KV.angleSpeed;
}
KV._rotation = KV.angle - 90;
if (Key.isDown (Key.UP)) {
x = -KV.speed * Math.cos (KV.angle * (Math.PI / 180));
y = -KV.speed * Math.sin (KV.angle * (Math.PI / 180));
}
if (Key.isDown (Key.DOWN)) {
x = KV.speed * Math.cos (KV.angle * (Math.PI / 180));
y = KV.speed * Math.sin (KV.angle * (Math.PI / 180));
}
KV._x += x;
KV._y += y;
};
ухты :eek: антересно получилось ))
я тут с _rotation эксперементировал...
я смотрю у вас везде стоит ";"... скопировал ваш код и поудалял везде эти знаки и без них всё работало без ошибок, вы его ставите в конце каждой строки... какой смысл?
я смотрю у вас везде стоит ";"... скопировал ваш код и поудалял везде эти знаки и без них всё работало без ошибок, вы его ставите в конце каждой строки... какой смысл?
Смысл в том, чтобы обозначить, что действие закончилось.
Это не я ставлю, а сам флеш при автоформате. Потому что так правильно.
Если флеш не обращает на это внимание, то например php будет ругаться.
спс, всё ясно.
Эх... получая эти коды особо не научишся...
вот к примеру var list:Object = new Object ()что это такое, непонять...
Немогли бы вы подсказать какойнить сайт с описанием всех этих функций?
По кнопке F1 есть мануал.
Эх... получая эти коды особо не научишся...Трезвая мысль. Все бы так думали.
По кнопке F1 есть мануал.
Жаль что он не на русском языке :(
http://www.flasher.ru/forum/showthread.php?t=72459
ну да ладно... попробую продолжить обучение+срздание игры с помошью ваших подсказок :) (конечно если вы не против :) )
на данный момент я имею танк который умеет ездить.... чё еще надо?... надо научить его стрелять, надо сдлать врага который будет стрелять по моеу танку... ну это позже...
сейчас меня волнует как сделать препятствия на дороге.
Я создал еще один слой и в нём нарисовал чтото похожее на забор, конвертировал его в символ и назвал pregrada(экземпляр назвал также)
как сделать чтоб мой танк немог проехать сквозь преграду?
на всякий случай вкладываю исходник
http://www.flasher.ru/forum/showthread.php?t=72459
"AS Language Reference на русском"не хочет качаться (
Я бы вам советал для начала покопаться в сети на тему создание игр, что бы хотя бы иметь представление.
У меня нормально только что скачался.
Я бы вам советал для начала покопаться в сети на тему создание игр, что бы хотя бы иметь представление.
У меня нормально только что скачался.
вчера и сегодня искал... одну ерунду нахожу с готовми кодами....
Немогли бы вы открть тайну откуда берутся эти пораметр: angle, speed, angleSpeed? и где посмотреть их список?
в проге жму ф1 и пиш в поиске к примеру angleSpeed - ненаходит....
В самом начале кода
...
KV.angle = 90;
KV.speed = 5;
KV.angleSpeed = 2;
...
Я вам советую купить книгу по флешу и почитать, какие именно - заходите в поиск по форуму, в строке поиска наберите книги и выберите поиск по заголовкам.
В самом начале кода
...
KV.angle = 90;
KV.speed = 5;
KV.angleSpeed = 2;
...
Я вам советую купить книгу по флешу и почитать, какие именно - заходите в поиск по форуму, в строке поиска наберите книги и выберите поиск по заголовкам.
спс за совет.
вот решил поискать в гугле(всегда яндексом пользовался) и сразу наткнулся на очень интересный сайт-электронную книгу
аж зачитался, настолько всё ясно и доходчиво расписано что оторваться невозможно :)
теперь хоть както начинаю разбераться :)
кстати сслочку можно тут выложить?
правила не читал - лень :)
Если книга была предназначена для свободного доступа, то можно. А правила надо прочитать.
Если книга была предназначена для свободного доступа, то можно. А правила надо прочитать.
http://www.intuit.ru/department/internet/flashmxascript/
я бы советовал вам разместить ссылочку гденить в заметном месте для новичков вроде меня :)
Если бы вы пользовались поиском по форуму, то нашли бы эту ссылку раз 5.
terbooter
19.03.2007, 11:56
Если автору интересно, вот
http://www.dionaholding.ru/news/articles/tbg_flash
неплохие туториалы по созданию tile based игр
Ребята, а вот вопрос:
как сделать, чтобы при нажатии на клавиши "вверх" или "вниз", нос косм.корабля немного отклонялся от горизонтального положения.
А при отпускании, он обратно возвращался в горизонтальное поолжение.
Мне не надо, чтобы он вокруг своей оси двигался.
starship._rotation=starship._rotation+3;
это естественно не подходит.
Нужно примерно задать интервал углов до куда может корабль поворачивать, только я не могу сообразить как.
Вот скрипт корабля:
_root.starshiphead.iID1 = setInterval(movieShip, 40, _root.starship, 10);
//функция 1: движение starship
function movieShip(starship, step) {
if (Key.isDown(Key.RIGHT)) {
starship._x = _root.starship._x+step;
if (Key.isDown(Key.LEFT)) {
starship._x = _root.starship._x-step;
}
if (Key.isDown(Key.DOWN)) {
starship._y = _root.starship._y+step;
//starship._rotation=starship._rotation+3;
}
if (Key.isDown(Key.UP)) {
starship._y = _root.starship._y-step;
//starship._rotation=starship._rotation-3
}
}
попробовал так, тоже не получается:
//функция 1: движение starship
function movieShip(starship, step) {
if (Key.isDown(Key.DOWN)) {
starship._y = _root.starship._y+step;
starship._rotation=starship._rotation+stepRptation;
}
if (Key.isDown(Key.UP)) {
starship._y = _root.starship._y-step;
starship._rotation=starship._rotation-stepRptation;
}
}
//интервал rotation
createRotataoinInt = setInterval(createRotataoin, 0);
stepRptation = 3;
minRotataoin = -300;
maxRotataoin = 60;
function createRotataoin(minRotataoin, maxRotataoin){
if((starship._rotation=starship.minRotataoin)||(starship._rotation=starship.maxRotataoin)){
stepRptation = 0;
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.