|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Отловить окончание пересчета TextField c wordwrap = true, после изменения ширины.
Пример:
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.utils.Timer; public class Test extends Sprite { public function Test() { tf = new TextField(); tf.wordWrap = true; tf.border = true; addChild(tf); urlLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, urlLoader_completeHandler); urlLoader.load(new URLRequest("1.txt")); timer = new Timer(100, 1); timer.addEventListener(TimerEvent.TIMER, timer_timerHandler); var button:Sprite = new Sprite(); button.graphics.beginFill(0x00FFF0); button.graphics.drawRect(100, 100, 100, 100); button.addEventListener(MouseEvent.CLICK, button_clickHandler); addChild(button); } private var urlLoader:URLLoader; private var tf:TextField; private var timer:Timer; private function urlLoader_completeHandler(event:Event):void { tf.text = urlLoader.data; } private function button_clickHandler(event:MouseEvent):void { tf.width = Math.floor(200 * Math.random()) + 10; trace("button click ", tf.getLineLength(3)); timer.start(); } private function timer_timerHandler(event:TimerEvent):void { trace("timer ", tf.getLineLength(3)); } } } Как я понимаю, такое поведение будет у всех методов, которые зависят от wordwrap. Можно ли кроме как при помощи таймера отловить окончание пересчета текстового поля? Может какое-то событие есть, о котором я не знаю? |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
До следующего кадра достаточно отложить.
|
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
А исключительно программными средствами? Мне тоже интересно
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Делал c ENTER_FRAME до этого, но не получилось из-за того, что нужно было второго вызова обработчика дожидаться, а я в первом значение смотрел. Почему второго, честно говоря, я не понял. С EXIT_FRAME тоже самое.
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.utils.Timer; public class Test extends Sprite { public function Test() { tf = new TextField(); tf.wordWrap = true; tf.border = true; addChild(tf); urlLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, urlLoader_completeHandler); urlLoader.load(new URLRequest("1.txt")); // 671*252 bytes timer = new Timer(100, 1); timer.addEventListener(TimerEvent.TIMER, timer_timerHandler); var button:Sprite = new Sprite(); button.graphics.beginFill(0x00FFF0); button.graphics.drawRect(100, 100, 100, 100); button.addEventListener(MouseEvent.CLICK, button_clickHandler); addChild(button); } private var urlLoader:URLLoader; private var tf:TextField; private var timer:Timer; private var d:int; private function enterFrameHandler(event:Event):void { trace("enter ", tf.getLineLength(3)); if (++d == 2) { removeEventListener(Event.ENTER_FRAME, enterFrameHandler); d = 0; } } private function urlLoader_completeHandler(event:Event):void { tf.text = urlLoader.data; } private function button_clickHandler(event:MouseEvent):void { tf.width = Math.floor(200 * Math.random()) + 10; trace("button click ", tf.getLineLength(3)); addEventListener(Event.ENTER_FRAME, enterFrameHandler); timer.start(); } private function timer_timerHandler(event:TimerEvent):void { trace("timer ", tf.getLineLength(3)); } } } |
Часовой пояс GMT +4, время: 15:28. |
|
« Предыдущая тема | Следующая тема » |
|
|