我有适用于iOS和Android的Flex移动应用。出于性能原因,我想将一些下载代码移到Worker中。在进行RemoteObject调用以从服务器下载数据之后,我有大约20个Java类被反序列化为ActionScript。每个类都有一个[RemoteClass(alias="com.mycompany.MyClass")]
元数据标记。在我的主要应用程序中,这一切都很有效。但是,在Worker中,它没有为每个类注册的类别名。这意味着当我从服务器获取数据时,它是所有通用Object
类而不是我自己的自定义ActionScript类。只有在使用registerClassAlias("com.mycompany.MyClass", MyClass);
我不喜欢我现在必须在两个不同的地方维护别名。有没有办法维护我的主SWF和我的工作者之间的类别名?
答案 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的构造函数上。