Deprecated: Assigning the return value of new by reference is deprecated in /virtual/jessejds/public_html/blog.bk-zen.com/wp-settings.php on line 472

Deprecated: Assigning the return value of new by reference is deprecated in /virtual/jessejds/public_html/blog.bk-zen.com/wp-settings.php on line 487

Deprecated: Assigning the return value of new by reference is deprecated in /virtual/jessejds/public_html/blog.bk-zen.com/wp-settings.php on line 494

Deprecated: Assigning the return value of new by reference is deprecated in /virtual/jessejds/public_html/blog.bk-zen.com/wp-settings.php on line 530

Deprecated: Assigning the return value of new by reference is deprecated in /virtual/jessejds/public_html/blog.bk-zen.com/wp-includes/cache.php on line 103

Deprecated: Assigning the return value of new by reference is deprecated in /virtual/jessejds/public_html/blog.bk-zen.com/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /virtual/jessejds/public_html/blog.bk-zen.com/wp-includes/theme.php on line 623
馬鹿全 - 2007-09

Home > Archives > 2007-09

2007-09

Flex で読み込んだ SWF を制御


Deprecated: Function split() is deprecated in /virtual/jessejds/public_html/blog.bk-zen.com/wp-content/themes/wp.vicuna.ext/functions.php on line 358

どうも、ひさびさの 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 側。

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

  • Comments (Close): 0
  • Trackbacks (Close): 0

Home > Archives > 2007-09

Search
Feeds
Meta

Return to page top