简单直接。 我扩展了一个mx.controls.TextInput来创建一个具有不同行为的自定义组件。 我正在尝试在keyDownHandler()上设置 text 属性,并且由于某种原因它无法正常工作。组件上的文字只是忽略了变化。 我正在使用Flex 3.6。 这里是一个简单的示例代码,解释了正在发生的事情:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:customcomponent="com.test.customcomponent.*">
<customcomponent:TextTest x="20" y="20"/>
</mx:Application>
在AS级以下:
package com.test.customcomponent
{
import flash.events.KeyboardEvent;
import mx.controls.TextInput;
public class TextTest extends TextInput
{
public function TextTest()
{
super();
}
override protected function keyDownHandler(event:KeyboardEvent):void{
text = "lol. It doesn't work";
}
}
}
答案 0 :(得分:0)
您需要阻止默认按键事件。
override protected function keyDownHandler(event:KeyboardEvent):void{
text = "lol. It doesn't work";
event.preventDefault();
event.stopImmediatePropagation();
event.stopPropagation()
}
答案 1 :(得分:0)
为了能够阻止默认处理,您必须在处理程序上具有足够高的优先级(keyDownHandler()没有)。这意味着您需要优先注册自己的方法&gt; 0
您可以尝试这样:
public function MyTextInput() {
addEventListener(KeyboardEvent.KEY_DOWN, yourHandler,
false, EventPriority.BINDING, true);
...
}
private function yourHandler(event : KeyboardEvent) : void {
// stop further handling
event.preventDefault();
event.stopImmediatePropagation();
event.stopPropagation();
// do your work here
text = ...;
}