Как я могу написать универсальную функцию изменения свойств в Flex / Actionscript3? - PullRequest
0 голосов
/ 21 октября 2008

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

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

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

Ответы [ 3 ]

1 голос
/ 21 октября 2008

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

1 голос
/ 21 октября 2008

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

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

// 'focusOut' for blur
stage.addEventListener('focusIn', function(e:Event):void {
    // The focused control is e.target
});
0 голосов
/ 30 декабря 2008

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

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

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

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

...