В AS3 добавлено новое событие Event.RENDER (
flash.events.Event.RENDER), которое рассылается после enterFrame, но перед тем, как экран флеш-плеера обновится. Это событие не генерится автоматически, его нужно активировать самостоятельно, вызвав метод stage.invalidate(); (
flash.display.Stage.invalidate()), после чего, перед обновлением экрана все объекты приаттаченные на stage (и только они) получат событие Event.RENDER. Если флэш плеер не занимается рендерингом (например окно минимизировано в таск бар), то Event.RENDER не рассылается.
Пример:
Код:
var sprite:Sprite = new Sprite();
stage.addChild(sprite);
sprite.addEventListener(Event.ENTER_FRAME, enterFrame);
sprite.addEventListener(Event.RENDER, render);
stage.addEventListener(MouseEvent.CLICK, click);
function enterFrame(event:Event):void {
trace("enter frame");
}
function render(event:Event):void {
trace("render");
}
function click(event:MouseEvent):void {
trace("click");
stage.invalidate();
}
Output:
Код:
enter frame
enter frame
enter frame
click
enter frame
render
enter frame
enter frame
enter frame
enter frame
...