2010-07-15 2 views
1

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

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

Различия, которые я вижу в моем коде и ваш. не могли бы вы рассказать мне, что такое панель (какой тип объекта) и твой «твит»? – Glycerine

+0

добавить инструкцию trace в функцию, чтобы убедиться, что она вызывается в первую очередь – Amarghosh

ответ

2

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

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

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); 

} 
+0

Я нашел проблему, это CS5, новый текст TLF не " t поддержите эту функцию, спасибо adobe, за то, что я запутался, еще раз, спасибо вам, ребята за помощь, очень благодарен –

0

Попробуйте сделать это следующим образом: (у меня нет вспышки прямо сейчас, чтобы проверить ...)

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

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

+0

К сожалению, я пробовал, и она не работает, спасибо, хотя –

0

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

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

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

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

send.stage.addChild(send); 

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

+0

Это определенно называется, поэтому я буду работать над этим еще –

1

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

0

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

Просто сделать это (ввести задержку в 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); 
}