Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3:加载playerglobal/airglobal.swc以进行运行时检查/反射时出错?_Actionscript 3 - Fatal编程技术网

Actionscript 3 AS3:加载playerglobal/airglobal.swc以进行运行时检查/反射时出错?

Actionscript 3 AS3:加载playerglobal/airglobal.swc以进行运行时检查/反射时出错?,actionscript-3,Actionscript 3,在编写代码转换器(AS3到另一种语言)时,需要从所有自定义类和AS3核心访问整个继承链 转换器本身是用AIR编写的,要移植的应用程序将是Flash Player或AIR应用程序。这让我有些困惑:我需要在运行时为特定的应用程序加载不同版本的playerglobal或airglobal(与为转换器本身加载的版本相比!),以便对其进行反思。当我的转换器尝试加载library.swf(playerglobal.swc中的swf)时,会显示我 VerifyError:Error\1079:加载的代码中不允

在编写代码转换器(AS3到另一种语言)时,需要从所有自定义类和AS3核心访问整个继承链

转换器本身是用AIR编写的,要移植的应用程序将是Flash Player或AIR应用程序。这让我有些困惑:我需要在运行时为特定的应用程序加载不同版本的playerglobal或airglobal(与为转换器本身加载的版本相比!),以便对其进行反思。当我的转换器尝试加载library.swf(playerglobal.swc中的swf)时,会显示我

VerifyError:Error\1079:加载的代码中不允许使用本机方法。

这是有问题的,因为在我克服这一点之前,我无法使用
descripbetype()
检查SWF中的类。(为了获取班级信息,我宁愿避免阅读主权财富基金的ABC。)


有解决方案吗?

playerglobal.swc
airglobal.swc
主要用于代码暗示,并让编译器知道哪些本机方法可用。它们包含一些实际的代码块,但大部分是空函数。您不能在运行时加载它们,也不能重写本机定义


我不明白你为什么需要这样做来反省。您应该能够在转换器的本机变量实例上使用
describeType
,并获得与从应用程序本身内部调用的完全相同的输出。

我不明白为什么您不能按原样使用describeType?您需要特定的playerglobal或airglobal swc做什么您还不能做的事情?@Creynders在Sean的回答下面看到评论。啊,是的,这是一个严格的增量API,所以如果您确保您的转换器使用最新的。swc的,它不应该遇到任何未知的as3/air类或成员。我假设版本不同。话虽如此,每个FP&AIR版本都是向后兼容的,所以您可能是对的。但我也不确定AIR和FP在这方面的区别。如果airglobal包含playerglobal提供的所有内容,以及更多内容,那么我可以使用已经加载的airglobal.swc愉快地进行所有反思。但如果不是……我很确定,但不是100%确定,airglobal并没有涵盖playerglobal的所有课程。但是,如果我没有弄错的话,它确实包含覆盖,所以您应该确保首先检查airglobal,如果还没有找到,则继续playerglobal@Creynders谢谢你的建议,这很有帮助。。。但这又会导致我原来的问题,即由于抛出的错误,我无法在运行时加载playerglobal。为了避免装入器(这似乎导致了这个问题),我实际上尝试使用nochump的zip库将swc的swf作为字节码装入,然后将字节数组传递到as3 commons字节码中,以便进行一些反射。但不幸的是,3 commons字节码对bytearray的加载方法出现了错误:/如果加载了airglobal或playerglobal,我似乎无法加载另一个airglobal或playerglobal。@SeanFujiwara我想你错过了我问题的一个关键部分,那就是“要移植的应用程序将是Flash Player或AIR应用程序。”这意味着我需要灵活地加载不同版本的airglobal或playerglobal,因为它可能不同于运行时为基于AIR的转换器应用程序隐式加载的版本。抱歉,这还不太清楚。如果你的应用程序是air应用程序,它将覆盖所有类、接口和成员。不用担心swc的问题。