Використання метатеґів у розробці RIA-застосунків за допомогою Flex презентация

Содержание

Роман {nouba} Шупер, http://noubase.com Спробуємо дати собі відповіді на наступні запитання: Що таке метатеґи? Для чого вони? Як їх застосовувати? Які види метатеґів бувають? Для чого кожен з них служить? Коли

Слайд 1Роман {nouba} Шупер, http://noubase.com
Використання метатеґів у розробці RIA-застосунків за допомогою Flex
Роман

{nouba} Шупер, The Midnight Coders
http://noubase.com

спеціально дла 8-ої зустрічі UAFPUG в Миколаєві (20.12.2008)

Рівень слухачів: середній - експерт

Галузь: Adobe Flex


Слайд 2Роман {nouba} Шупер, http://noubase.com
Спробуємо дати собі відповіді на наступні запитання:
Що таке

метатеґи?
Для чого вони?
Як їх застосовувати?
Які види метатеґів бувають?
Для чого кожен з них служить?
Коли і як варто їх застосовувати?
Про що я забув сказати або не знав?


Слайд 3Роман {nouba} Шупер, http://noubase.com
1. Що таке метатеґи?
Метатеґ – спеціальна конструкція, чітко

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

Узагальнене визначення:


Слайд 4Роман {nouba} Шупер, http://noubase.com
[Event(name="myClickEvent", type="flash.events.Event")]
1. Що таке метатеґи?
Структура:
[…] –

Тіло метатеґа
Event – Тип метатеґа
(…) – Перелік всіх полів метатеґа
type – Поле метатеґа
"myClickEvent" – Значення поля метатега

Слайд 5Роман {nouba} Шупер, http://noubase.com
2. Для чого вони?
Для зручності
[Event], [Style], [ArrayElementType], [Effect]


Для спеціальних можливостей
[Bindable], [RemoteClass], [Embed], [IconFile] …

Для структуризації
[Exclude], [ExcludeClass], [Deprecated] …


Слайд 6Роман {nouba} Шупер, http://noubase.com
3. Як їх застосовувати?
В ActionScript 3:


Слайд 7Роман {nouba} Шупер, http://noubase.com
3. Як їх застосовувати?
В MXML:


Слайд 8Роман {nouba} Шупер, http://noubase.com
09. [ExcludeClass]
10. [IconFile]
11. [Inspectable]
12. [InstanceType]


13. [NonCommittingChangeEvent]
14. [RemoteClass]
15. [Style]
16. [Transient]

4. Які види метатеґів бувають?

Список і ті, які ми розглянемо далі:

[ArrayElementType]
[Bindable]
[DefaultProperty]
[Deprecated]
[Effect]
[Embed]
[Event]
[Exclude]


Слайд 9Роман {nouba} Шупер, http://noubase.com

4. Які види метатеґів бувають?
Список і ті,

які ми розглянемо далі:

17. [Mixin]
18. [MaxChildren]
19. [PercentProxy]
20. [SWF]
21. [AccessibilityClass]
22. [ChangeEvent]
23. [CollapseWhiteSpace]
24. [Frame]
25. …

НЕдокументовані


Слайд 10Роман {nouba} Шупер, http://noubase.com
[ArrayElementType]
Працює тільки в MXML
Вказує на допустимий тип елементів

масива

Мінуси:

Плюси:

Структурує типи
Позбавляє від малопомітних і каверзних помилок з типами

Розвінчуємо міфи:

Не є аналогом типізованого масива чи Vector’a в АctionScript 3 FP10.
Не додає жодного прискорення в роботі


Слайд 11Роман {nouba} Шупер, http://noubase.com
[ArrayElementType]
ActionSctipt3 Class (Fragment)
Вказувати повністю з пакетом, за винятком

примітивів!

Слайд 12Роман {nouba} Шупер, http://noubase.com
[ArrayElementType]
MXML Layout (Fragment)
In initializer for 'testArray': type Number

is not assignable to target type Array or target element type . ArrayElementType/src main.mxml line 8

Слайд 13Роман {nouba} Шупер, http://noubase.com
[DefaultProperty]
Визначає властивість, по замовчуванню, для класа
package mx.collections
{

[DefaultProperty("source")] public class

ArrayCollection ….

public function set source(s:Array):void
{
list = new ArrayList(s);
}

Слайд 14Роман {nouba} Шупер, http://noubase.com
[DefaultProperty]


Слайд 15Роман {nouba} Шупер, http://noubase.com
[DefaultProperty]


Слайд 16Роман {nouba} Шупер, http://noubase.com
[Inspectable]


Слайд 17Роман {nouba} Шупер, http://noubase.com
[Inspectable]
Як це виглядає в коді
Увага! Не використовуйте одинарні

лапки в описі полів метатеґа! По не зрозумілим причинам метатеґ перестає працювати

Слайд 18Роман {nouba} Шупер, http://noubase.com
[Inspectable]
Детальніше про поля метатеґа
category
Визначає до якої групи належатиме

ця властивість в Property Inspector’i Flex Builder’a.
Дефолна категорія – “Other”.

Слайд 19Роман {nouba} Шупер, http://noubase.com
[Inspectable]
Детальніше про поля метатеґа
enumeration
Це перелік усіх можливих валідних

значень для цієї властивості. Сортується завжди за алфавітом.
Наприклад:
enumeration=“UAFPUG, BAFPUG, RAFPUG” перетвориться в наступний список

Слайд 20Роман {nouba} Шупер, http://noubase.com
[Inspectable]
Детальніше про поля метатеґа

environment
defaultValue
format
listOffset

name
type
variable
verbose

Ще 8 полів у метатеґа Inspectable,
які, нажаль, не мають жодного змісту для Flex-розробника. Усі всі вони використовуються для Flash-компонент, але це вже тема для іншої доповіді ☺.


Слайд 21Роман {nouba} Шупер, http://noubase.com
[Event]
Служить для декларації подій які можуть виникнути в

компоненті

“Кривий” і не зручний парсер значення поля name.
Відсутність перевірки правильності вказаного класа в полі type в момент компіляції (в Flex Builder’i, а в IntelliJ IDEA 8 - працює)

Мінуси:

Плюси:

Пришвидшує підписку на події.
Структурує інформацію про всі можливі події в класі


Слайд 22Роман {nouba} Шупер, http://noubase.com
[Event]
В дії (MXML):


Слайд 23Роман {nouba} Шупер, http://noubase.com
[Event]
В дії (ActionScript 3):


Слайд 24Роман {nouba} Шупер, http://noubase.com
В коді:
[Event]
Прописуємо метатеґ в нашому класі. В

полі type вказує клас повністю з пакетом

Створюємо наш власний клас події і добавляємо константу:

Зрозуміло, що значення константи TEST_EVENT і поля name повинні співпадати


Слайд 25Роман {nouba} Шупер, http://noubase.com
[Event]
2 правила парсера:
Між маленькою і великою буквою,

або двома великими буквами буде вставлено знак “_”
Усі літери між знаками “_” буде піднято в верхні регістр

“testEvent” -> TEST_EVENT

“TestEvent” -> _TEST_EVENT

“TEstEvent” -> _T_EST_EVENT


Слайд 26Роман {nouba} Шупер, http://noubase.com
[Event]
Увага! Це погана практика. Якщо, дуже не хочеться

створювати окремий клас події.

Слайд 27Роман {nouba} Шупер, http://noubase.com
[Style]
Декларує властивість стиля, а також поведінку цієї властивості

та її ознаки.

Приклади з Flex framework’a:

Усі поля метатеґа



Слайд 28Роман {nouba} Шупер, http://noubase.com
[Style]
name


Визначає як буде відображатись дана властивість в списку


Слайд 29Роман {nouba} Шупер, http://noubase.com
[Style]
enumeration


Перелічує усі валідні значення для даної властивості


Слайд 30Роман {nouba} Шупер, http://noubase.com
inherit
[Style]
Вказує на те чи будуть усі потомки компонента

наслідувати цю властивість від нього чи ні




Слайд 31Роман {nouba} Шупер, http://noubase.com
inherit
[Style]

Червоний не унаслідував суцільну зелену рамку від

свого батьківського контейнера

Слайд 32Роман {nouba} Шупер, http://noubase.com
inherit
[Style]


Як бачимо унаслідував червоний колір тексту від

батьківської

Слайд 33Роман {nouba} Шупер, http://noubase.com
type
[Style]
Визначає який тип готова прийняти ця властивість


Абсолютно очікувано,

отримуємо помилку

Слайд 34Роман {nouba} Шупер, http://noubase.com
[Style]
arrayType

Нажаль, на даному етапі розвитку Flex Builder ніяк

не реагує на порушення типу даних, але все-таки рекомендую використовувати це поле. Можливо колись вони це поправлять.

Слайд 35Роман {nouba} Шупер, http://noubase.com
format
[Style]
Має зміст лише для компонентів розроблених для Flash.

Знову ж таки це уже тема для іншої доповіді.

states

Вказує на те, що при розробці класу, який буде використаний для скінування ви можете використовувати стейти з відповідними іменами.


Слайд 36Роман {nouba} Шупер, http://noubase.com
[PercentProxy]
В дії на прикладі mx.core.UIComponent:
Передає параметр в іншу

сеттер-функцію, попередньо вирізавши знак процентів

Слайд 37Роман {nouba} Шупер, http://noubase.com
[CollapseWhiteSpace]
Працює виключно всередині MXML теґів
Мінуси:
Плюси:
Деколи робить за нас

нашу роботу ;)

Слайд 38Роман {nouba} Шупер, http://noubase.com
[CollapseWhiteSpace]


Слайд 39Роман {nouba} Шупер, http://noubase.com
[CollapseWhiteSpace]


Слайд 40Роман {nouba} Шупер, http://noubase.com
[Mixin]
Викликає статичний метод init() ще до конструктора.




Слайд 41Роман {nouba} Шупер, http://noubase.com
[Mixin]
Хто вгадає який буде output?


Слайд 42Роман {nouba} Шупер, http://noubase.com
[MaxChildren]
Жодної корисної дії від цього метатеґа не виявлено

хоч його і було виявлено в 3 класах Flex Framework’a, a саме:

mx.controls.ButtonBar
mx.controls.LinkBar
mx.controls.TabBar

Якщо хтось все-таки знайде користь в цьому чудному метатезі – негайно сповістіть мене ☺


Слайд 43Роман {nouba} Шупер, http://noubase.com
[RemoteClass]
Слугує для зв’язування пари класів які повинні мапитись

між собою при використанні ORB технологій.

ActionScript 3 Class

Alias вказується з повним ім’ям включно з пакетом




Слайд 44Роман {nouba} Шупер, http://noubase.com
[RemoteClass]
Java Class

При серіалізації та десереалізації усі поля і

методи будуть правильно розпізнані рефлектором

Слайд 45Роман {nouba} Шупер, http://noubase.com
[Transient]

Слугує для того щоб управляти списком полів та

методів які підпадуть під серіалізацію в AMF пакет на стороні Flash-плеєра


Поле sum може надалі використовуватись на стороні клієнта і воно ніколи не буде серіалізовано і передано на сервер.


Слайд 46Роман {nouba} Шупер, http://noubase.com
[ExcludeClass]
Ховає клас від intellisense’a Flex Builder’а. Тим не

менше, Ви можете спокійного імпортувати й використовувати його. Використовується розробниками Flex framework’a, швидше за все, для внутрішніх цілей, або для тих класів які ще не до кінця відтестовані і не випущені.

Слайд 47Роман {nouba} Шупер, http://noubase.com
[Exclude]
Дає змогу приховати частину API, яку клас унаслідував

від свого суперкласа

VBox ховає властивість direction, яку він унаслідував від Box, адже вона уже немає жодного логічного значення


Слайд 48Роман {nouba} Шупер, http://noubase.com
[Exclude]
[Exclude(name="direction", kind="property")]
[Exclude(name="setFocus", kind="method")]
[Exclude(name="focusIn", kind="event")]

[Exclude(name="horizontalGap", kind="style")]
[Exclude(name="focusInEffect", kind="effect")] 
Цим

метатеґом також можна приховати дію інших метатеґів, таких як: [Style], [Event] та [Effect], як показано нижче

Слайд 49Роман {nouba} Шупер, http://noubase.com
[Deprecated]
Дуже важливий метатеґ для тих хто розробляє власні

бібліотеки і підтримує їх, випускаючи нові версії.

Використовуйте цей метатеґ на усі методах і властивостях, які являються застарілими для нової версії бібліотеки і мають новий покращений аналог або просто стали непотрібні


Слайд 50Роман {nouba} Шупер, http://noubase.com
[Deprecated]
При подальшому використанні застарілого метода розробник буде попереджений

як значком

Так і повідомленням яке ви йому там напишете


Слайд 51Роман {nouba} Шупер, http://noubase.com
[Deprecated]
Якщо розробник й надалі ігноруватиме наші попередження, то

Flex Builder буде постійно нагадувати йому в панельці Problems про використання забороненого метода

Уже під час виконання жодних помилок не виникає


Слайд 52Роман {nouba} Шупер, http://noubase.com
[SWF]
Цей метатеґ не несе жодної користі Flex-розробникам, але

часто використовується в чистих ActionScript 3 проектах. За його допомогою ми сконфігурувати деякі параметри кінцевого .swf документа

width – ширину нашого застосунка

height – висоту нашого застосунка

frameRate – частоту кадрів

backgroundColor – та колір тла

Що ще треба для щастя?


Слайд 53Роман {nouba} Шупер, http://noubase.com
6. Коли і як варто їх застосовувати?
Метатеґи потрібно

використовувати побільше й почастіше

Слайд 54Роман {nouba} Шупер, http://noubase.com
Усім дякую за увагу.
Запитання?


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика