Вместо того, чтобы реагировать на ResizeEvent, который будет запускать каждый кадр во время изменения размера (т. Е. Если вы нажмете «развернуть» и потребуется 3 кадра для перерисовки компонента с widh / ehight = 0 до width / height = MaxValue), то изменение событие сработает три раза, вы можете «смотреть» свойства ширины и высоты.
var widthWatch:ChangeWatcher = ChangeWatcher.watch(this, 'widht', resizeHandler)
var heightWatch:ChangeWatcher = ChangeWatcher.watch(this, 'height' resizeHandler)
это, в сущности, будет наблюдать за свойствами, подобными привязке данных, и запускать ваш resizeHandler при каждом изменении ширины или высоты. Это имеет небольшой недостаток в том, что дважды запускает ваш обработчик, если ширина и высота изменяются одновременно, но это может быть решено с помощью третьей функции, выполняющей работу, которая вызывается вашими обработчиками, если не вызывается по расписанию. , Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete(event)">
<mx:Script>
<![CDATA[
import mx.binding.utils.ChangeWatcher;
private var widthWatch:ChangeWatcher;
private var heightWatch:ChangeWatcher;
private var resizeExecuting:Boolean = false;
private function onCreationComplete(event:Event):void
{
widthWatch = ChangeWatcher.watch(this,'width',onSizeChange);
heightWatch = ChangeWatcher.watch(this,'height',onSizeChange);
}
private function onSizeChange(event:Event):void
{
if(!resizeExecuting)
callLater(handleResize);
resizeExecuting = true;
}
private function handleResize():void
{
//do expensive work here
resizeExecuting = false;
}
private function stopWatching()
{
//invoke this to stop watching the properties and prevent the handleResize method from executing
widthWatch.unwatch();
heightWatch.unwatch();
}
]]>
</mx:Script>
</mx:Application>
Я предпочитаю метод наблюдателя изменений, потому что он срабатывает после изменения свойств ширины и высоты, в отличие от события изменения размера, которое срабатывает до того, как свойства ширины и высоты корректно обновляются.