Размеры загруженной SWF-сцены
-
05-07-2019 - |
Вопрос
Вот ситуация - у меня есть оболочка, которая загружает внешний .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 и сопоставив его ширину и высоту со сценой. Дайте ему имя экземпляра, а затем при загрузке используйте это значение для размера.