2008-10-21 77 views
0

我是新来的Flex,虽然对编程并不陌生。我想编写一个通用的事件处理函数,当它们获得焦点时,将由我所有的文本输入框调用。当他们有焦点时,我想更改文本输入框的颜色。当他们失去焦点时,我想恢复“无效”颜色配置文件。我可以为每个文本输入框编写一个ActionScript事件处理程序,但我们都知道这是蹩脚的。 :o)然后,我需要的是一种访问调用事件处理程序的对象的方法。在Delphi中,我会写一个函数传入发件人对象,允许我访问调用对象的属性。我猜ActionScript/Flex有一个完全不同的架构,这就是为什么我很难做到这一点。如何在Flex/Actionscript3中编写通用属性修改函数?

感谢您的期待!

回答

1

你应该继承TextInput和处理焦点事件在那里。我认为这将是最简单的方式来实现你正在寻找没有任何复杂的代码。

1

我希望我明白你在问什么......你是在谈论事件代表团吗?

这为我工作:

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

如果你想改变聚焦输入框的外观,你可以通过设置focusSkin属性来实现。如果您希望全局发生这种情况,您可以在CSS文件中添加样式声明。

在这个CSS示例中,我将使用嵌入的PNG文件替换默认的focusSkin(mx.skins.halo.HaloFocusRect)。

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

TextInput获得了以改变焦点的外观,如改变焦点外观(focusAlpha财产)的不透明度几个属性。查看TextInput documentation了解更多信息。