Flash:addEventListener未检测输入文本框中的粘贴事件

时间:2009-05-14 20:23:55

标签: flash actionscript-3 event-handling copy-paste

我是Flash的新手,我似乎无法做这个简单的动作。

(我正在使用ActionScript 3.0)

我在编辑器中创建了一个输入文本框。实例名称为“test”。 在我的Action编辑器中,我有这个:

import flash.events.Event;
this.test.addEventListener(Event.PASTE, pasteHandler);

function pasteHandler(e:Event)
{
    trace("blaaaaaaaaaagh");
}

当我运行它时,它不会检测到我的任何粘贴事件,无论我是在执行Ctrl + V还是右键单击+粘贴。如果我使用其他事件,如MouseEvent.CLICK,它会检测到它。事实上,我认为没有检测到任何Event.XXX事件(如COPY,INIT等)(至少从我尝试过的事件中)。所有MouseEvent和KeyboardEvent事件似乎都能正常工作。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

TextField对象不会分派清除,复制,剪切,粘贴或选择所有事件。抱歉,这是个坏消息!

泰勒。

答案 1 :(得分:0)

我会听Event.CHANGE,因为粘贴会改变这个领域。

答案 2 :(得分:0)

解决方法是侦听TextEvent.TEXT_INPUT并防止默认行为:

textField.addEventListener(TextEvent.TEXT_INPUT, onTextInput );

function onTextInput( e:TextEvent ) : void
{
    // this takes place of PASTE because Event.PASTE is not triggered on a textfield
    var t:TextField = TextField( e.currentTarget );
    t.replaceSelectedText( e.text );
    e.preventDefault();
}