当前位置:  开发笔记 > 编程语言 > 正文

加载和修改AS3 SWF

如何解决《加载和修改AS3SWF》经验,为你挑选了1个好方法。

是否可以加载ActionScript 3 SWF并与之交互,例如通过替换其某些功能或编辑变量?类似于.NET使用反射和代码生成的可能性.

我希望在现有的第三方AS3应用程序上添加额外的功能层.



1> Amarghosh..:

如果要将其加载到另一个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);
}

如果您从其他域加载第三方SWF(而不是将其复制到您的域并从那里加载),则以下规则适用

如果加载的内容是使用ActionScript 3.0编写的SWF文件,除非该跨脚本安排是通过对一个呼叫批准它不能跨脚本由另一个安全沙箱的SWF文件的Security.allowDomain()或Security.allowInsecureDomain()在该方法中加载的内容文件.

简而言之,除非SWF创建者明确允许从您的域中修改它,否则您无法通过远程加载来修改它.如果您可以将SWF复制到您的域,则不适用.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有