2016-03-24 9 views
0

iOSとAndroid用のFlexモバイルアプリがあります。パフォーマンス上の理由から、ダウンロードコードの一部をWorkerに移動したいと考えています。私は、サーバーからデータをダウンロードするRemoteObject呼び出しを行った後、ActionScriptにデシリアライズされている約20のJavaクラスを持っています。それらのクラスのそれぞれには[RemoteClass(alias="com.mycompany.MyClass")]というメタデータタグがあります。私の主なアプリケーションでは、これはすべて素晴らしい作品です。ただし、ワーカーでは、クラスごとに登録されたクラスエイリアスはありません。つまり、サーバーからデータを取得すると、自分のカスタムActionScriptクラスではなく、すべて汎用のObjectクラスになります。私は、作業者の中のすべての20のクラスについて、これらのクラスエイリアスを手動で再登録した後でのみ、データを正しく処理できました。registerClassAlias("com.mycompany.MyClass", MyClass);ActionScript Worker内のRemoteObjectクラスのエイリアス

私は別の場所でエイリアスを維持しなければならないのは嫌です。私の主なswfと私のワーカーの間のクラスエイリアスを維持する方法はありますか?

答えて

0

これは、Workerがメタデータを忘れているのではなく、ワーカーがAS3に関して別のアプリケーションであるために発生します。コンパイラは、すべて明示的に使用されていないクラスをスローします。

だから、あなたは2つのオプションがあります。

1)

public class Worker extends ... { 
    private static const FORCE_INCLUDE:Array = [MyClass1, MyClass2]; 
} 

2労働者に明示的にクラスを使用します)

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

をクラスを捨てるためにcomiler forbides [ArrayElementType]メタデータを使用してくださいまた、Workerのコンストラクタではなく、WorkerクラスでArrayElementTypeを直接指定することもできます。

関連する問題