Как я могу написать универсальную функцию изменения свойств в Flex / Actionscript 3?

StackOverflow https://stackoverflow.com/questions/221169

Вопрос

Я новичок во Flex, хотя и не новичок в программировании. Я хочу написать общий обработчик событий, который будет вызываться всеми моими текстовыми полями ввода, когда они получат фокус. Когда у них есть фокус, я хочу изменить цвет поля ввода текста. Когда они теряют фокус, я хочу восстановить " неактивное " цветовой профиль. Я мог бы написать обработчик событий ActionScript для каждого поля ввода текста, но мы все знаем, что это плохо. : o) Тогда мне нужен способ доступа к объекту, который вызывает обработчик событий.

В Delphi я написал бы функцию, которая передает объект Sender, позволяя мне получить доступ к свойствам вызывающего объекта. Я предполагаю, что ActionScript / Flex имеет совершенно другую архитектуру, поэтому мне трудно это делать.

Спасибо в ожидании!

Это было полезно?

Решение

Вы должны создать подкласс TextInput и обрабатывать события фокуса там. Я думаю, что это будет самый простой способ достичь того, что вы ищете, без сложного кода.

Другие советы

Надеюсь, я понимаю, о чем вы просите ... вы говорите о делегировании событий?

Это сработало для меня:

// 'focusOut' for blur
stage.addEventListener('focusIn', function(e:Event):void {
    // The focused control is e.target
});

Если вы хотите изменить внешний вид сфокусированного поля ввода, вы можете сделать это, установив свойство focusSkin . Если вы хотите, чтобы это происходило глобально, вы можете поместить объявление стиля в свой файл CSS.

В этом примере CSS я заменяю defaultSkin по умолчанию ( mx.skins.halo.HaloFocusRect ) на внедренный файл PNG.

TextInput {
  focusSkin: Embed(source="focus.png");
}

TextInput имеет несколько свойств для изменения вида фокуса, например, изменение непрозрачности обложки фокуса (свойство focusAlpha ). Обратитесь к документации TextInput для получения дополнительной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top