Flash: addEventListener не обнаруживает события вставки в полях ввода текста - PullRequest
2 голосов
/ 15 мая 2009

Я новичок во 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 работают нормально.

Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 15 мая 2009

Объекты TextField не отправляют события очистки, копирования, вырезания, вставки или выбора всех. Извините за плохие новости!

Тайлер.

0 голосов
/ 07 апреля 2012

Решением этой проблемы является прослушивание 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();
}
0 голосов
/ 15 мая 2009

Я бы прослушал Event.CHANGE, так как вставка изменит поле.

...