Вопрос

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

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

Это было полезно?

Решение

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

swfLoader.contentLoaderInfo.width
swfLoader.contentLoaderInfo.height

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top