Как я могу написать универсальную функцию изменения свойств в Flex / Actionscript 3?
-
03-07-2019 - |
Вопрос
Я новичок во 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 для получения дополнительной информации. р>