ActionScript Worker中的RemoteObject类别名

时间:2016-03-24 20:14:35

标签: flex actionscript air remoteobject

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

为Worker中的所有20个类手动重新注册那些类别名后,才能正确处理数据

我不喜欢我现在必须在两个不同的地方维护别名。有没有办法维护我的主SWF和我的工作者之间的类别名?

1 个答案:

答案 0 :(得分:0)

这可能不是因为Worker忘记元数据,而是因为工作者是AS3方面的单独应用程序。编译器会抛弃未明确使用的所有类。

所以你有两个选择:

1)在Worker

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

2)使用[ArrayElementType]元数据禁止comiler抛出类

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

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