2011-09-14 10 views
0

カスタムイベントを使用して、フラッシュとフレックスの間でオブジェクトが渡されています。私はflexでオブジェクトのクラスのコピーを含むライブラリをインポートしています。クラスは同じですが、flexでオブジェクトにアクセスしようとすると、次のエラーが発生します。フレックス - クロスドメインオブジェクト

TypeError: Error #1034: Type Coercion failed: cannot convert com.cackleberries.data.api::ApiObject$ to com.cackleberries.data.api.ApiObject.

アイデアはありますか?私はserverApi.makeApiCallへ​​を渡すときに、Flex AIR/

public function airEventHandler(type:String, data:Object):void 
{ 
    switch(type) 
    { 
      case "air_api_call": 
       if(data) 
       { 
        if(data.hasOwnProperty("apiObject")) 
        { 
         trace("got air api call event in application"); 
         serverApi.makeApiCall(ApiObject(data.apiObject)); 
        } 
       } 
       break; 
    } 
} 

からのコールバックは、私はエラーを取得していますよう

この機能は、フラッシュに渡されます。この関数のパラメータは​​です。最初に、データオブジェクトはapiObjectキーで値として​​(フラッシュで完了)で作成されます。

+1

どのような方法でデータを渡していますか。いくつかのコードを表示します。 –

+0

ここで、data.apiObject =を割り当てるコードを表示します。 –

答えて

0

serverApi.makeApiCallではなく、data.apiObjectから​​のキャストで問題が発生していません。

data.apiObjectは、​​がフラッシュアプ​​リに含まれていますが、フレックスアプリは​​が含まれているためです。 ソースファイルは同じですが、プレーヤーにとっては明らかにそうではありません。これは、フレックスコンパイラがフラッシュコンパイラとまったく同じ方法でコンパイルされないためだと思いますが、私は100%ではありません。

とにかくこれを解決するには、インターフェイスを使用する必要があります。​​はIApiObjectインターフェイスを実装して、必要なすべてのメソッド(つまり、フレックスアプリケーションに必要なメソッド)を定義してから、フレックス側に​​の代わりにdata.apiObjectIApiObjectをキャストします。