размеры сцены загружается SWF-файла


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

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

2 8

2 ответа:

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

swfLoader.contentLoaderInfo.width
swfLoader.contentLoaderInfo.height

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

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

Марк, скорее всего, прав, что объект content loader info будет содержать правильную ширину и высоту. Я никогда не проверял себя, поэтому не могу гарантировать этого. Врачи говорят "номинальный" и противопоставляют его "фактическому", так что это кажется разумным.

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