Определение поведения события Flex по умолчанию - PullRequest
0 голосов
/ 21 апреля 2010

Как мне определить поведение по умолчанию для отменяемого события?

Например, я где-то читал, что TextEvent.TEXT_INPUT имеет поведение по умолчанию, и это поведение по умолчанию включает добавление текстового символа, связанного с клавишей, которая была нажата, в TextInput. Это имеет смысл.

Но если бы я этого не прочитал, как бы я узнал, что такое поведение по умолчанию? Кроме гадания. В этом случае это, вероятно, очевидно. Но в других ситуациях это может быть не так.

Например, в документах посмотрите свойство отменяемого DataGridEvent.HEADER_RELEASE. Там написано:

отменяется: true

Итак, похоже, что «поведение по умолчанию» связано с событием DataGridEvent.HEADER_RELEASE. Но что это? И зачем мне это отменять, если я не совсем уверен, что это такое? :)

спасибо.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2010

Вот что я думаю, чтобы быть правдой -

Чтобы отменить поведение по умолчанию, связанное с событием, должно быть 2 вещи:

  1. Событие должно быть помечено как отменяемое (вы можете проверить свойство отменяемого события, чтобы определить это). Если вы отправляете событие самостоятельно, установите для третьего параметра значение true, чтобы пометить событие как отменяемое. Если событие помечено как отменяемое, вызов event.preventDefault () установит событие как «отмененное», а запрос event.isDefaultPrevented () вернет true. Если событие НЕ помечено как отменяемое, вызов метода event.preventDefault () ничего не изменит. Запрос event.isDefaultPrevented () всегда возвращает false независимо от того, сколько раз вы вызываете event.preventDefault ().

  2. Обработчик события, зарегистрированный для события, должен фактически иметь возможность ничего не делать (т.е. предотвращать поведение по умолчанию, связанное с событием). Поэтому в обработчике должно быть что-то вроде этого:

    if (! Event.isDefaultPrevented ()) {doSomething (); }

Итак, это все еще оставляет меня с вопросом - «Для отменяемого события типа X, каково поведение по умолчанию?»

Полагаю, это зависит от цели события. Например, целью события DataGridEvent.HEADER_RELEASE является DataGrid, а внутри класса DataGrid вы найдете это в конструкторе:

addEventListener(DataGridEvent.HEADER_RELEASE,
                     headerReleaseHandler,
                     false, EventPriority.DEFAULT_HANDLER);

и обработчик выглядит так:

private function headerReleaseHandler(event:DataGridEvent):void
{
    if (!event.isDefaultPrevented())
    {
        manualSort = true;
        sortByColumn(event.columnIndex);
        manualSort = false;
    }
}

Или вы можете бесцельно ковыряться в документах и, возможно, наткнуться на ответ, подобный этому:

http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html#event%3aheaderRelease

«Элемент управления DataGrid имеет обработчик по умолчанию для этого события, который реализует сортировку по одному столбцу»

Надеюсь, этот ответ поможет уменьшить бесцельность поиска документов.

Джереми

0 голосов
/ 21 апреля 2010

Это все в документации , которая гласит: «Элемент управления DataGrid имеет обработчик по умолчанию для этого события, который реализует сортировку по одному столбцу».

Живые документы довольно подробные. Если вы продолжаете переходить по ссылкам, вы обычно найдете то, что ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...