Минула стаття була присвячена анімації. Ми створювали анімацію на основі motion tweening, shape tweening і просто складали рух з окремих кадрів. Думаю, пора перейти до більш складної теми, розгляду інструменту, який створює основу для більшості якісних Flash-фільмів (Flash movies).
Цей інструмент - ActionScript - подієво-керований мову, вбудований в Flash. Остання версія ActionScript, (яка присутня у Flash 5), істотно відрізняється від ActionScript, який був у 4-му Flash. Якщо в минулій версії, це був обмежений набір команд, що дозволяє здійснювати лише основні дії, і вводиться за допомогою не дуже зручного інтерфейсу, то новий ActionScript - це потужна мова, зі збільшеним набором команд, підтримкою класів, успадкування (!), і набагато більш зручним інтерфейсом.
ActionScript робить ваші сторінки інтерактивними. Ви можете реагувати на події з мишки або з клавіатури, можете виконати будь-які дії при програванні певного кадру.
Для того, щоб оволодіти ActionScript повною мірою, бажано вже мати досвід програмування (переважно на С + +, JavaScript, etc.). Проте, одним з переваг мови Flash, є те, що вам не потрібно бути професіоналом у Flash, або повністю знати ActionScript, щоб писати на ньому якісний код. Ви можете використовувати ті можливості мови, які вважаєте необхідними для своєї роботи.
Так як ця стаття присвячена основам мови, в ній ми розглянемо:
Мета цієї статті, дати вам відчути ActionScript, показати, що ця мова може служити, як для створення досить значних програм, так і для виконання елементарних дій, які зроблять вашу сторінку набагато привабливіше.
Терміни
Перш ніж ми перейдемо до конкретних дій, кілька термінів з області ActionScript:
Ці терміни ми будемо використовувати під час обговорення ActionScript. Отже ...
Панель дій служить для відображення та вводу ActionScript програм (рис. 1). Існує два режими роботи з панеллю - нормальний (для "Чайників") і експертний. В експертному режимі список команд - це просте поле для введення тексту. У нормальному режимі, ми не можемо безпосередньо редагувати команди. Для цього використовується панель параметрів.
Додати інструкцію можна, натиснувши на кнопку "+" (див. рис. 1) або вибравши відповідну інструкцію у списку елементів мови. Крім того, для всіх дій у Flash є послідовності клавіш, за допомогою яких це можна зробити набагато швидше. Вони наведені праворуч від кожної дії в меню кнопки "+". Наприклад, щоб додати функцію stop (), потрібно натиснути Esc + st (послідовно: Esc, потім "s", потім "t").
Видалити інструкцію можна, вибравши її, і натиснувши кнопку "-" (Або просто клавішу Delete).
Я рекомендую вам не починати відразу ж користуватися експертними режимом, якщо у вас немає досвіду програмування на Java-подібних мовах (С + +, Java, JavaScript). У нормального режиму є велика перевага, що робить його незамінним для новачків - у ньому є набагато менше шансів помилитися з синтаксисом мови. Новачкам це допоможе швидше зрозуміти тонкощі ActionScript.
Рис. 1 - Панель дій
У панелі дій відображаються дії об'єкта, або кадру, вибраного в даний момент.
Перше, що хочеться, коли починаєш вивчати інтерактивність Flash - зробити що-небудь, що б обзивалось на дії користувача, "оживити" ваш твір, додати зворотний зв'язок. Найпростіший спосіб зробити це - кнопки. Тому з них-то ми і почнемо.
Як ви знаєте, у Flash існує спеціальний тип символу для створення кнопок - Button (див. Macromedia Flash ч. 2). Будемо вважати, що ви вже навчилися створювати кнопки, тепер навчимося відслідковувати натискання на ці кнопки.
Кнопки в Macromedia Flash володіють великим списком подій, на які ми можемо реагувати:
На жаль, Flash "розуміє" тільки ліву клавішу миші. Права використовується для виклику контекстного меню (клацніть правою кнопкою на якому-небудь Flash мультику). Способів відловлювати в Flash середню клавішу або "коліщатко" (mouse wheel), я поки не зустрічав, думаю, що їх не існує.
Перехоплюються ці події за допомогою директиви on (). Синтаксис її такий:
on (подія)
{
... / / Наші дії
}
Нижче ви можете самі спробувати викликати деякі події:
Дуже часто використовуваний приклад - перехід за посиланням при натисканні на кнопку:
on (release)
{
getURL ("http://rubs.boom.ru");
}
Щоб перевірити цей сценарій, виділіть вашу кнопку, натисніть Ctrl + Alt + A і введіть програму.
Ось так просто можна перехопити всі події, пов'язані з кнопкою. Ну а як їх використовувати - це справа виключно вашої уяви.
Величезна частка творчості в Flash припадає на маніпуляцію символами. Практично всі базові прийоми, всі трюки й ефекти нездійсненні без цих дій.
За допомогою сценаріїв на ActionScript ви можете виконувати практично будь-які дії над символами. Треба тільки пам'ятати, що виконати ці дії можна тільки або у відповідь на дію користувача, або при настанні якогось кадру на часовій шкалі.
Отже, що ж у нас є? Я перерахую тільки основні (на мій погляд) інструменти. Останнє ви знайдете в списку елементів мови або допомоги.
Опції кліпів (movie clip), які можна викликати:
Властивості (параметри) кліпів, які можна зчитувати / змінювати:
Це далеко не все, що можна робити з кліпами. Використовуйте інші параметри, експериментуйте, творіть!
Для того, щоб звертатися до кліпів, нам буде потрібно розібратися з поняттям імені об'єкта (instance name) та шляхи до об'єкта (target path). Домовимося, що кліп (movie clip) і об'єкт для нас - однакові речі.
Назва об'єкту - це ім'я конкретного екземпляра символу. Скажімо у нас може бути символ - машинка, а примірники цього символу будуть називатися "Машінка1", "Машінка2", "Pickup", "Запорожець" ...
Для того щоб дати ім'я об'єкту потрібно виділити об'єкт, і в панелі Instance (Window-> Panels-> Instance, Ctrl + I) у графі Name ввести ім'я об'єкта (рис. 2). Імена можуть складатися тільки з букв, цифр та символу підкреслення ("_"), Причому ім'я не може починатися з цифри.
Рис. 2 - Панель Instance
Шлях до об'єкта - це запис імені об'єкта з урахуванням ієрархії. Спробую пояснити, що це таке.
Ви знаєте, що в Flash об'єкти можна "вкладати" один в одного, складаючи, таким чином, ієрархію. Так ось, ця вкладеність забезпечує не тільки зручність у поводженні з об'єктами, вона ще й обмежує видимість імен об'єктів. Видимість обмежується своїм рівнем. Об'єкт може напряму (По імені) звертатися тільки до об'єктів, що входять до нього, що стоять на 1 рівень нижче в ієрархії.
Для того щоб звернутися до об'єкта іншого рівня, потрібно знати шлях до нього. Причому шлях може бути вказаний як абсолютно (з самого верхнього рівня ієрархії), так і відносно (з поточного рівня).
Шлях включає в себе об'єкти, через які потрібно "пройти" по дереву ієрархії, щоб дістатися до потрібного нам об'єкту, перераховані через крапку. Крім того, існує кілька покажчиків (можна їх назвати "віртуальними об'єктами "), які часто дуже корисні:
this - Покажчик на "самого себе" (тобто на поточний об'єкт). Буває потрібен, наприклад, коли потрібно передати у функцію покажчик на об'єкт, з якого ця функція викликається.
_parent - Покажчик на "батька". Вказує на об'єкт стоїть рівнем вище в ієрархії.
_root - "Корінь". Це початок ієрархії. Без нього не обійтися при вказівці абсолютного шляху.
Шлях виглядає так:
leaf.play (); - У подоб'екта leaf (Лист) викликається функція play ();
_parent.tree.leaf.stop (); - Мається на увазі, що на одному рівні є об'єкт tree, у якого є об'єкт leaf, у якого і викликається функція stop ();
_root.banner._visible = False; - Зробити кліп banner, що знаходиться на 1-му рівні, невидимим.
Рис. 3 - Ієрархія кліпів
Для ілюстрації візьмемо ієрархію з 5-ти об'єктів (рис. 3). Об'єкти 1-4 знаходяться на 1-му шарі, об'єкт 5 - на 2-м шарі. Об'єкт 2 вкладено у об'єкт 1, а об'єкт три вкладено у об'єкт 2. Об'єкти на малюнку візуально вкладені один в одного, але це в жодному разі не означає, що так має бути і "в життя ". Тут вони так згруповані для наочності. Так як ім'я об'єкта не може починатися з цифри, нехай об'єкти в нас називаються obj1-obj5.
Тепер займемося шляхами. Для початку подивимося, які об'єкти можуть звертатися один до одного по імені. obj1 може звертатися до obj2, а obj2 - До obj3, Але при цьому obj1 не може звернутися до obj3 безпосередньо, тому що той міститься не в obj1, а в obj2.
Скажімо першому об'єкту потрібно, щоб об'єкт 3 почав заново відтворюватися з 1-го кадру. Ось як це робиться:
obj2.obj3.gotoAndPlay (1);
Щоб 4-му об'єкту зробити 1-й об'єкт (зауважте з усіма подоб'ектамі!) напівпрозорим, йому потрібно в своєму сценарії написати наступне:
_parent.obj1._alpha = 50;
або
_root.obj1._alpha = 50;
Оскільки obj4 у нас знаходиться на першому рівні ієрархії, то для нього _root і _parent - Одне й те саме.
Тепер для об'єкта 3 напишемо скрипт, який зробить об'єкт 5 невидимим при натисканні клавіші миші. У сценарії для об'єкта три пишемо:
onClipEvent (mouseDown) (
_root.obj5._visible = false;
}
У цьому фрагменті ми використовували абсолютний шлях. Якщо б ми використовували відносний, це виглядало б як:
_parent._parent._parent.obj5._visible = False;
Сподіваюся, я прояснив момент з шляхами.
Наведені вище приклади показали не тільки як виглядають шляху, але і як викликаються функції і присвоюються значення властивостям.
Ви можете спробувати використовувати обробник onClipEvent, задаючи різні умови і виконуючи різні дії з об'єктами при цьому.
Одними з найважливіших є функції управління ходом відтворення кліпу (play (), stop (), gotoAndPlay (), gotoAndStop ()). Опції play () і stop () викликаються без параметрів, в той час як у goto потрібно вказувати кадр, і, можливо, сцену.
Останнє, що ми розглядаємо в цій статті: вікна Output (Висновок) і Debugger (відладчик) - інструменти, службовці для налагодження сценаріїв ActionScript.
Віконце Output прийшло з Flash 4, де воно було єдиним інструментом для налагодження. Існує директива trace (), яка виводить повідомлення у цьому віконце. Туди ж виводяться повідомлення про помилки.
Використовувати trace дуже просто:
trace ("280-й кадр ");
або, наприклад,
trace (xpos + k);
У 5-му Flash з'явився спеціальний інструмент - віконечко Debugger. Щоб їм користуватися потрібно перевіряти свої фільми не як звичайно (Test movie, Ctrl + Enter), а за допомогою Debug movie (Ctrl + Shift + Enter). Віконце Debugger (рис. 4) можна сховати / показати за допомогою Window-> Debugger.
Рис. 4 - Вікно Debugger
В одній частині вікна Debugger знаходиться ієрархічний список об'єктів, що використовуються у фільмі. Вибравши об'єкт, можна переглядати його властивості (Закладка Properties).
Під закладкою Variables знаходяться всі змінні. Перевага закладку Variables полягає в тому, що ви можете модифіковані значення будь-яких змінних "на льоту" і тут же отримувати відображення цієї зміни в фільмі.
І, нарешті, можна додати будь-які змінні в список перегляду (Watch list) і спостерігати за їх значеннями (закладка Watch).
Debugger дозволяє відстежувати практично будь-які параметри Flash-фільмів. Тим не менше, я вважаю, що своє застосування є і біля віконця Output і у Debugger-a.
Розробка сайту, підтримка та хостинг. Студія дизайну HDesign.rv.ua