13.HTMLから値を渡す
HTMLからSWFへ値を渡したい!
HTMLからFLASHのムービーに値を渡したい時があります。
例えば、ユーザーさんの登録番号や画像の種類などをSWFに渡して、相応の表示をする、とか。
私は今まで(AS2)、クエリ文字列で渡してました。
test.swf?name=ebichan&age=27
てな具合。
FLASH側では確かそのまま(_root.name とか)でアクセスできました。
これはとても理解しやすいのですが、、、
同じことをAS3でやろうとしたら、結構はまりました、、、(-_-;)
FlashVarsでもクエリでもいいみたい
ネットをざっと見ると、AS3で変数を渡すのにはまってる人もいるようで、奮戦している記載がありました。
やっぱり、少しややこしいんですってよ、奥さん!(って誰だよ?)
これを見ればずばりわかった!というページは見つからなくて − つまりみなさんレベルが高いわけです − いくつかのページを参考にした結果、ようやく値を渡すことができました。
そんなわけで以下にサンプルを示しますが、おそらくこれほどわかりやすいスクリプトは他にないでしょう?!
まず、HTMLの方。
下のはFlashVars使っていますが、別にFlashVarsじゃなくてもクエリでもいいみたいです。
<param name="quality" value="high" />などのパラメータも略
<param name="FlashVars" value="namae=ebichan&nenrei=27" />
<embed src="test.swf" FlashVars="namae=ebichan&nenrei=27" 略 />
</object>
アクションスクリプトの方では、以下のようにしたら受け渡しができました。
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 次ページの書き方も見てね
参考サイト