我是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事件似乎都能正常工作。
我做错了什么?
答案 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();
}