1 / 54

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

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

tilden
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

  8. Документовані 4. Які види метатеґів бувають? Список і ті, які ми розглянемо далі: • [ArrayElementType] • [Bindable] • [DefaultProperty] • [Deprecated] • [Effect] • [Embed] • [Event] • [Exclude] 09. [ExcludeClass] 10. [IconFile] 11. [Inspectable] 12. [InstanceType] 13. [NonCommittingChangeEvent] 14. [RemoteClass] 15. [Style] 16. [Transient] Роман {nouba} Шупер, http://noubase.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  27. 4. format 5. enumeration 6. inherit • name • type • arrayType 7. states [Style] Декларує властивість стиля, а також поведінку цієї властивості та її ознаки. Приклади з Flex framework’a: Усі поля метатеґа Роман {nouba} Шупер, http://noubase.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  48. [Exclude] Цим метатеґом також можна приховати дію інших метатеґів, таких як:[Style], [Event]та [Effect], як показано нижче [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")]  Роман {nouba} Шупер, http://noubase.com

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

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

More Related