我正在和我的 friend 聊天,他相信你可以做到这一点,并说他已经做到了,但我无法让它发挥作用。

我想知道是否有可能。我尝试在外部下载的 SWF 中键入一个 var 作为类,然后创建一个实例,但没有办法。

一些代码
private static function onCompleteHandler(e:Event){
dashboardObject = e.target.content;
// registerClassAlias("Dashboard", ); doesnt work
var dash:Class = getDefinitionByName("Dashboard") as Class;
var myDash = new dash();
trace(myDash.show);
}

错误
ReferenceError: Error #1065: Variable Dashboard is not defined.
at global/flash.utils::getDefinitionByName()
at System$/onCompleteHandler()

因此,除非在项目 SWF 中编译,否则您似乎无法创建类的实例。如果是真的,这就是我想要它做的。我不希望人们仅仅通过下载我在这里构建的 SWF 文件来尝试创建我的类的实例。

谢谢

最佳答案

你需要做两件事:

  • Dashboard 一个包 ( package.to.Dashboard )。与有包的类相比,无包类以编译形式被赋予不同的属性( protected 命名空间),使得外部 SWF 无法访问它们。
  • 确保您加载的 SWF 加载到与父级
  • 相同的 ApplicationDomain 中

    然后,您应该能够使用加载的 SWF 中的 getDefinitionByNamenew 返回 Class

    关于actionscript-3 - AS3 从外部 SWF 实例化类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1634757/

    10-13 09:28