- 2008-09-08 (月) 6:05
- FlashDevelop

以前、 Embed で Symbol 指定をしたクラスは MovieClip にキャストできない上に SpriteAsset にしてもフレーム内のスクリプトが無視されるという問題についてエントリーを書いた。
正直解決しないまま終わっていたが、風邪で魘されているときに思いついた。
コメント で http://as3s.org/2008/01/embed-flash-cs3-flex-builder/ に答えっぽいのがあるとのことで教えてもらったんですが
正直この方法は面倒すぎる。
第一に、Embed する中身のスクリプト状況を知っておかないといけない。
第二に、大量に Embed しないといけない時はめまいがする。
そもそも、俺が Embed したいというときはデザイン等を他の人に任せて、俺は制御側に回りたいからで、
FlashCS3 でかかれたものがどんなものか毛ほども気にしたくないからだ。
上記の方法だと、一人で作るうえでは特に問題ないかも知れないが二人で作る場合は面倒になるだろう。
では、どうしたらいいのか。
一度公開を停止します。
再度公開しなおしました。
http://blog.bk-zen.com/2009/08/17/207/
Symbol で定義されたものはどうしても上記の方法を使わざるを得ない。
じゃあ Symbol 使わなきゃ良いじゃん!
ってことで、 Symbol はいらんと判断。
Embed した Class をMovieClip にして、その SWF のライブラリを利用すれば OK じゃね?
と思いついた。
今朝おきて早速作ったファイルは以下。
Embedder ※ ちょっと不具合があったので一旦公開停止、後で修正します。
コレを使えば Embed した SWFから簡単にライブラリの Symbol をMovieClip として取得できる。
使い方
Embedder を継承したクラスを作る。仮に TestEmbedder クラスとする。
TestEmbedder のコンストラクタの中で必要な Symbol を含む SWF を Embed する。
TestEmbedder のコンストラクタ内で libSetup(Class, “クラス名”[, "クラス名2"...]);
でメインクラスでMyEmbedder を new して、そのインスタンスにイベントリスナーを登録する。
Event.COMPLETE イベントが帰ってきたら メインを進める。
その後 Embedder.getLibMc(”クラス名”)でライブラリ内の MovieClip を取得することが出来る。
他にも Embed した SWF の中Root上にある MovieClip も取得できるようにしておいた。
サンプル用のクラスも添付しておいたのでそちらを参照のこと。
問題
Embed するクラスが少ない場合や、特に Symbol のフレーム内に Script が含まれない場合はこっちのほうが面倒かも知れない。
以上
風邪で魘されていた最中に思いついて、早くコレを実験したいという気力で風邪を治すという LifeHack !
- Newer: FlashDevelop Beta9 出てるよ
- Older: SWF の Embed で注意すべきところ
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://blog.bk-zen.com/2008/09/08/75/trackback/
- Listed below are links to weblogs that reference
- SWF を Embed するときにちょっと便利な Embedder from 馬鹿全

