Використання метатеґів у розробці RIA-застосунків за допомогою Flex Роман {nouba} Шупер, The Midnight CodersThe Midnight Coders спеціально.

Презентация:



Advertisements
Похожие презентации
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Advertisements

1. Определить последовательность проезда перекрестка
Класи пам'яті даних. Клас пам'яті, час існування та видимість об'єкта Кожен обєкт програми (змінна, функція,...) має свій тип і клас памяті. Тип визначає.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Школьная форма Презентация для родительского собрания.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Основи алгоритмізації та програмування Надання значень величинам. Вказівки присвоєння та введення.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Записи в Delphi і Pascal I саченко Анна 10- Б 1. Запис являє собою сукупність обмеженого числа логічно пов'язаних компонент, що належать до різних типів.
Типовые расчёты Растворы
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
Урок 25 5 клас ЛІНІЙНІ АЛГОРИТМИ.
7 Поняття змінної та її значення За навчальною програмою 2017 року Урок 19.
Урок 27 5 клас. АЛГОРИТМИ З РОЗГАЛУЖЕННЯМИ.
8 Практична робота 11 Налагодження готової програми За новою програмою Урок 38.
дней и ночей 27 миллионов жизней советских людей 3.
Розробив: Студент 221 грп Олару Дмитро. Залежно від відстані виділяють: Локальні мережі – об'єднання комп'ютерів, що розміщені на невеликих відстанях.
8 За новою програмою Урок 31 Практична робота 10 Складання та виконання лінійних алгоритмів опрацювання величин в навчальному середовищі програмування.
Види веб-сайтів та способи їх створення НВК "Школа-гімназія "Сихівська"
Кваліфікаційна робота На тему: Робота з фрагментами тексту в MS Word Учениця.
Транксрипт:

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

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

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

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

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

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

Роман {nouba} Шупер, Як їх застосовувати? В MXML: Всередині теґа

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

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

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

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

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

Роман {nouba} Шупер, 14 [DefaultProperty]

Роман {nouba} Шупер, 15 [DefaultProperty]

Роман {nouba} Шупер, 16 [Inspectable]

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

Роман {nouba} Шупер, 18 [Inspectable] Детальніше про поля метатеґа category Визначає до якої групи належатиме ця властивість в Property Inspectori Flex Buildera. Дефолна категорія –Other.

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

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

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

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

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

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

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

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

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

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

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

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

Роман {nouba} Шупер, 31 inherit [Style] Червоний не унаслідував суцільну зелену рамку від свого батьківського контейнера

Роман {nouba} Шупер, 32 inherit [Style] Як бачимо унаслідував червоний колір тексту від батьківської

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

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

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

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

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

Роман {nouba} Шупер, 38 [CollapseWhiteSpace]

Роман {nouba} Шупер, 39 [ CollapseWhiteSpace ]

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

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

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

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

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

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

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

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

Роман {nouba} Шупер, 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], як показано нижче

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

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

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

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

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

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