Загрузка внешнего SWF с замаскированным содержимым - нужна ширина / высота - PullRequest
0 голосов
/ 23 апреля 2010

Я загружаю внешний SWF, используя компонент SWFLoader. Загружаемый SWF-файл маскируется, поэтому отображается только часть. Однако, когда он загружен, фактический размер swf (loader.content.width / loader.content.height) является полным swf, включая замаскированную область. Следовательно, загруженный SWF-файл не отображается должным образом в элементе поиска элементов. Есть ли способ получить размер только маскированной области, а не получить размер всего содержимого SWF-файла?

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

В настоящее время я загружаю внешний SWF-файл с помощью Loader. После загрузки я делаю копию (снимок экрана) SWF-файла, создавая BMP-файл loader.content. Это сделано, так как я не хочу, чтобы в этот момент на экране отображались анимации. Я устанавливаю размер BMP с помощью loader.content.width & loader.content.height. Затем я устанавливаю SWFLoader.source в растровое изображение.

1 Ответ

0 голосов
/ 30 ноября 2010

Если вы не можете найти маску в загруженном SWF-файле, существует грубый метод: визуализируйте ее в BitmapData с прозрачным фоном, затем проанализируйте пиксели, чтобы определить, где заканчивается непрозрачная область. Если вы делаете это умно, вы должны вписаться в несколько десятков семплов (если сам SWF не прозрачен). Конечно, рендеринг будет очень дорогим, но, возможно, ваше приложение допускает такие задержки ...

...