Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   именование событий: соотв. имени константы и её значения + уникальность значения (http://www.flasher.ru/forum/showthread.php?t=119248)

fljot 16.12.2008 01:53

именование событий: соотв. имени константы и её значения + уникальность значения
 
самое распространённое именование:
Код AS3:

public static const MY_EVENT_TYPE:String = "myEventType";

возникает проблема: могут быть несколько событий, с одинаковым именем (типом). например в одном пакете класс ContentEvent с таким типом
Код AS3:

public static const HIDE:String = "hide";

и какое-нибудь другое событие. пусть флексовое событие FlexEvent.HIDE.
если оба всплывают, и где-то уровнем выше есть подписка на событие типа "hide", то поймаются оба, причём ловля одного из них вызовет ошибку.

решение прописывать полный путь пакета и класса решило бы эту проблему
Код AS3:

public static const HIDE:String = "my.package.ContentEvent.hide";

но при подписке через mxml это должно было бы выглядеть так:
Код:

<someComponent my.package.ContentEvent.hide="eventHandler(event)" />
, что не только страшно и долго, но и синтаксически некомпилируемо)


как грамотно обеспечивается уникальность имени-типа и компактная запись?

wvxvw 16.12.2008 10:17

Возможно в таком случае стоит подписывать на события не из МХМЛя? Вот, полезно знать, применительно к тому, как Флекс интерпретирует someEvetnt="eventHandler(event)"
http://the33cows.com/actionscript-30/2008/01/23/33/
:)

ЗЫ. Еще: скомпилируй с -keep ключем, посмотришь, что получилось в АС коде (эта опция сохраняет АС файлы сгенеренные из МХМЛ). Ну и еще можно запостить это в качестве пожелания сюда:
https://bugs.adobe.com/flex/

ЗЫЫ. Еще, предположение, а что будет, если кастомный евент поместить в отдельный неймспейс? Или, то же самое, но по отношению к слушателю?

fljot 16.12.2008 13:47

да, коров читаю. и вобщем это понятно, что у адоби эта связка ИМЯ_СОБЫТИЯ = имяСобытия не просто так рекомендована.
по поводу уникальости - неймспейсы тут не причём ведь, это же всё только о событийной модели речь. есть два события с одним типом - слушатель будет сконфужен.

так что, решение - давать максимум короткие уникальные имена? ContentEvent.CONTENT_HIDE например?

wvxvw 16.12.2008 23:53

Я это говорил к тому, чтобы кастомный евент был с имененм типа:
<someComponent my_namespace:hide="eventHandler(event)" />

EDIT: Только я это не пробовал, но, технически, может такое и возможно :)


Часовой пояс GMT +4, время: 18:44.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.