Можливо, Вам ніколи і не доведеться створювати суперклас, а потім підклас, який його розширює. Але, якщо Ви серйозно налаштовані працювати з AS3, тобто вирішили піти далі простого розміщення коду в кадрі на шкалі часу, то Ви обов'язково зіткнетеся з розширенням таких класів, як MovieClip і Sprite.
У цьому уроці Ви дізнаєтесь:
- Про класах MovieClip і Sprite в ActionScript 3, а також в чому полягає головна відмінність другого від першого;
- Як розширювати ці класи;
- Як створюється клас документа і для яких цілей служить;
- Як створювати просте додаток в ActionScript 3 (практичний приклад).
Клас MovieClip - це шаблон для всіх властивостей і методів ActionScript 3. є частиною об'єкта MovieClip. Він містить властивості, з якими Ви вже, можливо, добре знайомі, такі як х і y. що визначають місце розташування об'єкта на сцені, його масштаб і т.д.
Крім MovieClip в AS3 існує клас Sprite. Його головна відмінність від MovieClip наступне: у нього відсутня шкала часу. У більшості випадків, коли Ви маніпулюєте об'єктами тільки за допомогою коду, вам не доводиться мати справи зі шкалою часу і кадрами. Тому, в таких ситуаціях має сенс використовувати більш «легкий» клас Sprite.
Якщо Ви створюєте клас ActionScript. який розширює MovieClip або Sprite. то він автоматично успадковує всі властивості і методи, які можуть бути успадковане від цих класів. Потім Ви можете додати специфічні методи і властивості, які будуть належати тільки того типу об'єкта, який Ви створюєте.
Припустимо, Ви робите гру і хочете створити для неї об'єкт, наприклад, космічний корабель. Природно, що цей об'єкт:
- повинен бути оформлений графічно;
- мати своє становище на сцені;
- переміщатися певним чином;
- обертатися;
- слухати події ENTER_FRAME для його анімації;
- слухати події миші і клавіатури для взаємодії з користувачем.
Всі ці речі здатні робити як MovieClip. так і Sprite. тому можна розширювати будь-який з цих класів.
Потім Ви можете додати в який розширює клас такі унікальні властивості, як:
- швидкість;
- запас палива;
- ступінь пошкодження;
Давайте створимо такий клас:
Зауважте! Перше, що Ви повинні зробити - це імпортувати клас Sprite. який знаходиться в пакеті flash.display. Якщо Ви вирішите розширювати MovieClip. то вам все одно спочатку потрібно імпортувати цей клас з того ж самого пакета: flash.display. MovieClip.
Створення класу документа
Ви вже отримали достатньо інформації про класи ActionScript 3 для того, щоб створити такий клас, який був би дійсно корисний. Я вже говорив про те, наскільки важливі класи при створенні swf-файлу, який управляється AS3. Головна причина цього - в ActionScript 3 існує концепція класу документа (document class). Говорячи простою мовою, клас документа розширює Sprite або MovieClip і використовується в якості головного класу Вашого SWF. Після завантаження такого SWF буде Викликаний його конструктор. Це стане початковою точкою, після якої буде відбуватися все, що Ви захочете:
Якщо Ви працюєте в Flash CS3-CS6, то у Вас є можливість використовувати клас документа як додаткову опцію. Ви також можете записувати код прямо в кадрі на шкалі часу.
Отже, давайте подивимося на приклад такого класу документа:
Поки нічого нового, правда? Все це Ви вже бачили в попередньому уроці, але тут вся інформація зібрана в одному місці:
- використовується пакет ActionScript за замовчуванням;
- імпортується клас Sprite;
- розширюється клас Sprite.
У конструкторі ми записуємо рядок, яка викликає метод init. Ви можете помістити весь код безпосередньо в конструктор і це не буде помилкою, але прийнято вважати хорошою практикою обмеження кількості коду в ньому. Тому ми перенесемо наш код в інший метод (функцію), а вже його викличемо в конструкторі. Протягом цього уроку і наступних, якщо я буду показувати Вам як приклад якийсь невеликий шматок коду для тестування, Ви повинні будете вставляти його в цей метод init. Після компіляції і запуску флеш-ролика (swf-файлу) буде викликаний конструктор, який і буде керувати Вашим кодом. Все просто.
Тепер давайте навчимося підключати клас документа до swf-файлу.
Створення простого додатка в ActionScript 3.0
На сьогоднішній день існує 3 інструменту, здатних створювати swf-файл, який, фактично, і є додатком або програмою, написаної на ActionScript 3:
Всі три продукти створені американською компанією Adobe. Два перших є платними, третій - безкоштовний, з відкритим кодом (open source).
У цьому курсі ми будемо працювати тільки у Flash Professional (далі, просто Flash).
Отже, давайте створимо клас, завданням якого буде намалювати червоний коло на сцені. Зробити це просто, спираючись на знання, отримані в цьому і попередніх уроках курсу «Основи анімації в ActionScript 3.0».
Плюс, ми познайомимося з новим для нас класом Graphics. що містить набір методів, за допомогою яких можна створювати векторні фігури.
До числа об'єктів відображення, що підтримують можливості малювання, відносяться об'єкти Sprite і Shape. Кожен з цих класів включає властивість graphics. що є об'єктом Graphics.
Зауважте, що цей клас є точною копією того, що ми записували, обговорюючи тему створення класу документа. Тут ми лише додали кілька команд малювання в метод init.
Зауважте, що Ви повинні ввести ім'я класу, а не ім'я файлу, тому немає потреби додавати розширення. as в кінці. Однак, якщо Ваш клас знаходиться всередині пакету з певною структурою, то вкажіть повний шлях до нього, наприклад, ru. urokiflashas3. Test.
Масштабування флеш-ролика
Ще один момент на замітку перш ніж ми приступимо до реального програмування: якщо Ви тестируете свій ролик в середовищі розробки Flash або в автономному Flash Player'е, то він буде відображатися в розмірах, встановлених Вами в поле Size панелі Властивості (Properties).
Але якщо Ви тестируете в браузері або будь-якої іншої програми, яка здатна відтворювати swf-файли, то існує ймовірність того, що ролик заповнить весь доступний простір, спотворивши спочатку певний розмір. Коли подібне відбувається, то просто додайте наступні два рядки в метод init () Вашого класу:
Цей код виключає некоректне масштабування ролика і поміщає його в лівий верхній кут вікна, яке його відображає. Якщо Ви вирішите використовувати цей код, то раніше не забудьте імпортувати класи flash.display. StageScaleMode і flash.display. StageAlign. Приклади, які будуть розбиратися в цьому курсі такий код не використовують, тому що він не завжди доречний. Тому, просто пам'ятайте про його існування і застосовуйте там де потрібно.
Упевнений, що матеріал уроку досить простий для розуміння, тому перейдемо відразу до контрольних питань.
Контрольні питання за матеріалом уроку
- У чому полягає основна відмінність класу Sprite від MovieClip?
- Які властивості цих класів Ви знаєте?
- Що таке клас документа і для чого він потрібен?
- Які класи в ActionScript 3 підтримують можливість векторного малювання?
- Чи можна вставляти код на шкалу часу, якщо Ви використовуєте клас документа?
Ну, і задавайте питання, якщо щось незрозуміло. Відповім на всі.