HTMLにswfファイルを貼り付けてブラウザで見るときに、場合によってはHTMLに書いておいた値やパラメータをFlashの変数に渡してあげたいときがあると思います。Flash内を更新したいときや、ちょっとした汎用性のあるコンテンツを作るときに、Flashアプリケーションがインストールされていない環境でも、Flashの更新をしたりする時に便利です。色々ある方法の中で一番シンプルな方法、swfobjectを使って、ActionScriptにどう書けばいいのか紹介します。
swfobjectを使ってパラメータを設定する場合
swfobjectの使い方はswfobject v2.xの使い方を参考にしてみてください。
Flashコンテンツの背景色を色々変更したいという例えで紹介します。HTMLに書くswfobjectの書き方のイメージはこんな感じにします。
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
<!--
var flashvars = {bgColor: "FF0000"};//←背景色
var params = {allowscriptaccess: "always"};
swfobject.embedSWF("flash.swf", "flashContent", "100", "100", "8", "", flashvars, params,attributes);
//-->
</script>
flashvarsに変数名「bgColor」を書いて、値である16進数の「FF0000」を書いてみました。
ではActionScriptではどのように書くか
ActionScript2.0以下でflashvarsを取得する場合
ステージ全部に収まるシェイプを作って、今回の例では100×100の正方形のMovieClipを作ってステージに配置します。インスタンス名を「bg」としました。第1フレームに下記のActionScriptを書きます。
var color_obj = new Color(bg);// カラーオブジェクトを作成する var colorStr = "0x"+_root.bgColor;//ここがswfobjectで設定した値が入ります color_obj.setRGB(colorStr);
厳密なことはわかりませんが、flashvarsに格納した値はFlash上では_rootに宙に浮いてて、それを_root.[変数]にしてあげるとポコ!ってはいる。そんなイメージにしてますボクはw
ActionScript3.0でflashvarsを取得する場合
ActionScript3.0になってから、そんな宙に浮いていた値のイメージが、ちゃんとScriptを書いて値を取りに行くことを書かなければいけなくなりました。swfに渡そうとする変数の値は、LoaderInfoクラスで取得することができます。
import flash.display.LoaderInfo var params:Object = loaderInfo.parameters; var bgColorStr:String = params["bgColor"];
params[flashvars]になるので、複数の値を取得する時は名前を指定してあげれば取得することができます。

ピンバック: actionscript3.0 背景色のまとめサイト【やる気が起きない…あなたへのアドバイス】
ピンバック: actionscript3.0 背景色ってどう思いますか?【やる気が起きない…あなたへのアドバイス】
ピンバック: actionscript3.0 背景色について語ってみました【やる気が起きない…あなたへのアドバイス】