ActionScript Worker 中的 RemoteObject class 个别名

RemoteObject class aliases within ActionScript Worker

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

为 Worker 中的所有 20 classes 手动重新注册这些 class 别名后,我才能正确处理数据

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

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

所以你有两个选择:

1) 在 Worker

中明确使用 classes
public class Worker extends ... {
    private static const FORCE_INCLUDE:Array = [MyClass1, MyClass2];
}

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

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

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