Класи movieclip і sprite в actionscript 3

Можливо, Вам ніколи і не доведеться створювати суперклас, а потім підклас, який його розширює. Але, якщо Ви серйозно налаштовані працювати з AS3, тобто вирішили піти далі простого розміщення коду в кадрі на шкалі часу, то Ви обов'язково зіткнетеся з розширенням таких класів, як MovieClip і Sprite.

У цьому уроці Ви дізнаєтесь:

  1. Про класах MovieClip і Sprite в ActionScript 3, а також в чому полягає головна відмінність другого від першого;
  2. Як розширювати ці класи;
  3. Як створюється клас документа і для яких цілей служить;
  4. Як створювати просте додаток в 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.

Класи movieclip і sprite в actionscript 3

Зауважте, що Ви повинні ввести ім'я класу, а не ім'я файлу, тому немає потреби додавати розширення. as в кінці. Однак, якщо Ваш клас знаходиться всередині пакету з певною структурою, то вкажіть повний шлях до нього, наприклад, ru. urokiflashas3. Test.

Класи movieclip і sprite в actionscript 3

Масштабування флеш-ролика

Ще один момент на замітку перш ніж ми приступимо до реального програмування: якщо Ви тестируете свій ролик в середовищі розробки Flash або в автономному Flash Player'е, то він буде відображатися в розмірах, встановлених Вами в поле Size панелі Властивості (Properties).

Класи movieclip і sprite в actionscript 3

Але якщо Ви тестируете в браузері або будь-якої іншої програми, яка здатна відтворювати swf-файли, то існує ймовірність того, що ролик заповнить весь доступний простір, спотворивши спочатку певний розмір. Коли подібне відбувається, то просто додайте наступні два рядки в метод init () Вашого класу:

Цей код виключає некоректне масштабування ролика і поміщає його в лівий верхній кут вікна, яке його відображає. Якщо Ви вирішите використовувати цей код, то раніше не забудьте імпортувати класи flash.display. StageScaleMode і flash.display. StageAlign. Приклади, які будуть розбиратися в цьому курсі такий код не використовують, тому що він не завжди доречний. Тому, просто пам'ятайте про його існування і застосовуйте там де потрібно.

Упевнений, що матеріал уроку досить простий для розуміння, тому перейдемо відразу до контрольних питань.

Контрольні питання за матеріалом уроку

  1. У чому полягає основна відмінність класу Sprite від MovieClip?
  2. Які властивості цих класів Ви знаєте?
  3. Що таке клас документа і для чого він потрібен?
  4. Які класи в ActionScript 3 підтримують можливість векторного малювання?
  5. Чи можна вставляти код на шкалу часу, якщо Ви використовуєте клас документа?

Ну, і задавайте питання, якщо щось незрозуміло. Відповім на всі.

Схожі статті