Когда SWF загружен в другой. Может ли основной SWF прочитать загруженный файл, чтобы извлечь его содержимое и изменить его? - PullRequest
0 голосов
/ 29 ноября 2009

Дайте этот сценарий:

  • У меня есть классная графика в Illustrator или Flash.
  • На рисунке изображена фигура с различными элементами внутри, формами, линиями, градиентами и т. Д.
  • Я экспортирую его в файл SWF, и я могу просмотреть свой красивый рисунок, если я его открою.
  • У меня есть (чистое) приложение as3, которое загружает swfs.

Тогда ...

  • Могу ли я манипулировать содержимым загруженного SWF. Например: перемещение его содержимого, изменение некоторых элементов внутри, дублирование их. Деформировать их матрицей преобразования и тому подобными вещами?
  • Могу ли я, по крайней мере, прочитать содержимое и воспроизвести их (графические данные) внутри основного приложения.

Насколько я исследовал, я могу только импортировать swf и использовать его как весь экранный объект без дочерних элементов, и я не могу его изменить.

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

Ответы [ 3 ]

1 голос
/ 29 ноября 2009

Нет, к сожалению, вы не можете подробно извлекать или изменять скомпилированные графические элементы, вы можете использовать их только как объекты DisplayObject и преобразовывать их через их общедоступные свойства (масштабирование, вращение, преобразование и т. Д.). Существует способ программно получить координаты одного пути, установив его как «руководство» объекта в Flash IDE, а внутри onEnterFrame получить положение объекта, но, как вы можете себе представить, он довольно грязный.

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

Другим решением было бы использование более открытого формата, такого как SVG или FXG, но это может быть довольно сложным ...

0 голосов
/ 07 июня 2013

SWF-контент можно прочитать с помощью новой функции, добавленной в Flash Player 11.6 и AIR 3.6:

flash.display.Grapics.readGraphicsData()

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html#readGraphicsData%28%29

Аналогичная проблема:

Как читать данные из фигуры / графического объекта

0 голосов
/ 29 ноября 2009

Вы можете получить доступ к загруженным методам и свойствам SWF, если оба AVM2 фильмы .

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
private function onLoadComplete(e:Event):void
{
  var content:Object = LoaderInfo(e.target).content;
  //assuming there is a public someMethod() defined in 
  //the document class of the loaded SWF, you can call it as:
  content.someMethod();
  //you can access any property you wish
  content.someObject.graphics.beginFill(0x00ff00);
  content.someObject.graphics.drawCircle(10, 10, 10);
  content.someObject.graphics.endFill();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...