Установить выделение в AS3 - PullRequest
1 голос
/ 16 июля 2010

Как мне настроить Set Selection для работы в текстовом поле.У меня есть текстовое поле внутри мувиклипа и кнопка с прослушивателем щелчков на нем.Когда он щелкает, я хочу, чтобы он выделил весь текст внутри.Это то, что я имею до сих пор, я надеюсь, что вы можете помочь.

send.addEventListener(MouseEvent.CLICK, function() {
    panel.tweet.selectable = true;
    stage.focus = panel.tweet;
    panel.tweet.setSelection(0, panel.tweet.text.length);
});

Ответы [ 5 ]

2 голосов
/ 16 июля 2010

Сумасшедший - должен нормально работать.

Я сделал небольшую демонстрацию для вас, чтобы она работала:

http://strangemother.com/actionscript/demos/select_text_click_demo/

import flash.events.MouseEvent;

send.addEventListener(MouseEvent.CLICK, sendMouseClickEventHandler);

function sendMouseClickEventHandler(ev:MouseEvent):void
{
    stage.focus = tweet;
    tweet.selectable = true;
    tweet.setSelection(0, tweet.text.length ); 

}
1 голос
/ 04 декабря 2011

Есть лучшее решение: используйте callLater;проблема была в mouseEvent.Если вы попытаетесь выполнить выбор позже, это сработает.

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

Проблема с фокусом.

Просто сделайте это (введите задержку в 10 мс)

var timer1:Timer = new Timer(10,1);
timer1.addEventListener(TimerEvent.TIMER, delayedSelection);
timer1.start();

function delayedSelection(e:TimerEvent):void
{
    stage.focus = tweet;
    tweet.selectable = true;
    tweet.setSelection(0, tweet.text.length ); 
}
0 голосов
/ 16 июля 2010

Ваш код должен работать, я думаю.

Слушатель событий вызывается вообще?

Возможно, над ним есть какой-то мувиклип, который блокирует вашу кнопку отправки (она может быть прозрачной, и вы можете не осознавать, что она есть)

Быстрый и грязный способ проверить, в этом ли проблема:

send.stage.addChild(send);

Это поместит вашу кнопку поверх каждого объекта. Если ваш обработчик не был вызван и после этого вызывается, вы можете быть уверены, что что-то блокирует его. В этом случае вы можете переупорядочить глубины или попытаться установить свойство блокировки видеороликов mouseEnabled на false. mouseChildren также может помочь, если указанные фрагменты ролика содержат в свою очередь другие блокирующие объекты (которые, конечно, не должны реагировать на события мыши).

0 голосов
/ 16 июля 2010

Попробуйте сделать это так: (У меня сейчас нет Flash для тестирования ...)

send.addEventListener(MouseEvent.CLICK, function() {
    panel.tweet.selectable = true;
    panel.tweet.stage.focus = panel.tweet;
    panel.tweet.setSelection(0, panel.tweet.text.length);
});

Если это не так, то это может быть событие mouseup, которое перекрывает подсветку. (?)

...