13.HTMLから値を渡す

HTMLからSWFへ値を渡したい!

HTMLからFLASHのムービーに値を渡したい時があります。

例えば、ユーザーさんの登録番号や画像の種類などをSWFに渡して、相応の表示をする、とか。

私は今まで(AS2)、クエリ文字列で渡してました。

test.swf?name=ebichan&age=27

てな具合。

FLASH側では確かそのまま(_root.name とか)でアクセスできました。

これはとても理解しやすいのですが、、、

同じことをAS3でやろうとしたら、結構はまりました、、、(-_-;)

FlashVarsでもクエリでもいいみたい

ネットをざっと見ると、AS3で変数を渡すのにはまってる人もいるようで、奮戦している記載がありました。

やっぱり、少しややこしいんですってよ、奥さん!(って誰だよ?)

これを見ればずばりわかった!というページは見つからなくて − つまりみなさんレベルが高いわけです − いくつかのページを参考にした結果、ようやく値を渡すことができました。

そんなわけで以下にサンプルを示しますが、おそらくこれほどわかりやすいスクリプトは他にないでしょう?!

まず、HTMLの方。

下のはFlashVars使っていますが、別にFlashVarsじゃなくてもクエリでもいいみたいです。

<object 略>
<param name="quality" value="high" />などのパラメータも略
<param name="FlashVars" value="namae=ebichan&nenrei=27" />
<embed src="test.swf" FlashVars="namae=ebichan&nenrei=27" 略 />
</object>

アクションスクリプトの方では、以下のようにしたら受け渡しができました。

//test.as
package {
import flash.display.*;
import flash.text.*;

public class test extends Sprite {//クラス宣言

private var tf:TextField= new TextField();//表示用

private var paramObj:Object;//◆

private var myname:String;//ここに入れます
private var myage:Number;//ここに入れます

public function test(){//コンストラクタ

tf.text="値の受け渡しテスト\n";
addChild(tf);
tf.x=10;
tf.y=10;

paramObj= LoaderInfo(this.root.loaderInfo).parameters;//◆

myname=String(paramObj["namae"]);//◆
myage=Number(paramObj["nenrei"]);//◆

tf.appendText("myname = "+myname+"\n");
tf.appendText("myage = "+myage);
}
}
}

◆の部分がミソのようです。

LoaderInfo(this.root.loaderInfo).parameters

って何コレ?って感じですが、深く考えるのはやめます、、、(^^;

実行結果を見てみる

※追記08/1/22 次ページの書き方も見てね

→13.HTMLから値を渡す2

12.円柱クラス2←