ActionScript Worker 中的 RemoteObject 类别名
Posted
技术标签:
【中文标题】ActionScript Worker 中的 RemoteObject 类别名【英文标题】:RemoteObject class aliases within ActionScript Worker 【发布时间】:2016-07-12 13:52:12 【问题描述】:我有一个适用于 ios 和 android 的 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中的半色调效果