'

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

Понравилась презентация – покажи это...





Слайд 0

Використання метатеґів у розробці RIA-застосунків за допомогою Flex Роман {nouba} Шупер, The Midnight Coders http://noubase.com спеціально дла 8-ої зустрічі UAFPUG в Миколаєві (20.12.2008) Рівень слухачів: середній - експерт Галузь: Adobe Flex


Слайд 1

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


Слайд 2

Роман {nouba} Шупер, http://noubase.com 3 1. Що таке метатеґи? Метатеґ – спеціальна конструкція, чітко визначеного формату, яка дає змогу додати певні дані до загального коду програми чи структурувати їх, а також вносити зміни в поведінку компілятора чи доповнювати її потрібними нам директивами. Узагальнене визначення:


Слайд 3

Роман {nouba} Шупер, http://noubase.com 4 [Event(name="myClickEvent", type="flash.events.Event")] 1. Що таке метатеґи? Структура: […] – Тіло метатеґа Event – Тип метатеґа (…) – Перелік всіх полів метатеґа type – Поле метатеґа "myClickEvent" – Значення поля метатега


Слайд 4

Роман {nouba} Шупер, http://noubase.com 5 2. Для чого вони? Для зручності [Event], [Style], [ArrayElementType], [Effect] … Для спеціальних можливостей [Bindable], [RemoteClass], [Embed], [IconFile] … Для структуризації [Exclude], [ExcludeClass], [Deprecated] …


Слайд 5

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


Слайд 6

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


Слайд 7

Роман {nouba} Шупер, http://noubase.com 8 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]


Слайд 8

Роман {nouba} Шупер, http://noubase.com 9 4. Які види метатеґів бувають? Список і ті, які ми розглянемо далі: 17. [Mixin] 18. [MaxChildren] 19. [PercentProxy] 20. [SWF] 21. [AccessibilityClass] 22. [ChangeEvent] 23. [CollapseWhiteSpace] 24. [Frame] 25. … НЕдокументовані


Слайд 9

Роман {nouba} Шупер, http://noubase.com 10 [ArrayElementType] Працює тільки в MXML Вказує на допустимий тип елементів масива Мінуси: Плюси: Структурує типи Позбавляє від малопомітних і каверзних помилок з типами Розвінчуємо міфи: Не є аналогом типізованого масива чи Vector’a в АctionScript 3 FP10. Не додає жодного прискорення в роботі


Слайд 10

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


Слайд 11

Роман {nouba} Шупер, http://noubase.com 12 [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


Слайд 12

Роман {nouba} Шупер, http://noubase.com 13 [DefaultProperty] Визначає властивість, по замовчуванню, для класа package mx.collections { [DefaultProperty("source")] public class ArrayCollection …. public function set source(s:Array):void { list = new ArrayList(s); }


Слайд 13

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


Слайд 14

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


Слайд 15

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


Слайд 16

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


Слайд 17

Роман {nouba} Шупер, http://noubase.com 18 [Inspectable] Детальніше про поля метатеґа category Визначає до якої групи належатиме ця властивість в Property Inspector’i Flex Builder’a. Дефолна категорія – “Other”.


Слайд 18

Роман {nouba} Шупер, http://noubase.com 19 [Inspectable] Детальніше про поля метатеґа enumeration Це перелік усіх можливих валідних значень для цієї властивості. Сортується завжди за алфавітом. Наприклад: enumeration=“UAFPUG, BAFPUG, RAFPUG” перетвориться в наступний список


Слайд 19

Роман {nouba} Шупер, http://noubase.com 20 [Inspectable] Детальніше про поля метатеґа environment defaultValue format listOffset name type variable verbose Ще 8 полів у метатеґа Inspectable, які, нажаль, не мають жодного змісту для Flex-розробника. Усі всі вони використовуються для Flash-компонент, але це вже тема для іншої доповіді ?.


Слайд 20

Роман {nouba} Шупер, http://noubase.com 21 [Event] Служить для декларації подій які можуть виникнути в компоненті “Кривий” і не зручний парсер значення поля name. Відсутність перевірки правильності вказаного класа в полі type в момент компіляції (в Flex Builder’i, а в IntelliJ IDEA 8 - працює) Мінуси: Плюси: Пришвидшує підписку на події. Структурує інформацію про всі можливі події в класі


Слайд 21

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


Слайд 22

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


Слайд 23

Роман {nouba} Шупер, http://noubase.com 24 В коді: [Event] Прописуємо метатеґ в нашому класі. В полі type вказує клас повністю з пакетом Створюємо наш власний клас події і добавляємо константу: Зрозуміло, що значення константи TEST_EVENT і поля name повинні співпадати


Слайд 24

Роман {nouba} Шупер, http://noubase.com 25 [Event] 2 правила парсера: Між маленькою і великою буквою, або двома великими буквами буде вставлено знак “_” Усі літери між знаками “_” буде піднято в верхні регістр “testEvent” -> TEST_EVENT “TestEvent” -> _TEST_EVENT “TEstEvent” -> _T_EST_EVENT


Слайд 25

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


Слайд 26

Роман {nouba} Шупер, http://noubase.com 27 [Style] Декларує властивість стиля, а також поведінку цієї властивості та її ознаки. Приклади з Flex framework’a: Усі поля метатеґа


Слайд 27

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


Слайд 28

Роман {nouba} Шупер, http://noubase.com 29 [Style] enumeration Перелічує усі валідні значення для даної властивості


Слайд 29

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


Слайд 30

Роман {nouba} Шупер, http://noubase.com 31 inherit [Style] Червоний <mx:Canvas> не унаслідував суцільну зелену рамку від свого батьківського контейнера


Слайд 31

Роман {nouba} Шупер, http://noubase.com 32 inherit [Style] Як бачимо <mx:Label> унаслідував червоний колір тексту від батьківської <mx:Panel>


Слайд 32

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


Слайд 33

Роман {nouba} Шупер, http://noubase.com 34 [Style] arrayType Нажаль, на даному етапі розвитку Flex Builder ніяк не реагує на порушення типу даних, але все-таки рекомендую використовувати це поле. Можливо колись вони це поправлять.


Слайд 34

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


Слайд 35

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


Слайд 36

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


Слайд 37

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


Слайд 38

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


Слайд 39

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


Слайд 40

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


Слайд 41

Роман {nouba} Шупер, http://noubase.com 42 [MaxChildren] Жодної корисної дії від цього метатеґа не виявлено хоч його і було виявлено в 3 класах Flex Framework’a, a саме: mx.controls.ButtonBar mx.controls.LinkBar mx.controls.TabBar Якщо хтось все-таки знайде користь в цьому чудному метатезі – негайно сповістіть мене ?


Слайд 42

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


Слайд 43

Роман {nouba} Шупер, http://noubase.com 44 [RemoteClass] Java Class При серіалізації та десереалізації усі поля і методи будуть правильно розпізнані рефлектором


Слайд 44

Роман {nouba} Шупер, http://noubase.com 45 [Transient] Слугує для того щоб управляти списком полів та методів які підпадуть під серіалізацію в AMF пакет на стороні Flash-плеєра Поле sum може надалі використовуватись на стороні клієнта і воно ніколи не буде серіалізовано і передано на сервер.


Слайд 45

Роман {nouba} Шупер, http://noubase.com 46 [ExcludeClass] Ховає клас від intellisense’a Flex Builder’а. Тим не менше, Ви можете спокійного імпортувати й використовувати його. Використовується розробниками Flex framework’a, швидше за все, для внутрішніх цілей, або для тих класів які ще не до кінця відтестовані і не випущені.


Слайд 46

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


Слайд 47

Роман {nouba} Шупер, http://noubase.com 48 [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], як показано нижче


Слайд 48

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


Слайд 49

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


Слайд 50

Роман {nouba} Шупер, http://noubase.com 51 [Deprecated] Якщо розробник й надалі ігноруватиме наші попередження, то Flex Builder буде постійно нагадувати йому в панельці Problems про використання забороненого метода Уже під час виконання жодних помилок не виникає


Слайд 51

Роман {nouba} Шупер, http://noubase.com 52 [SWF] Цей метатеґ не несе жодної користі Flex-розробникам, але часто використовується в чистих ActionScript 3 проектах. За його допомогою ми сконфігурувати деякі параметри кінцевого .swf документа width – ширину нашого застосунка height – висоту нашого застосунка frameRate – частоту кадрів backgroundColor – та колір тла Що ще треба для щастя?


Слайд 52

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


Слайд 53

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


×

HTML:





Ссылка: