【问题标题】:Flash: addEventListener not detecting Paste events in Input Text boxesFlash:addEventListener 未检测到输入文本框中的粘贴事件
【发布时间】:2009-05-14 20:23:55
【问题描述】:

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

我做错了什么?

【问题讨论】:

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


【解决方案1】:

TextField 对象不调度 clear、copy、cut、paste 或 selectAll 事件。很抱歉有坏消息!

泰勒。

【讨论】:

  • 您可以扩展它并自己添加该功能(您必须监控按下了哪些键)但下面的建议也很好。
【解决方案2】:

对此的解决方案是监听 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();
}

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 当您设置 myField.text = "foo" 时,Event.CHANGE 似乎不会触发。是否有其他方法可以将文本添加到引发 CHANGE 事件的字段?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多