3

我是 Flash 新手,我似乎无法执行这个简单的操作。

(我使用的是 ActionScript 3.0)

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

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 事件似乎都可以正常工作。

我究竟做错了什么?

4

3 回答 3

2

TextField 对象不会调度 clear、copy、cut、paste 或 selectAll 事件。关于这些坏消息我很遗憾!

泰勒。

于 2009-05-14T20:34:24.207 回答
1

对此的解决方案是监听 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();
}
于 2012-04-06T21:43:42.827 回答
0

我会听 Event.CHANGE 因为粘贴会改变字段。

于 2009-05-14T20:44:56.647 回答