Размеры загруженной SWF-сцены - PullRequest
8 голосов
/ 29 октября 2008

Вот ситуация - у меня есть оболочка, которая загружает внешний .swf. Теперь этот .swf имеет размер 800x600, но это анимация, и есть элементы, которые выходят за пределы сцены. Когда я загружаю .swf в оболочку и вызываю его атрибут width, он возвращает 1200 - потому что он включает элементы, которые выходят за пределы сцены.

Это не то, что я хочу - в идеале, было бы два свойства, одно для возврата «вычисленной ширины» и одно для возврата «ширины по умолчанию». Существуют ли эти свойства, и если нет, то какой лучший обходной путь?

Ответы [ 2 ]

15 голосов
/ 29 октября 2008

Ширина и высота загруженного SWF, как определено FLA, с которым он был создан, можно найти в объекте Loader, в который вы загрузили SWF.

swfLoader.contentLoaderInfo.width
swfLoader.contentLoaderInfo.height

Это всегда будет показывать вам размеры, определенные в свойствах FLA. Не имеет значения, есть ли какие-либо изображения, видеоклипы или что-то еще, что вы сняли со сцены.

Свойства stage.stageWidth и stage.stageHeight всегда возвращают ширину сцены, сцена всегда является самой верхней SWF. Другими словами, он всегда будет представлять размеры сцены оболочки. Во Flash-приложении есть только один этап.

0 голосов
/ 30 октября 2008

Скорее всего, верно, что объект info загрузчика контента будет содержать правильную ширину и высоту. Я никогда не проверял себя, поэтому я не могу этого гарантировать. Документы говорят «номинально» и противопоставляют его «фактическому», поэтому это кажется разумным.

Есть несколько других вариантов. Вы можете замаскировать внешний SWF. Создайте маску, соответствующую размеру сцены, и поместите под нее весь контент. Другая идея состоит в том, чтобы создать мувиклип, основанный на прямоугольной форме, установив его альфа в 0, поместив его в x: 0, y: 0 и сопоставив его ширину и высоту со сценой. Дайте ему имя экземпляра, а затем при загрузке используйте это значение для размера.

...