Adobe Flash非公式テクニカルノート Flash PlayerとSWFのバージョンを調べる
Flashコンテンツを正しく再生するためには、書出されたSWFファイルのバージョンが再生環境のFlash Playerのバージョンに対応していなければなりません。SWFファイルはコンテンツを提供する側がパブリッシュするバージョンを決めるのに対して、Flash Playerのバージョンは閲覧するユーザーによってまちまちです。ふたつのバージョンは、区別して理解しなければなりません。 01 Flash PlayerのバージョンはCapabilities.versionプロパティで調べる WIN 9,0,0,0 // Flash Player 9 for Windows 初めの3文字はプラットフォームを示し、スペースの後に続くカンマ区切りの数字がバージョン番号です。バージョン番号の4つの数字は頭から、それぞれメジャーバージョン、マイナーバージョン、ビルド、インターナルビルドと呼ばれます[*1]。 文字列の情報は目で確かめやすいものの、プラットフォームの情報やバージョン番号の個々の数字を扱うには不便です。String.split()メソッドを使えば、引数の文字(たとえばスペースやカンマ)でエレメントに区切った配列が得られます。 var my_array:Array = 文字列.split(区切り文字)スクリプト001■Capabilities.versionプロパティの文字列情報を配列にする
スクリプト001は、まずCapabilities.versionプロパティで得られた文字列を、String.split()メソッドにより半角スペース(" ")でエレメントに区切った配列にしています(第1および第3行目)。これでプラットフォームの情報は分けられたものの、バージョン番号の数字4つは文字列としてまとまったままです(第4〜5行目の[出力]参照)。 そこで、スクリプト001は、つぎにバージョン番号の数字4つをエレメントに切り分けます。もとの配列(version_array)のインデックス1の文字列(第5行目参照)を、String.split()メソッドによりカンマ(",")で配列エレメントに分ければよいでしょう。戻り値の配列をもとの配列につなぐには、Array.concat()メソッドを用います。他方、バージョン番号がまとまったままのインデックス1のエレメントは要りません。配列の最後のエレメントは、Array.pop()メソッドで取除けます。これらの処理を第6行目でまとめて行っています。 このように複数のメソッドを1行のステートメントで呼出すときには、参照するインスタンスの扱いと戻り値に注意しなければなりません。Stringクラスのメソッドは、参照する文字列はそのまま変えません。したがって、もとの文字列を変更したいなら、それが入った変数などの値を戻り値で上書きします。逆に、Arrayクラスには参照する配列自体を書替えるメソッドが少なくありません。スクリプト001で使ったメソッド3つについて、参照するインスタンスの扱いと戻り値を表001にまとめました。 表001■メソッドが参照するインスタンスの扱いと戻り値
なお、配列エレメントに分けられたバージョン番号の4つの数字は、そのままではデータ型がStringであることにご注意ください。
02 書出されたSWFファイルのバージョンはLoaderInfo.swfVersionプロパティで確かめる 図001■Flash Professional CS5.5の[パブリッシュ設定]ダイアログボックス 書出されたSWFファイルのバージョンは、LoaderInfo.swfVersionプロパティで確かめられます。読取り専用のプロパティで、値は整数です。このプロパティは読込みに少し時間がかかるため、メインタイムラインの第1フレームでいきなり調べるとランタイムエラー#2099が示されます(図002)。 図002■ この場合、LoaderInfoオブジェクトそのものは参照でき、イベントリスナーも加えられますので、LoaderInfo.completeイベント(定数Event.COMPLETE)で読込みを待てば大丈夫です。
LoaderInfo.swfVersionプロパティで示される整数値については、ひとつ注意しておかなければなりません。それは、Flash Player 10.2以降はPlayerのメジャーバージョンの番号とSWFファイルのバージョン番号が一致しないことです。ActionScript 3.0が使えるFlash Player 9以降について、対応するSWFのバージョンは次表002のとおりです[*3]。 表002■Flash PlayerとSWFのバージョン対応
これはFlash CS4 ProfessionalがFlash Professional CS5にアップグレードしたとき、サポートする最新のFlash Playerのバージョンが10.1から10.2にマイナーバージョンしか上がらなかったことによると考えられます。アプリケーションはメジャーアップグレードしていますので、書出されるSWFファイルのバージョンも(メジャー)バージョンが上がり、Flash Playerと対応しなくなったのでしょう。
作成者: 野中文雄 Copyright © 2001-2012 Fumio Nonaka. All rights reserved. |
||||||||||||||||||||||||||||||||||||||||