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 的构造函数上。
我有 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);
我不喜欢现在必须在两个不同的地方维护别名。有什么方法可以维持我的主 swf 和我的 Worker 之间的 class 别名吗?
这可能发生不是因为 Worker
忘记了元数据,而是因为 Worker 在 AS3 方面是一个独立的应用程序。编译器会丢弃 所有 您未明确使用的 classes。
所以你有两个选择:
1) 在 Worker
中明确使用 classespublic 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 的构造函数上。