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
馬鹿全 - Flex と Flash CS3 の ハイブリッド SWF について

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

Flex と Flash CS3 の ハイブリッド 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 と 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 (Close):4

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

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

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

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

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

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

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

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

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

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

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

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

Trackbacks (Close):2

pingback from Twitter Trackbacks for 馬鹿全 - Flex と Flash CS3 の ハイブリッド SWF について [bk-zen.com] on Topsy.com 10-04-06 (火) 5:41

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

[...] 馬鹿全 - 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

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

[...] 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