Home > ActionScript3.0 | Flash | Flex > Flex と Flash CS3 の ハイブリッド SWF について

Flex と Flash CS3 の ハイブリッド SWF について

どうも JC です。
Flex と Flash CS3 ではコンパイラが違い、挙動も違ったりします。
その二つを掛け合わせて作る ハイブリッドな SWF についてだらだらと書いてみる。

そもそも、そんな機会があるのだろうか?という疑問があるが、ちょっと仕事でそんな場面に出くわしたので
一応、俺なりに調べてみた。

今回は主に Flex に Flash CS3 の SWF を Embed することについて書くことにする。

Flex で SWF を Embed する方法は主に以下の二つ。

  • MXML 上で Image を使って source=”@Embed(source=’hoge.swf’)” みたいに書く
  • AS ファイルや MXML の Script のところなどで、[Embed(sourc = 'hoge.swf')](以下で記述する)みたいに書く

Embed した時に SWF ファイルの root を取得する方法はどうすればいいのか。

上の方法ではもしかしたらまともな取り方はできないかもしれない。
強いて言えば LocalConnection を使って取得できるかもしれないが、お勧めはできない。
なぜなら、 LocalConnection は SWF が二つ開かれていた場合には 先に開いたほうしか受信できないからだ。
さらに、妙なランタイムエラーとかで悩まされたことがあったような無かったような。

ってことで上は却下。

下の方法ではどうしたらいいのか。
そもそも下の方法はどうやって記述するのかを先に書いておこう。

まずは MXML で SWF を配置する Image や SWFLoader などをつくり適当に id を振っておこう。
今回は Image を使い、 id は testImage としておいた。

次に Script を書く。

    import flash.display.Loader;
    import flash.events.Event;
    import flash.net.LocalConnection;
    import mx.core.MovieClipLoaderAsset;
    import org.flashdevelop.utils.FlashConnect;

    [Embed(source = 'loadcs3.swf')]
    private var FlashCS3: Class;

    public function _initialize(event: Event): void {
        var swf: MovieClipLoaderAsset = new FlashCS3();
        testImage.addChild(swf);
        Loader(swf.getChildAt(0)).contentLoaderInfo.addEventListener(Event.INIT, init);
    }

public function init(event: Event): void {
        // event.target.content = swf の root
}

上の_initialize() は MXML の initialize か、 createComplete イベントなど呼ばれるようにしておく。
こんだけでOK。
あとは init() で渡されてきた event の target.content が SWF の root というわけだ。
Loaderはかなり便利。
いろんなところで使われるので覚えておいて損は無いと思う。

[追記]

MovieClipLoaderAssetじゃなくて MovieClip でも OK っぽい。

Comments:4

kego 08-01-31 (木) 11:21

この情報に救われました。ありがとう

jc 08-02-01 (金) 14:07

> kego さん
どういたしまして(´▽`)

photoshop-T 08-09-24 (水) 16:06

サイト名が面白い。O(∩_∩)O
でも、すごく頭のいい技術タイプじゃない?

jc 08-09-27 (土) 19:15

>photoshop-T さん
ありがとうございますw
「馬鹿なことでも全力で」はホントはもっとお馬鹿なサイトにするつもりだったんですがw
Flash の勉強をしてるもので、その影響でこんな感じのブログになりましたw

Comment Form
Remember personal info

Trackbacks:2

Trackback URL for this entry
http://blog.bk-zen.com/2007/12/27/46/trackback/
Listed below are links to weblogs that reference
Flex と Flash CS3 の ハイブリッド SWF について from 馬鹿全
pingback from Twitter Trackbacks for 馬鹿全 - Flex と Flash CS3 の ハイブリッド SWF について [bk-zen.com] on Topsy.com 10-04-06 (火) 5:41

[...] 馬鹿全 - Flex と Flash CS3 の ハイブリッド SWF について blog.bk-zen.com/2007/12/27/46 – view page – cached 馬鹿なことでも全力で。Flash, Flex, Action Script, Java Script, perl, php, 色々。 Filter tweets [...]

pingback from Embed時にSWFファイルのrootを取得する方法 – noname 10-06-09 (水) 17:59

[...] http://blog.bk-zen.com/2007/12/27/46/ PLAIN TEXT [...]

Home > ActionScript3.0 | Flash | Flex > Flex と Flash CS3 の ハイブリッド SWF について

Search
Feeds
Meta

Return to page top