SSブログ

Flex で読み込んだ SWF を制御 [ActionScript3.0]

どうも、ひさびさの JC です。

最近 Flex の勉強中。
それで、どうすれば良いのかわからなかったのでいろいろ調べてみてわかったことのメモ。
※ Flex の和書ってなかなかないね・・・。仕方なく洋書を読む。

Flex で外部 SWF ファイルを読み込むときはどうするか。
本当は Flex Component Kit for flash cs3 を使って SWC 形式の コンポーネントにして
制御しやすそうな形にするつもりでいた。
でも、いろいろ調べてみたら、
SWC 形式で Flex Component にした場合
大本の MC のタイムラインの ActionScript は動くが、
その MC にネストされている MC の ActionScript はまったく動かないことがわかった。

って事で、SWF 化 したものを Flex 側で読み込んで制御してしまおう。
という考えに落ち着いた。

まず、Flex に SWF ファイルを読み込むやり方はいくつかある。
Image を使ったりなんかいろいろあったが、
SWFLoader というのがあったのでそれを使ってみた。

<mx:SWFLoader id="myLoader" source="test.swf" creationComplete="initTest();" />
<mx:Button label="hoge" buttonDown="btnPressTest();" />

こんな感じで外部 SWF を読み込む。
creationComplete で指定したメソッドは SWF ファイルの読み込みが終わったら呼ばれるメソッドだ。
ボタンのほうは クリックされたら btnPressTest というメソッドが呼ばれるようにしてみた。
でわ、その関数を書いてみる。

initTest() では何をするか。
特に何もしなくても良いが、今回は、読み込んだ SWF ファイルの Root を取り出してみる。

import flash.display.MovieClip;
private var rootMc: MovieClip;
public function initTest() {
this.rootMc = myLoader.content as MovieClip;

}

こうすると、 読み込まれた SWF ファイルの Root に this.rootMc でアクセスすることができる。

では、実際制御してみよう。
読み込む SWF ファイルの 構造は以下のようにすることにした。
root に hoge_mc (MovieClip) を配置。hoge_mc 内では適当なムービーが流れていることにした。
root に moja_txt (ダイナミックテキスト(TextField)) を配置。 "Test" という文字列を入力。

制御側はボタンで制御することにした。

import org.flashdevelop.utils.FlashConnect;
public function btnPressTest() {
this.rootMc.hoge_mc.stop();
FlashConnect.trace(this.rootMc.moja_txt.text); // output: Test
this.rootMc.moja_txt.text = "hoge";

}

こんな感じで書いてみた。
FlashConnect は Flex の開発環境として、 Flash Develop 3 を使っているので Trace を出す方法が FlashConnect になっている。
くわしくはこっち。

これで、Flex 側から SWFを制御できる。
ボタンをクリックすると、hoge_mc の ムービーが止まり、
moja_txt の内容が Trace されて、それが "hoge" に書き換わる。

まぁ簡単だがこんな感じで。
これで、逆ができないかなぁ~と思っている。
Flash で作成した SWF から Flex 側を制御する。
もちろん読み込むのは Flex 側。

ビジターパターンとか勉強しなきゃかな。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

Flash CS3 に見つけた顔ビンゴ必勝法 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

この広告は180日新規投稿のないブログに表示されます