екомендована література: 1, 2, 3, 4

 

 

ема 7. Знайомство з ActionScript

(тривалість 14 години)

 

Навчальні питання.

  1. Навіщо потрібний ActionScript?
  2. Змінні
  3. Масиви
  4. Умовні оператори
  5. Цикли
  6. Функції
  7. Керування програванням. Кнопки

авдання для роботи:У Темі 6 Студент малював свою машину, пейзаж. Створював анімацію руху машини по траєкторії. При підйомі в гірку рух автомобіля сповільнювався. Колеса автомобіля оберталися. Тепер потрібно додати кнопки керування роликом. Додати кнопки «Стоп», «Пуск», «Перейти в початок». ». Машина повинна зупинятися перед підйомом.

Приклад:

Практика : Відкрийте файл.

Практика : Перейдіть кадр шаруючи Машина , де починається підйом, і натисніть клавішу F9, щоб вивести на екран панель Actions. Уведіть код:

stop();

Переглянете результат.

Для того, щоб продовжити програвання фільму, ми додамо на сцену кнопку - символ спеціального типу.

Кнопки

При створенні символу можна вибрати тип Button (кнопка). Так називається кліп, що має 4 кадри:

  • Up — звичайний стан кнопки;
  • Over — вид кнопки, коли на неї наведений курсор миші;
  • Down — натиснута кнопка;
  • Hit — область реагування.

У кожному з них можуть бути будь-які малюнки. Більше того, можна створювати багатошарові зображення й додавати звук для кожного зі станів.

Практика: Створіть новий символ (клавіші Ctrl+F8) типу Button (кнопка) і назвіть його Кнопка_Старт. Намалюйте приблизно от таку кнопку: Вставте новий ключовий кадр у кадрі Over і зміните кольори стрілки на ясно-зелений. Потім вставте ключовий кадр у кадрі Down і зміните кольори стрілки на червоний.

Ми не задали ніякого зображення в кадрі Hit, це значить, що областю реагування є вся непрозора область останнього кадру Down.

Практика: Поверніться до сцени. Створіть новий шар Кнопки, виділите кадр 1, перетягнете кнопку з бібліотеки в нижню частину поля й відрегулюйте її розмір.

 

Реакції на події

Щоб кнопка «заробила», потрібно визначити її реакцію на натискання. Якщо виділити кнопку й нажати клавішу F9, на екрані з'являється панель Actions (дії), де можна написати програмний код, пов'язаний із кнопкою. От приклад такого коду:

on ( release ) { play();}

Слово on починає оброблювач події, release (звільнення) у дужках указує саму подію — відпускання миші над кнопкою. Далі усередині фігурних дужок записують команди, які потрібно виконати: у цьому випадку - продовжити програвання фільму.

Мова ActionScript використає правила запису команд, дуже схожі на мову Си. Кожна команда закінчується крапкою з коми.

Нажавши на кнопку (або клавіші Ctrl+T), можна перевірити правильність запису коду (відповідність правилам мови ActionScript). Якщо ви побачили повідомлення "The script contains no errors.", помилок немає. Повідомлення про помилки виводяться в спеціальному вікні Compiler Errors (воно з'являється автоматично або може бути викликано натисканням клавіш Alt+F2).

Кнопка дозволяє закріпити активне вікно з кодом. Справа в тому, що код може бути розкиданий по декількох місцях (кадрам, кнопкам, кліпам). В активному вікні ми бачимо той блок, що виділений у лівій частині панелі Actions. Якщо прикріпити якийсь блок, він буде завжди показуватися як вкладка в основному вікні:

 

На малюнку активне вікно — це код, пов'язаний із кнопкою Стіп, а код кнопки Стіп був прикріплений і показується у вигляді вкладки.

Практика : Виділите кнопку й додайте у вікні Actions код

on (release) { play(); }

Клацніть по кнопці / , щоб перевірити правильність набраного коду, а потім - по кнопці / для автоматичного вирівнювання.

 

У лівій частині панелі Actions перебуває довідкова інформація (Toolbox). Зверху — списки функцій й операторів мови (їх можна вставляти в код щигликом миші), нижче — список всіх об'єктів, з якими зв'язаний код ActionScript. Зараз видно, що якийсь код є в кадрі шаруючи Машина й у кнопки (елементи блоку Scene 1). У цей момент ми редагуємо код кнопки (Current Selection). Це вікно зручно використати для швидкого переходу від одного блоку коду до іншого.

За допомогою кнопки можна забрати панелі Toolbox, залишивши тільки редактор коду.

Практика : Виділите кадр 1 і додайте до нього код

stop();

Закрийте панель Actions і перевірте роботу фільму.

 

Тепер додамо ще 2 кнопки: для зупинки фільму й для переходу в початок. Оскільки на них повинен бути інший малюнок, у бібліотеці потрібно створити ще дві символи-кнопки. Наприклад, можна продублировать існуючу кнопку й змінити малюнок, вибравши команду Duplicate з контекстного меню, що з'являється при натисканні правої кнопки миші на назві символу в бібліотеці.

Практика : Створіть кнопку з ім'ям Кнопка_Стіп для зупинки програвання. Для цього продублируйте кнопку в бібліотеці, дайте їй нове ім'я й виправте малюнки у всіх кадрах (Up, Over, Down). Додайте нову кнопку на шар Кнопки й настройте так, щоб вона зупиняла фільм.

Практика : Додайте ще одну кнопку , що повертає фільм у початок (до кадру 1) за допомогою коду

on (release) { gotoAndPlay(1); }

Перевірте ролик.

Практика : Зміните команду, пов'язану з останньою кнопкою, на

gotoAndStop(1);

і подивитеся, що змінилося.

 

Коли в бібліотеці дуже багато елементів, список виходить дуже довгий й у ньому складно розібратися. Щоб полегшити життя, подібні елементи поєднують у папки. Папку в бібліотеці можна відкривати й закривати подвійним щигликом миші.

Практика :Виділите всі кнопки в бібліотеці (клацаючи на них при натиснутій клавіші Ctrl) і виберіть пункт Move to New Folder (перемістити в нову папку) з контекстного меню. Дайте папці ім'я Кнопки.

 

 

Тепер треба зробити, щоб кнопки на сцені були однакового розміру, і вирівняти їх. Для цього використається панель Align (вирівнювання, клавіші Ctrl+K). Перевірте, щоб режим To Stage був відключений (він використається для вирівнювання щодо всієї сцени).

Практика: Виділите всі кнопки й включите панель Align. Спочатку зробіть однакової висоту кнопок ( у групі Match Size). Потім вирівняйте центри по вертикалі ( у групі Align) і розподілите рівномірно по горизонталі ( у групі Distribute).

 

Для кнопок, так само, як і для кліпів, можна застосовувати фільтри (панель Filters).

Практика : Для додання кнопкам більше гарного виду застосуєте фільтр Bevel і настройте його параметри на ваш смак.

 

Мітки кадрів

У ході роботи кадри часто переміщаються, тому переходи по номерах кадрів небажані. Замість цього кадру (тільки ключовому!) можна привласнити ім'я (мітку) і виконувати перехід по мітці, а не по номері. Для міток звичайно створюється окремий шар.

Практика: Створіть новий шар Мітки й виділите кадр 1. На панелі Properties уведіть мітку кадру, як показано на малюнку.

 

 

Заміните команду, пов'язану з останньою кнопкою, на

gotoAndStop ( "start" );

і перевірте ролик.

Зверніть увагу, що на тимчасовій шкалі в кадрі 1 шаруючи Мітки з'явилася мітка start:

 

  1. Адреси: діти, батьки й корінь
  2. Звук: нові подробиці

Завдання для роботи:У ролику дедодавали кнопки керування роликом - «Стоп», «Пуск», «Перейти в початок». Додайте в код шару Програма команди, що зупиняють обертання коліс, а в код оброблювача натискання кнопки — команди для запуску обертання коліс. Збережіть файл і перегляньте результат.

Приклад:

Коли машина коштує на місці, але її колеса обертаються. Це відбувається тому, що команда stop() зупинила тільки програвання головної тимчасової шкали, а внутрішні кліпи (колеса) продовжують працювати.

Щоб відповістити на запитання «Як зупинити колеса?» потрібно розібратися з адресами усередині флэш-ролика. Але насамперед, дамо імена об'єктам на сцені, до яких ми будемо звертатися: машині й двом колесам усередині її.

Практика : Виділите машину й на панелі Properties уведіть ім'я цього елемента car. Відкрийте кліп Машина для редагування й у такий же спосіб дайте колесам імена wheel1 і wheel2.

 

Отже, у цьому фільмі 4 монтажних столи зі своїми тимчасовими шкалами:

  • головний (кореневий) монтажний стіл, він називається _root;
  • монтажний стіл кліпу Машина;
  • два монтажних столи для кожного колеса.

Зв'язку цих монтажних столів показані на схемі:

 

 

Кліп car перебуває усередині головного монтажного стола _root, а кліпи wheel1 і wheel2 — усередині кліпу car.

Головний монтажний стіл _root є «батьком» (parent) для кліпу car.

Кліп car є «сином» (child) для _root і батьком для кліпів wheel1 і wheel2.

Кліпи wheel1 і wheel2 — сини для car, у них самих немає нащадків.

Абсолютні адреси

Кожний об'єкт має своя абсолютна адреса, по якому його можна знайти з будь-якого місця. Наприклад, квартира Васі Пупкина може мати таку абсолютну адресу:

Україна, Луганськ, вул. Оборонна, буд. 5, кв. 25

Тут на першому місці коштує країна, потім - місто й т.д.

Для об'єктів Flash-фільму абсолютна адреса починається з _root, так що абсолютні адреси всіх кліпів, показаних на схемі, виглядають так:

_root
_root.car
_root.car.wheel1
_root.car.wheel2

Як бачимо, для звертання до синів використається крапка.

Абсолютні адреси не залежать від того, усередині якого монтажного стола вони використаються.

Щоб зупинити програвання для якогось монтажного стола, треба перед командою stop() поставити його адресу й крапку:

_root.stop();_root.car.stop();_root.car.wheel1.stop();_root.car.wheel2.stop();

Якщо ми застосовуємо абсолютні адреси, потрібно пам'ятати, що вони стануть невірними, якщо машина буде перебувати вже не на головному монтажному столі, а стане частиною іншого кліпу (Вася Пупкин переїхав).

Відносні адреси

Відносні адреси залежать від того, де перебуває об'єкт, що використає цю адресу. Вася Пупкин може сказати, що Коля Іванов живе через 2 удома від нього.

Для звертання до батька використають слово _parent. Наприклад, щоб із кліпу wheel1 зупинити програвання для монтажного стола кліпу car, треба застосувати команду

_parent.stop();

Ця команда спрацює із із кліпу wheel2, оскільки його батьком також є car.

Якщо два рази использоать _parent, ми звертаємося до «діда». Наприклад, команда

_parent._parent.stop();

зупиняє програвання на головному монтажному столі із кліпу wheel1 або wheel2.

До синів можна звертатися просто по імені. Наприклад, команда

car.stop();

припустима усередині _root. Крім того, тут можна було використати й слово this (поточний монтажний стіл):

this.car.stop();

Для зупинки wheel1 з _root можна застосувати одну з команд

car.wheel1.stop();this.car.wheel1.stop();

Нарешті, самий складний випадок. Звернутися до «брата» можна тільки через батька. Щоб зупинити друге колесо з wheel1, треба написати

_parent.wheel2.stop();

 

  1. Властивості й події кліпу

Завдання для роботи:Побудувати ролик у якому кнопки зі стрілками на поле змінюють масштаб і кут повороту ракети.

У правій частині поля виводяться поточні властивості кліпу Ракета:

  • _x, _y — координати крапки реєстрації (відлічуються від лівого верхнього кута екрана);
  • _width, _height — ширина й висота кліпу в пикселях;
  • _xscale, _yscale — масштаби по осях X і Y (рівні 100 у вихідному стані);
  • _rotation — кут повороту в градусах навколо крапки реєстрації (дорівнює 0 для кліпу в бібліотеці);
  • _alpha — ступінь непрозорості (від 0 до 100).

Прикла:

Побудувати ролик, в якому на фоны темного неюа знаходиться ракета, як показано нижче.

 

Тут ракету можна перетаскувати мишкою й переміщати клавішами-стрільцями на клавіатурі. Кнопки зі стрілками на поле змінюють масштаб і кут повороту ракети.

Якщо водити мишею над ракетою, вона поступово стає прозорою. Щоб знову зробити її повністю непрозорої, треба клацнути по центральній кнопці із кружком.

У правій частині поля виводяться поточні властивості кліпу Ракета:

  • _x, _y — координати крапки реєстрації (відлічуються від лівого верхнього кута екрана);
  • _width, _height — ширина й висота кліпу в пикселях;
  • _xscale, _yscale — масштаби по осях X і Y (рівні 100 у вихідному стані);
  • _rotation — кут повороту в градусах навколо крапки реєстрації (дорівнює 0 для кліпу в бібліотеці);
  • _alpha — ступінь непрозорості (від 0 до 100).

Зміна властивостей

Практика: Відкрийте файл space.fla з папки PRACTICE\7. Перемістите крапку реєстрації кліпу Ракета на вісь симетрії ракети (для цього треба відкрити кліп для редагування й перемістити зображення так, щоб хрестик виявився в потрібнім місці).

Практика: Додайте шар Кнопки й розмістите на ньому 1 кнопку типу Кнопка0 і 4 кнопки типу Кнопка з бібліотеки. За допомогою панелі Transform (меню Windows—Transform або клавіші Ctrl+T) розгорніть три кнопки зі стрілками на 90, 180 і 270 градусів. Розташуєте кнопки рівно, тому що на зразку на початку роздягнула.

Центральна кнопка із кружком буде відновлювати повну непрозорість ракети, кнопки «уліво» і «вправо» обертають її (змінюють властивість _rotation), а кнопки «нагору» і «униз» — змінюють розміри (властивості _xscale і _yscale).

У мові ActionScript (так само, як у Си й Java) для операцій збільшення або зменшення значень змінних на деяку величину часто використається скорочений запис:

a = a - 5;

b = b + 10;

виконується точно так само, як

a -= 5;

b += 10;

 

Практика: Додайте код для кнопок. Центральна кнопка:

on (release) {

rocket._alpha = 100;

}

Стрілка «уліво»:

on (release) {

rocket._rotation -= 10;

}

Стрілка «вправо» - те ж саме, але зі знаком «плюс». Стрілка «униз»

on (release) {

rocket._xscale += 5;

rocket._yscale += 5;

}

Стрілка «нагору» - те ж саме, але зі знаком «мінус». Переглянете результат і збережете файл.

Практика: Додайте текст _x: і праворуч від нього — ще одне текстове поле для виводу поточної координати _x. Для нього в панелі Properties установите тип Dynamic Text, ім'я x і ширину W=50.

 

Події кліпу

Кліпи (символи типу Movie Clip) можуть реагувати на ті ж події, що й кнопки, за допомогою оброблювачів on (...). Крім того, є ще кілька особливих подій, яких у кнопок немає. Найбільш важливі з них:

  • load — кліп повністю завантажений;
  • enterFrame — відбувся перехід до наступного кадру кліпу;
  • mouseDown — натиснута кнопка миші;
  • mouseMove — миша перемістилася;
  • mouseUp — кнопка миші відпущена;
  • keyDown — натиснута клавіша на клавіатурі;
  • keyUp — клавіша відпущена.

Для обробки цих подій використаються оброблювачі onClipEvent (...), які можна додати на панелі Actions, попередньо виділивши кліп.

При частоті кадрів 12, подія enterFrame виникає 12 разів у секунду, навіть якщо кліп містить єдиний кадр. Ми використаємо цю подію для того, щоб постійно обновляти x-координату ракети на екрані.

Динамічне текстове поле з ім'ям x має властивість text, яких можна змінювати із програми (це і є напис на екрані). Для звертання до властивості об'єкта використається крапка, тобто адреса тексту приймає вид x.text. Таким чином, запис поточної x-координати кліпу rocket у текстове поле x повинна виглядати так:

x.text = rocket._x;

 

Практика: Виділите ракету на сцені й відкрийте панель Actions (клавіша F9). Уведіть код оброблювача події enterFrame:

onClipEvent (enterFrame) {

x.text = rocket._x;

}

Переглянете результат.

Ви побачили, що x-координата на екрані як і раніше дорівнює нулю, хоча кліп перебуває не на лівій границі екрана, і значить його дійсна x-координата більше нуля.

Щоб виявити помилку, ми застосуємо трасування — вивід (у додаткове вікно) отладочных повідомлень, які дозволять зрозуміти, що справді відбувається усередині програми.

Практика: Додайте в оброблювач рядок

trace ( x );

При запуску з'явиться вікно Output (включається також через меню Window—Output або клавішею F2), у якому з'являються рядки undefined.

Відбувається наступне: ми попросили програму сказати, що ж таке x у цій крапці, і у відповідь одержали, що x — це незрозуміло що (undefined, не визначено). Виходить, текстове поле x не знайдене — невірно заданий його адреса. Повідомлення з'являється 12 разів у секунду, щораз, коли відбувається подія enterFrame. Помітимо, що точно такий же результат дасть рядок

trace ( rocket );

Виходить, звертання до кліпу теж невірно.

Справа в адресах. В оброблювачах подій кліпу поточним монтажним столом уважається сам кліп. Тому для того, щоб звернутися до текстового поля x, що належить не кліпу, а головному монтажному столу, його адреса треба записати у вигляді _root.x (абсолютна адреса) або _parent.x (відносна адреса).

У правій частині оператора треба звернутися до властивості _x поточного об'єкта, тобто написати this._x (відносна адреса) або _root.rocket._x (абсолютна адреса). Але можна т же саме написати простіше, адже _x позначає те ж саме, що this._x.

Важно: Щоб не помилитися при звертанні до об'єкта, можна нажати на кнопку і вибрати зі списку існуючий об'єкт. Програма автоматично вставить його адресу, відносний (при виборі варіанта Relative) або абсолютний (варіант Absolute).

Практика : Виділите ракету на сцені й відкрийте панель Actions (клавіша F9). Виправте код оброблювача події enterFrame:

onClipEvent (enterFrame) {

_root.x.text = _x;

}

Спробуйте вставити посилання на текстове поле за допомогою кнопки / .

Практика: Додайте аналогічні пари (статичний текст і динамічне текстове поле) для інших властивостей кліпу й доповните оброблювач події командами, що заповнюють ці поля. Переглянете результат.

Важливо: Помітьте, що координата _x і інші властивості кліпу — цілі числа. При записі в текстові поля вони будуть автоматично перетворені в символьний вид.

Значення властивостей кліпу можна не тільки читати, але й змінювати. Після завантаження кліпу на згадку ми встановимо його початкові координати в оброблювачі події load.

Практика: Додайте в код кліпу Ракета оброблювач події load (кліп завантажений на згадку):

onClipEvent (load) {

_x = 100;

_y = 100;

}

 

  1. «Мишачі події»
  2. Клавіатура

Завдання для роботи:Зробити так, щоб при проходженні курсору миші над ракетою, ракета ставала небагато більше прозорою (на 5 відсотків). Зробити щоб ракета оберталася проти вартовий стрілці, якщо миша рухається в лівій половині поля, і по годинній стрілці, якщо в правій. Ракету можна перетаскувати мишкою й переміщати клавішами-стрільцями на клавіатурі.

Приклад:

Тепер займемося подіями від миші. Кнопки й кліпи можуть обробляти трохи «мишачих» подій:

  • press — над об'єктом натиснута кнопка миші;
  • release — над об'єктом відпущена кнопка миші;
  • releaseOutside — кнопка миші відпущена поза об'єктом;
  • rollOver — покажчик миші наведений на об'єкт (без натискання);
  • rollOut — покажчик миші пішов з об'єкта (без натискання);
  • dragOut — покажчик миші пішов з об'єкта при натиснутій кнопці;
  • dragOver — при натиснутій кнопці миша йде з об'єкта, а потім наводиться на нього знову (аналогія — «чистимо черевики»).

Ми зробимо так, щоб при події rollOut ракета ставала небагато більше прозорою (на 5 відсотків). Для цього треба зменшити значення _alpha.

 

Практика : Додайте оброблювач події миші для кліпу Ракета:

on (rollOut){

_alpha -= 5;

}

 

Помітьте, що параметр _alpha за змістом не повинен бути менше нуля. Буде непогано, якщо ви зможете забезпечити цю умову, додавши в оброблювач умовний оператор if.

Перетаскування

Перетаскування мишкою теж робиться дуже просто: при натисканні кнопки на об'єкті (подія press) треба «захопити» об'єкт і почати перетаскування:

startDrag ( this );

У дужках вказується адреса об'єкта (this означає «поточний об'єкт», тобто кліп).

При відпусканні кнопки (подія release) треба закінчити перетаскування:

stopDrag();

 

Практика: Додайте оброблювачі подій миші для кліпу Ракета:

on ( press ){

startDrag(this);

}

on ( release ){

stopDrag();

}

У дужках після слова on можна перераховувати через кому кілька подій, на які треба реагувати однаково. Для цього часто зручно використати засіб Script Assist (помічник скриптов).

Практика: Виділите рядок коду on(release) і клацніть за словами Script Assist у правому верхньому куті панелі Actions. Відзначте прапорець releaseOutside і закрийте вікно повторним щигликом за словами Script Assist.

Тепер при відпусканні миші за межами кліпу перетаскування також закінчується.

«Мишачі події» кліпу

Кліп, як уже говорилося, також може реагувати на події mouseDown, mouseUp і mouseMove. Важливо, що ці оброблювачі викликаються не тільки тоді, коли миша над кліпом, а при будь-якій зміні стану миші. При цьому координати курсору зберігаються у властивостях _xmouse і _ymouse головного монтажного стола _root.

Наприклад, ми зробимо, щоб ракета оберталася проти вартовий стрілці, якщо миша рухається в лівій половині поля, і по годинній стрілці, якщо в правій. Для цього треба написати оброблювач події mouseMove, у якому міняти властивість _rotation кліпу Ракета. Щоб визначити напрямок обертання, будемо порівнювати x-координату кліпу з половиною ширини вікна, тобто з _root._width/2.

Практика:Додайте ще один оброблювач до коду кліпу:

onClipEvent (mouseMove) {

if (_root._xmouse < _root._width/2)

_rotation -= 0.5;

else _rotation += 0.5;

}

При перегляді виявляється неточність: під час перетаскування ракета продовжує обертатися, адже подію mouseMove відбувається й викликається оброблювач. Щоб припинити обертання під час перетаскування, треба десь запам'ятовувати, що ми тягнемо ракету. Легше всього зробити це за допомогою спеціальної логічної змінної dragging, що може приймати значення true («так», істина) і false («ні», неправда). На початку перетаскування ми запишемо в цю змінну true, а коли перетаскування закінчене, запишемо в неї false.

Практика: Зміните оброблювачі подій:

on ( press ){

startDrag(this);

dragging = true;

}

on ( release, releaseOutside ){

stopDrag();

dragging = false;

}

Тепер можна використати значення цієї змінної в оброблювачі mouseMove — обертати ракету тільки тоді, коли dragging=false.

Практика: Зміните оброблювач події:

onClipEvent (mouseMove) {

if ( ! dragging ) {

if (_root._xmouse < _root._width/2)

_rotation -= 0.5;

else _rotation += 0.5;

}

}

Знак оклику означає операцію НЕ, так що умовний оператор if(!dragging) має сенс «якщо не тягнемо ракету». Тільки при цьому умові змінюється властивість _rotation.

Відмінність кнопки від кліпу

Як ми бачили, кнопки й кліпи можуть обробляти події миші за допомогою оброблювачів on (...). Однак код кнопки не може містити оброблювачів onClipEvent (...), які призначені тільки для кліпів.

 

Важливо: Головна відмінність кнопки від кліпу полягає в тому, що кнопка (символ типу Button) — частина монтажного стола, на якому вона перебуває, а кліп (Movie Clip) має свій власний монтажний стіл.

Це означає, що в кнопок немає методів play() і stop().

Коли ми використаємо команду stop(); або this.stop(); в оброблювачі події кнопки, ми зупиняємо програвання на її монтажному столі (у цьому випадку — на _root).

Якщо ж ця команда використається усередині оброблювача кліпу, вона зупиняє програвання цього кліпу (внутрішню анімацію).

Якщо команда

_rotation += 45;

коштує в оброблювачі кнопки, на 45 градусів повернеться її монтажний стіл, тобто _root. Та ж сама команда в оброблювачі кліпу поверне на 45 градусів цей кліп.

А якщо потрібно повернути кнопку? Це теж можна зробити, але інакше, використовуючи її відносну або абсолютну адресу. На панелі Properties уведемо ім'я кнопки. Нехай, наприклад, кнопка з ім'ям btn перебуває на головному монтажному столі _root. Тоді її адреса може бути записаний як _root.btn або (при обігу з _root) просто btn. Повернути кнопку в її ж оброблювачі можна за допомогою команди

btn._rotation += 45;

або (з будь-якого місця програми!)

_root.btn._rotation += 45;

 

Клавіатура

Простіше всього «ловити» натискання клавіш за допомогою події keyPress. У заголовку оброблювача після слова keypress у лапках ставиться потрібний символ, наприклад:

on (keyPress "A") { ... }

Для спеціальних клавіш указують назва в кутових дужках, наприклад, "<Left>" (уліво), "<Right>" (вправо), "<Up>" (нагору), "<Down>" (униз).

 

Практика: У код кліпу додайте оброблювачі подій клавіатури. Для клавіші «уліво»:

on (keyPress "<Left>"){

_x -= 2;

}

і аналогічно для інших клавіш-стрілок.

На жаль, в одному оброблювачі можна задати тільки реакцію на одну клавішу. Трохи більшу волю дає використання подій кліпу keyDown і keyUp, але їхнє обговорення ми відкладемо до наступних уроків.

Питання для самостійної роботи.

1. Як називається програма на ActionScript?

2. З якими елементами фільму може бути зв'язаний програмний код?

3. Які три простих типи змінних ви знаєте?

4. Назвіть пріоритет (старшинство) арифметичних операцій в ActionScript

5. Поясните Up, Over, Down стану кнопки.