ActionScript Worker 中的 RemoteObject 类别名

Posted

技术标签:

【中文标题】ActionScript Worker 中的 RemoteObject 类别名【英文标题】:RemoteObject class aliases within ActionScript Worker 【发布时间】:2016-07-12 13:52:12 【问题描述】:

我有一个适用于 iosandroid 的 Flex 移动应用。出于性能原因,我想将我的一些下载代码移动到 Worker 中。在调用 RemoteObject 以从服务器下载数据后,我有大约 20 个 Java 类被反序列化为 ActionScript。这些类中的每一个都有一个[RemoteClass(alias="com.mycompany.MyClass")] 元数据标签。在我的主应用程序中,这一切都很好。然而,在 Worker 中,它没有为每个类注册类别名。这意味着当我从服务器获取数据时,它都是通用的Object 类,而不是我自己的自定义 ActionScript 类。只有在使用 registerClassAlias("com.mycompany.MyClass", MyClass); 为 Worker 中的所有 20 个类手动重新注册这些类别名后,我才能正确处理数据。

我不喜欢我现在必须在两个不同的地方维护别名。有什么方法可以维护我的主 swf 和我的 Worker 之间的类别名?

【问题讨论】:

【参考方案1】:

这可能不是因为Worker 忘记了元数据,而是因为 Worker 在 AS3 方面是一个单独的应用程序。编译器会丢弃所有您未明确使用的类。

所以你有两个选择:

1) 在 Worker 中显式使用类

public class Worker extends ... 
    private static const FORCE_INCLUDE:Array = [MyClass1, MyClass2];

2) 使用 [ArrayElementType] 元数据,禁止编译器抛出类

public class Worker extends ... 
    [ArrayElementType("full.path.to.MyClass1")]
    [ArrayElementType("full.path.to.MyClass2")]
    public function Worker()  ... 

也可以直接在 Worker 类上而不是在 Worker 的构造函数上指定 ArrayElementType。

【讨论】:

以上是关于ActionScript Worker 中的 RemoteObject 类别名的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 ActionScript 3中的XML循环

ActionScript 3 ActionScript 3中的反射

ActionScript 3 替换actionscript中的换行符

ActionScript 3 Actionscript 3 / Flash中的半色调效果

在 EB .ebextensions 中运行 celery worker -A app 时没有名为 app 的模块

无法识别数组中的 Actionscript 3 子项