Сам себе девелопЕр!

Xakep, номер #038, стр. 038-070-2


Клавиатура

Для задания управляющих клавиш после кода движения добавь следующие строчки:

onClipEvent (enterFrame) {

if (Key.isDown(Key.RIGHT)) {

this._x+=moveSpeed;

} else if (Key.isDown(Key.LEFT)) {

this._x-=moveSpeed;

}

if (Key.isDown(Key.DOWN)) {

this._y+=moveSpeed;

} else if (Key.isDown(Key.UP)) {

this._y-=moveSpeed;

}

}

Как ты уже успел заметить, вместо команды "onClipEvent(load)" мы используем "onClipEvent (enterFrame)". В данном случае "enterFrame" служит для присвоения определенных действий данному объекту, впоследствии мы будем использовать enterFrame для синхронизации нескольких объектов. Если ты сделал все правильно, то во время предварительного просмотра File>Publish Preview (F12) твой корабль должен перемещаться по экрану (не забудь кликнуть на изображении на экране браузера). Для полноты понимания использования клавиш давай рассмотрим более подробно строчку:

if (Key.isDown(Key.RIGHT)) {

this._x+=moveSpeed;

В переводе на человеческий язык это означает - "если нажата правая стрелка, то объект смещается по оси координат X в сторону плюса (т.е. направо) с указанной скоростью (со скоростью 15 пикселей за отведенный промежуток времени)". Команды для остальных кнопок аналогичны. Иначе говоря, если ты хочешь риверснуть управление (или использовать для управления буквы), то ты можешь заменить "Key.RIGHT" на любую другую клавишу в строке:

if (Key.isDown(Key.RIGHT)) {

Создание оружия

Для имитации стрельбы из лазерной пушки мы создадим еще один объект, который будет изображать лазерные лучи. Для этого сделай новый слой Insert>Layer, конвертни его в элемент (F8), на панели Instance (CTRL+I) выставь значение "Movie Clip" и объект назови laser. Вернемся к кораблю. Окрась корабль и в Actions добавь после "moveSpeed=15;" две новые строчки: _root.laser._visible=false; и laserCounter=1; Полностью код должен выглядеть следующим образом:

onClipEvent(load){

moveSpeed=15;

_root.laser._visible=false;

laserCounter=1;

}

Первая строчка делает лазер невидимым во время загрузки корабля. Вторая нам понадобится позднее. Когда игрок будет нажимать клавишу CTRL, объект "laser" будет дублироваться и перемещаться по экрану. Давай добавим эту возможность к основному коду. Выбери корабль и добавь к основному коду:

if (Key.isDown(Key.CONTROL)) {

laserCounter++;

_root.laser.duplicateMovieClip( "laser"+laserCounter, laserCounter );

_root["laser"+laserCounter]._visible=true;

}

Данный код означает, что при нажатии кнопки Ctrl клип "laser" дублируется, а сам объект отрисовывается. Команда "The laserCounter++" говорит об увеличении базового значения на единицу. Т.е. при высокой частоте нажатий или удержании клавиши объект отрисовывается постоянно. Теперь добавим необходимые изменения к установкам лазера. Окрась наш лазерный луч и через знакомую комбинацию Window> Actions добавь следующий код:

onClipEvent (load) {

laserMoveSpeed=35;

this._y=_root.sship._y;

this._x=_root.sship._x+53;

}

Это означает, что при нажатии клавиши "CTRL" лазер отправится в правую сторону со скоростью 35 (что, если ты помнишь, выше скорости корабля). Строка "this._y=_root.sship._y;" означает, что лазер непосредственно привязан к кораблю по оси координат Y. Строка "this._x=_root.sship._x+53;" привязывает лазер к кораблю по оси координат X. В моем случае лазеры прекрасно состыковывались с пушками при значении "+53", ты можешь изменить этот параметр в зависимости от своей модели.

Назад на стр. 038-070-1  Содержание  Вперед на стр. 038-070-3