Tech
Webシステムプログラマーによる、ちょっとためになる(かもしれない)情報共有ブログ
 

【第45回】HTMLソースからFlashファイルに変数を渡す(その1)

 
今日はFlashの話題を...。

ひょんなことでActionScriptをいじるハメになってしまいました。

ということで今日は、引数をswfファイルに渡して、swfファイルで渡した引数を
表示するプログラムを作ります。

ソフトはAdobe Flash CS4 Professionalを使っていますが、CS3でも特に問題は
ないと思います。今回はActionScript3.0で書きます。
まずはFlashでデータを作ります。

1.次の画面からはFlashファイル(AS 3.0)を選択し、任意の名前をつけます。(図1)

1.jpg

ファイル→新規→Flashファイル(AS 3.0)の順にクリックして、任意の名前をつけ
ることもできます。


ここでは、vartest.flaという名前にしています。

2.レイヤー1の1フレーム目を右クリックしてアクション選択して、アクション
フレームを出します。

3.ここに次のプログラムを書きます。

// テキストフィールドの作成
var output_txt:TextField = new TextField();

// 結果文字列
var result_str:String = "";

// Flashで受け取る引数をオブジェクト化する
var flashVars:Object = loaderInfo.parameters;

// テキストを左揃えにする
addChild(output_txt);
output_txt.autoSize = TextFieldAutoSize.LEFT;

// 引数を代入
for (var name_str:String in flashVars) {
      result_str += name_str;
      result_str += " = ";
      result_str += flashVars[name_str];
      result_str += "\n";
}

// 結果を表示
output_txt.text=result_str;


上の青いチェックボタンを押して、シンタックスエラーチェックします。

これでエラーがないか確認します。(図2)

2-1.jpg

3.ファイル→パブリッシュの設定を選択し、パブリッシュの設定をします。

ここでは、Flash(swf)とHTMLにチェックを入れて、パブリッシュボタンを押しま
す。(図3)

3.jpg

パブリッシュボタンを押すとflaファイルを保存したところと同じフォルダに
vartest.swfファイルとvartest.htmlファイルが生成されます。

4.vartest.htmlを編集します。

4-1.秀丸などのテキストエディタでvartest.htmlファイルを開いて、次の
JavaScriptの関数を探します。

AC_FL_RunContent

たくさん引数がずらずらとあります。

引数に...

'FlashVars', 'myStr=aaa&myNum=555',

を追加します。

この場合は変数myStrにaaa、変数myNumに555を入れてswfファイルを呼び出します。

修正後はこんな感じになります。

    AC_FL_RunContent(
        'codebase',
'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0',
        'width', '550',
        'height', '400',
        'src', 'vartest',
        'quality', 'high',
        'pluginspage', 'http://www.adobe.com/go/getflashplayer_jp',
        'align', 'middle',
        'play', 'true',
        'loop', 'true',
        'scale', 'showall',
        'wmode', 'window',
        'devicefont', 'false',
        'id', 'vartest',
        'bgcolor', '#ffffff',
        'name', 'vartest',
        'menu', 'true',
        'allowFullScreen', 'false',
        'allowScriptAccess','sameDomain',
        'movie', 'vartest',
      'FlashVars', 'myStr=aaa&myNum=555',
        'salign', ''
        ); //end AC code


4-2.paramタグを追加します。

JavaScriptを有効にしていれば、4-1だけでも動きますがJavaScriptを無効にし
ている場合も追加しておきます。

<param name="allowScriptAccess" value="sameDomain" />

など、paramタグがずらずらと並んでいるところに...。

<param name="FlashVars" value="myStr=aaa&myNum=555" />

を追加します。

4-3.embedタグの追加

もうひとつ、embedタグの要素を追加します。

<embed src="vartest.swf" quality="high" bgcolor="#ffffff" width="550"
height="400" name="vartest" align="middle"
allowScriptAccess="sameDomain" allowFullScreen="false"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer_jp" />

のところを...。

FlashVars="myStr=aaa&myNum=555"を追加します。

このような感じになります。

<embed src="vartest.swf" FlashVars="myStr=aaa&myNum=555" quality="high"
bgcolor="#ffffff" width="550" height="400" name="vartest" align="middle"
allowScriptAccess="sameDomain" allowFullScreen="false"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer_jp" />

それでは、vartest.htmlをブラウザで開いてみます。

おお~。swfファイルでHTMLで指定した名前と引数が表示されました~。(図4)

4.gif

今回はActionScript3.0で書きましたが、1.0と2.0はActionScriptのソースが異
なります。

ActionScript1.0と2.0についてはまた来週にします。

つづく~。





トラックバック(0)

トラックバックURL: http://blog.promob.jp/mt/mt-tb.cgi/232

コメント(1)

| コメントする

このサイトの情報で、パラメータの受け取りができるようになりました。ありがとうございました。

一つ教えて欲しいのですが、
swfファイルの引数をFLASH as3.0で受け取る方法を
教えて頂けないでしょうか。

例:
sample.swf?parm1=9999
としたときのFLASH側のコーディングを知りたいです。

AS3.0では、
_root(parm1)というやり方は使えないと言うことなので、
まったくわかりません。

コメントする