私はこれまで、HTML と通信する必要があるまれなケースで、ExternalInterface を使用してきました。
- FlashVars はより良い/より悪い、またはより新しい/より古いプラクティスと見なされますか?
- または、いつどちらを使用しますか?どちらを使用するかを決定するのに役立つロジックは何ですか?
私はこれまで、HTML と通信する必要があるまれなケースで、ExternalInterface を使用してきました。
FlashVars は良くも悪くもありません。ただ違います。ロード時にデータを swf に渡すことができます。最初に swf コンテキストを渡すだけでよい場合は、FlashVars が必要です。
さて、swf とそのホスト (ほとんどの場合、Javascript を実行できる Web ブラウザー) との間でさらに対話が必要な場合は、ExternalInterface が役に立ちます。
swf からホストにデータを渡したい場合は、AS 側から ExternalInterface.call を使用し、対応する JS 関数を html に設定します。通信が逆の場合は、AS 側から ExternalInterface.addCallback を使用し、html でこのコールバックを呼び出す JS 関数を用意します。もちろん、必要に応じて call と addCallback の両方を使用できます。ただし、ほとんどの場合、ExternalInterface.call のみを使用します。これは、このメカニズムを主に Google アナリティクスやその他の追跡システムを呼び出すために使用するためです。
ExternalInterface の重要な側面は、成功するためには、swf と通信を処理する JS コードの両方をロードする必要があるということです。これは少し考えれば明らかですが、考慮しないと問題が発生する可能性があります。つまり、swf にコールバックとしてまだ追加されていない関数を JS から呼び出しても、それは呼び出されません。逆の場合も同じですが、実際にはよりまれです。