Показать сообщение отдельно
Старый 30.01.2009, 16:26
Kolan вне форума Посмотреть профиль Отправить личное сообщение для Kolan Найти все сообщения от Kolan
  № 7  
Ответить с цитированием
Kolan

Регистрация: Jan 2009
Сообщений: 38
Благодарю murz.

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


В итоге получилось так:

Код AS3:
class Main {
 
	public function new() {
		Lib.current.stage.scaleMode = StageScaleMode.NO_SCALE;
		Lib.current.addEventListener(Event.RESIZE, onStageResize);		
		Lib.current.addEventListener(Event.ACTIVATE, onActivate);		
		Lib.current.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);		
 
...
	}
 
 
	function highLevelResize() {
		for (i in 0...Lib.current.numChildren) {
			if (Reflect.hasField(Lib.current.getChildAt(i), "updateSizeAndPos")) {
				var control:Control = cast(Lib.current.getChildAt(i), Control);
				control.updateSizeAndPos();
			}
		}
	}
 
 
	private function onAddedToStage(e:Event):Void 
	{
		highLevelResize();
	}
 
	function onStageResize(event:Event) {
		highLevelResize();
	}
 
	function onActivate(event: Event) {
		highLevelResize();
	}
 
    static function main() {
		new Main();
    }
}
Работает корректно в ФФ, ИЕ и Хроме. В других не проверял.