2009-12-03 4 views
1

Можно ли загрузить SWF ActionScript 3 SWF и взаимодействовать с ним, например, заменив некоторые из его функций или редактируя переменные? Подобно тому, как это возможно в .NET с использованием отражения и генерации кода.Загрузить и изменить AS3 SWF

Я ищу, чтобы добавить дополнительный уровень функциональности над существующим сторонним AS3-приложением.

ответ

7

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

var ldr:Loader = new Loader(); 
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad); 
ldr.load(new URLRequest("filename.swf")); 
private function onLoad(e:Event):void 
{ 
    var swf:Object = LoaderInfo(e.target).content; 
    swf.somePublicVar = newValue; 
    swf.somePublicObject.publicMethod(); 
    swf.getChildAt(0).x = 30; 
    //assuming there is a sprite at index 1 
    var child:Sprite = Sprite(swf.getChildAt(1)); 
    child.graphics.lineStyle(1); 
    child.graphics.drawCircle(10, 10, 10); 
} 

Если вы загружаете 3 участника SWF из другого домена (вместо того, чтобы скопировать его в свой домен и загрузки его оттуда), то following rule применять

  • Если загружаемое содержимое является SWF файл, написанный с ActionScript 3.0, он не может быть перекрестным сценарием SWF-файла в другой изолированной программной среде безопасности, если эта процедура межсайтового сценария не была одобрена путем вызова метода Security.allowDomain() или Security.allowInsecureDomain() в загруженном файле содержимого.

Коротко означает, что, если создатель SWF явно не разрешил его изменять из вашего домена, вы не можете его изменить, загрузив его удаленно. Это не применяется, если вы можете скопировать SWF в ваш домен.

0

Ну, вы могли бы управлять вещами (клипами и другими компонентами swf), которые общедоступны, копаясь через иерархию объектов, просто базовые вещи. Другой выбор - вы можете декомпилировать загруженный swf во время выполнения. Это library звучит довольно интересно для этой задачи.

0

Aspose.Flash может помочь вам с редактированием переменных, так как он поддерживает декомпиляцию кода байта действия сценария действия, однако он не является бесплатным и не может генерировать новые функции, если вы не используете внешний компилятор as3 (например, тот из Adobe, который свободный и открытый источник)

Смежные вопросы