PDA

Просмотр полной версии : Stage.width и Stage.height у импортированного swf


Evgan
06.11.2009, 18:33
Здраствуйте

Загружаю в ролик другой swf, по оконьчанию загрузки, как пологается, измеряю его размеры, и сталкулся с тем, что если у ролика есть элементы которые находятся за пределами облости его фактических размеров, то ме выдаётся размеры с учётом тех элементов которые вне, то есть не фактический размер+(
попробывал Stage.width, не получилось




//***********************************************************************************************************
// | загрузка SWF |
//***********************************************************************************************************

var Zagr_SWF:MovieClipLoader = new MovieClipLoader();
var ObList_SWF:Object = new Object();

//**************************************************************
//________________________________ обработчик события успешной загрузки
_root.ObList_SWF.onLoadInit = function(imga:MovieClip):Void {
trace('ЗАГРУЗИЛОСЬ >> '+imga);
trace(imga+'._width = '+imga._width);
trace(imga+'._width = '+imga.Stage.width); // не работает так+(

};

_root.Zagr_SWF.addListener(_root.ObList_SWF);/
_root.cont.createEmptyMovieClip('swf'+1,1);
_root.Zagr_SWF.loadClip('swf/1.swf',eval('cont.swf'+1));




подскажите как это решить?

спасибо

skald
06.11.2009, 19:09
полюбому вы позиционируете загруженый ролик точкой с координатами 0:0 и наверное знаете его H и W.

нарисуйте маску и все ... боьше никаких проблем не вижу. Stage. ... это будет относиться к загружающему мувику.

Evgan
06.11.2009, 20:48
то что вы написали всё верно и всё понятно, но только если одно НО, про которое видимо надо было упоменут: у меня случай когда подгружаемые swf не одинакового размера (мол галлерея) и есть необходимость их центрировать, потому мне необходимо определять для каждого его размер фактический

MaskiShow
06.11.2009, 20:50
То же как то с этим столкнулся. Stage загружаемой флешки, в случаях, когда содержатся объекты за сценой (т.е. в общем случае) никак не узнать, кроме как заранее загрузить размеры сцены из внешнего файла данных :(

Evgan
06.11.2009, 21:16
то что по средством того xml сообщать о размерах предётся меня удручает канешне+(
странно это, ведь храниться где то размер ролика, ведь flashPlayer знает их, когда открывает ролик, логично же предположить что где то эта информация хранится

MaskiShow
06.11.2009, 21:22
Информация о файле хранится в заголовке файла. В AS2 вы можете прочитать ее (первые байты файла) и обработать для получения размеров, но в итоге будет загрузка файла целиком. Только тут грузить как данные надо, а не как мувик x)

Байты с 8 по 17 включительно. Спецификация, стр. 255 :) http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v10.pdf

Evgan
06.11.2009, 21:34
спасибо за просвещение
уф
а может подскажите пример, как загружать swf (как данные) и каким образом эти байты читать?

MaskiShow
06.11.2009, 21:43
Для этого нужно подумать и ответить на вопрос (может кто-нибудь подскажет, самому интересно):
Если мы грузим как loadMovie или как loadClip, как потом обратится к загруженному контенту как к данным? Или наоборот, если загрузили файл как данные, как из них "сделать" мувик?

Это чтобы 2 раза не грузить как данные и как мувик один и тот же файл...

Как вариант можно php использовать...