2009-07-31 16 views
2

localConnectionを使用して2つのフラッシュムービーを送受信し、swfAからswfBにオブジェクトを渡します。これはうまくいくようですが、時折失敗するでしょう。ステータスイベントがerrorのレベルで発生しているという唯一の情報ですが、その他の情報はありません。接続が失敗すると、接続は続行されます。Flash PlayerのlocalConnectionはランダムに失敗することがありますか?

なぜ起きているのかわかりませんが、セキュリティ上の問題ではありません(両方の映画が同じドメインで実行されています)。すべての通信はtry..catchにラップされています。

誰もこれまでこれを見たことがありますか、誰かが映画間の通信のための代替方法を提案することができますか?私はExternalInterfaceを使用しようとしましたが、送信される更新の数が非常に遅いです。

+0

これらは失敗します。 Seanが以下に言及するように、これはしばしば名前の矛盾が原因です...しかし、他の場合もあります。彼らは「仕事」ですが、確かに信頼できません。 :( – Gabriel

答えて

0

LocalConnectionは危険です。それはあなたのコンピュータを通過し、世界中のクリップと通信します。つまり、同じページにいる必要はありません。たとえば、航空アプリケーションを実行していた場合は、ブラウザベースのアプリケーションと通信できます。

idsはグローバルで、矛盾するとエラーになります。私は同じswfを2回開いたときにこれが起こった(同じIDでリッスンするため)。これは別のページにある場合でも発生します。

もう1つの方法は、swfsにサーバーをポーリングし、データベースを介して通信させることです。それがまったく役立つかどうかはわかりません。私ができるときにLocalConnectionを避けようとしています:)

1

私たちは問題を修正したようですが、なぜ失敗したのかはわかりません。我々は、次を実装している:

速度は、タイムスタンプを付加することによって、ページがリフレッシュされるたびに、各映画のためのグローバルにユニークなIDを生成し、問題
  • ませんでしたexternalInterfaceにすべてを移動することでlocalConnectionsの数を削減
    • (同じidを再使用するのではなく)。これは失敗の発生を大幅に減少させるように思えました(まだ起こっていましたが)
    • LocalConnection IDに '_'を追加しました。これが助けになったのか、それが良い習慣に見えるのかわからない。
    • フェールが発生するたびに再接続を強制します。ここでも堅牢性を向上させるために実装するのは良いことですが、失敗していないので、これはバグを直接修正する責任がありません。

    最終的には一緒になっているように見えますが、これらは問題を解決しました。

  • 0

    私はちょうど同じ問題を抱えていました。私の解決策は、見つかるまで接続に再接続しようとするタイマーを設定することです。接続が成功するとe.target.stop()を設定する関数を持つ非常に簡単なタイマー。

    関連する問題