- 2009-01-09 (金) 20:09
- ActionScript3.0 | Flash

ここを見ている人にぜひ質問したいことがある。
メールアドレスも適当でいいし、匿名でもいいのでコメントを残してくれることをお願いします。
数字だけでもイイです!お願いします><
主な対象者
- ActionScript3 で AS ファイルベースで Flex SDK を使って開発をしている人。
- 特に FlashDevelop を使っている人に一番問いたい。
Embed というタグを使って SWF やら 何やらを Embed するときってどうしてますか?
特に SWF が大量にある場合などが一番知りたい。
あと、 Embed した物を new するタイミングが知りたい。
よくある回答をおいておきます。
Embed の不満とかもあったら教えてくださいwww
※ コメントは、スパムが多いため、一度こちらで承認するまで表示されませんのでご注意ください
回答1.
[Embed(source = 'hoge.swf')]
private var Hoge: Class;
private var hoge: MovieClip;
[Embed(source = 'moja.mp3')]
private var Moja: Class;
private var moja: Sound;
private function init(): void
{
hoge = new Hoge();
moja = new Moja();
}
上のようにして、new するだけ。
複数あった場合はすべてこんな感じで。
回答2.
[Embed(source = 'hoge.swf')]
private var Hoge: Class;
private var hoge: MovieClip;
[Embed(source = 'moja.mp3')]
private var Moja: Class;
private var moja: Sound;
private function init(): void
{
moja = new Moja();
var mc: MovieClip = new Hoge();
Loader(mc.getChild(0)).contentLoaderInfo.addEventListener(Event.INIT, onInit);
}
private function onInit(e: Event): void
{
hoge = MovieClip(e.target.content);
}
上のように swf のルート を取得してから保持する。
複数あった場合は swf の数だけ行う。
Sound, Bitmap などはただ new するのみ。
回答3.
タイミングは 一番最初。
回答4.
タイミングは Embed したものが使われる直前。
回答5.
Embed は そもそも使わない。
基本 Loader とかで外部ファイルをロードする。
よろしくお願いします
↓見たいな感じの答え方でもいいです。
名無し
1と3
※ コメントは、スパムが多いため、一度こちらで承認するまで表示されませんのでご注意ください
大切な事なので2回言いm(ry
- Newer: ByteArray の勉強
- Older: FlashDevelop 3.0.0 RC1 補完が利かないクラスがある
Comments:6
- Yasu 09-01-09 (金) 22:58
-
初めまして。ClockMakerのYasuといいます。いつもブログを拝見しております。気になる質問だったのでコメントさせて頂きました。私は対象者にぴったりなFlex SDK&FlashDevelopユーザーです。
私は基本的に1ですが、大量にあって配列化するときはstaticにして配列に入れてます。
例
[Embed(source = '../assets/img_01.png')] static private var Staff01:Class;
[Embed(source = '../assets/img_02.png')] static private var Staff02:Class;
[Embed(source = '../assets/img_03.png')] static private var Staff03:Class;
[Embed(source = '../assets/img_04.png')] static private var Staff04:Class;
[Embed(source = '../assets/img_05.png')] static private var Staff05:Class;private static const IMG_LIST:Array =
[
new Staff01,
new Staff02,
new Staff03,
new Staff04,
new Staff05
]; - jc 09-01-10 (土) 0:16
-
> Yasu さん
早速の回答ありがとうございます!
それと、ブログ見てくださってありがとうございます!!
なるほど。
一つの配列にまとめるやり方は自分の中では初めて見ました。
確かにこれだったら大量にあっても少しスッキリまとめられそうですね。
貴重なコメントありがとうございました!!! - seyself 09-01-10 (土) 1:18
-
僕は制作がほとんどワンマンなので、あまり大量なSWFを埋め込むことがないのですが、SWF内に大量のリンケージシンボルを作っておいて、最初に埋め込み、あとは以下の createInstance() みたいなメソッド作って、必要なときにオブジェクトを作ったりします。
—–
[Embed(source = 'hoge.swf', mimeType = 'application/octet-stream')]
private var Hoge:Class;
private var _appDmain:ApplicationDomain;public function init() {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
function(event:Event):void { _appDmain = event.target.applicationDomain; });
loader.loadBytes(new Hoge());
}public function createInstance(name:String):DisplayObject
{ return new (_appDmain.getDefinition(name) as Class); }
—–あと、レイアウトはわりとFlash側でやってしまいたいので、
[Embed(source='hoge.swf', symbol='Main')]
みたいにメインのシンボルを指定して埋め込んで、その中身を使う場所に
addChild で置き換えるとかします。
何が効率がよいのか自分でもよくわかってないのでまだまだ模索中です。ぐだぐだな回答になってしまってすいません。
- jc 09-01-10 (土) 2:13
-
> seyself さん
コメントありがとうございます!
なるほど、確かに一人での制作であれば一つにまとめることも可能ですね!
SWF を mimeType で ByteArray として読み込んで Loader で読み込むやり方は初めて見ました!
勉強になります!
貴重なコメントありがとうございました! - kent 09-01-11 (日) 11:33
-
私は2を使っています。
必要なものをFLASHで作成して、root上においてそれを取得する形でやっています。
画像などは特に何も考えずに使う直前に作っています。
バラバラな場所でやってしまうのでいい方法がほしいです。
あと、前に一度、rootの取得に失敗したりすることがありました。
原因はわかりません。
大量のSWFを使うときにはソースがぐちゃぐちゃになって泣きたくなりますね。 - jc 09-01-23 (金) 23:20
-
> kent さん
コメントを誤って削除してしまったためもう一度コメント返します・・・。
コメントありがとうございます!
なるほど、SWF を扱う場合は2の方法で、画像等は1の方法ということですね。
たしかに、バラバラに Embed されているソースをよく見たことがあります。
ソースがぐちゃぐちゃな上に 2 の方法を使っていると EventHndler だらけになって流れが追えなくなりますよね。
貴重なコメントありがとうございました!
Trackbacks:0
- Trackback URL for this entry
- http://blog.bk-zen.com/2009/01/09/116/trackback/
- Listed below are links to weblogs that reference
- Embed について質問 from 馬鹿全