これは可能ですか?Flash 9 または Flash 10 がインストールされているユーザーが表示できるメイン SWF が必要です。この swf の内部では、Flash 10 がインストールされているユーザーに対してのみ、別のモジュールがロードされます。このモジュールは、いくつかの高度なフラッシュ 10 機能を使用します。
3 に答える
Flash 10SWFでFlash10固有のライブラリを使用しようとしているのでない限り、これは正常に機能するはずです。これはおそらくあなたが行っていることです。私はこれを試してみましたが、AdobeはFlash/Flexライブラリのデザインと品質に失望しています。
たとえば、私は次のことをしようとしていました
ユーザーのFlashPlayerが10以上の場合、Flash10モジュールをロードするFlash9ベースSWFがあります。このFlash10モジュールは、次のようなFlash 10固有のライブラリを使用することになります。1)flash.net.NetStreamPlayOptions 2)flash.net.NetStreamPlayTransitions 3)NetStream.play2残念ながら、これを行うと、Flashランタイムはそのようなものがないと文句を言います。 NetStreamPlayOptions、NetStreamPlayTransitions、およびNetStream.play2のようなもの。NetStreamPlayOptionsとNetStreamPlayTransitionsを複製してこれを回避しようとしましたが、残念ながら、NetStreamインスタンスをオブジェクトとしてキャストしても、NetStream.play2を呼び出すことができませんでした。
ベースSWfであるFlash9はFlash9用のplayerglobal.swcを使用しているため、このように機能すると思います。Flash10 SWFをロードしても、環境が原因でFlash9playerglobal.swcを使用することになります。 Flash 9用に初期化されたため、Flash10SWFで問題が発生します。私はこれを回避する方法をまだ見つけていません。
FlashがAS1->AS2->AS3に切り替わっていたとき、下位互換性がなかった理由は理にかなっていますが、AS3が常にAS3をロードできるとは限らないため、非常に残念です。
確かに、これはあなたが説明したようにうまくいくはずです。基本 SWF を Flash 9 で作成し、バージョン チェックを行い、必要に応じて 10 として公開された別の SWF を読み込みます。Flash は、読み込まれた SWF のバージョンに関係なく、v10 SWF の高度な機能をレンダリングします。
バージョンは文字列として返されるので、必ず a を実行しparseInt
てください。
私がフラッシュアプリを開発していないのは久しぶりですが...これらは私の2セントです:
メインのフラッシュを 10 にコンパイルする必要がある場合がありますが、これはアップグレードの警告のために問題になる可能性があります。
これは可能な回避策です: http://codeofdoom.com/wordpress/2009/02/09/compiling-to-flash-10-requiring-flash-9/
それができたら、あなたが言うように、フラッシュのバージョンを検出してさまざまなswfモジュールをロードするのは簡単だと思います。