2012-06-13 2 views
1

Есть ли способ обнаружить момент изменения размера resendHandlers? что-то вроде этого:Обнаружить, когда завершилось событие изменения размера

this.addEventListener(Event.RESIZE_COMPLETE, resizeHandler); 

Я надеюсь, что кто-то есть способ, чтобы сделать это возможным, так что я могу удалить мой enterframehandler :)

ответ

2

В основном то, что вам нужно сделать, это настроить таймер, который будет рассчитывать время после последнего Event.RESIZE. Как только пройдет достаточно времени (например, 50 мс или около того), вы можете предположить, что пользователь остановил непрерывное изменение размера сцены. Этот код может имитировать то, что вам нужно:

private var timer:Timer; 
private var resizeInterval:Number = 50; //amount of time you believe is enough to say that continuous resizing is ended after last discrete Event.RESIZE 

private function init():void 
{ 
    timer = new Timer(resizeInterval); 
    timer.addEventListener(TimerEvent.TIMER, timerHandler); 
    stage.addEventListener(Event.RESIZE, resizeHandler); 
} 

private function resizeHandler(e:Event):void 
{ 
    if (timer.running) { 
    timer.reset(); 
    } 
    timer.start(); 
} 
private function timerHandler(e:Event):void 
{ 
    timer.stop(); 
    resizeCompletehandler(); 
} 
1

Event.RESIZE передаваемого в зависимости от браузера/OS.

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

Там нет никакого способа узнать это изменение размеров завершили ...

+0

Хорошо спасибо за это :) kinda стыд: / – Nicholas