Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Узнать начальный размер Stage в любой момент (http://www.flasher.ru/forum/showthread.php?t=129219)

Герыч 27.08.2009 11:49

Узнать начальный размер Stage в любой момент
 
Вопрос такой:
есть флэшка. во fla файле задаю размер 550x400. Потом при загрузке ставлю stage.ScaleMode=StageScaleMode.NO_SCALE и ресайзю своими ручками окошко Stag'а. При этом для того, чтобы панелька оставалась всегда в левом верхнем углу делаю вот так:
Код AS3:

panel.x=(550-stage.stageWidth)*0.5;
panel.y=(400-stage.stageHeight)*0.5;

Код работает как надо, но 550 и 400 тут - магические числа. Реальная начальная ширина и высота теряются при установке stage.ScaleMode=StageScaleMode.NO_SCALE и изменении размера. Как их получить в любой момент времени, чтобы можно было писать примерно так:
Код AS3:

panel.x=(stage.startWidth-stage.stageWidth)*0.5;
panel.y=(stage.startHeight-stage.stageHeight)*0.5;


wvxvw 27.08.2009 13:35

В теории это должно было бы быть доступно у this.loaderInfo.width / this.loaderInfo.height, но при попытке от туда что-то прочитать возникает ошибка, поэтому, единственное решение, которое я пока придумал - this.loaderInfo.bytes и прочитать frameRect оттуда.
Вот пример, как это сделать:
http://www.senocular.com/flash/actio...s/SWFReader.as

fljot 27.08.2009 13:42

а указать stage.align = StageAlign.TOP_LEFT не решит проблему?

etc 27.08.2009 13:43

А align задать, не?

wvxvw 27.08.2009 13:49

Просто тут фишка такая, что если задать align = TL, то все можно посчитать, т.как точка регистрации стейджа будет в 0,0. А если align куда-нибудь в другое место, то нужно знать изначальный размер - иначе никак не посчитать.

etc 27.08.2009 13:55

А я вообще не считаю полезными режимами что-либо, кроме TL.

Герыч 27.08.2009 14:24

я пока придумал тупо так сделать:
Код AS3:

var scaleMode:String=stage.scaleMode;
stage.scaleMode=StageScaleMode.SHOW_ALL;
startStageWidth=stage.stageWidth;
startStageHeight=stage.stageHeight;
stage.scaleMode=scaleMode;

Добавлено через 1 минуту
Цитата:

Сообщение от wvxvw (Сообщение 846100)
А если align куда-нибудь в другое место, то нужно знать изначальный размер - иначе никак не посчитать.

именно для этого надо

AL.exe 29.08.2009 04:15

А зачем кроме TL что-то еще использовать?
off: интернсно, что за контекст такой, если боты про мангу постят...


Часовой пояс GMT +4, время: 21:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.