4月 8, 2009
3.0練習ではまった、外部にあるMCを動的配置
一ヶ月ずっと、帰宅時間が
終点か朝4時の二択な日々が続いてた。
やっと、仕事が落ち付いてAS3.0の勉強でもしようっと!
簡単な実験をちょっとやってみた。
3.0を仕事で使うには、最低限慣れておくべきもの
==========================================
■mcの生成
var インスタン名:MovieClip = new MovieClip();
「createEmptyMovieClip」じゃなくなって
概念が違うからちょっと戸惑った。
==========================================
■ライブラリから動的MCを配置
var インスタン名 = new リンケージ名();
addChild(インスタン名);
2.0でいうとアタッチ(attachMovie)ってやつ
最後に「addChild」をやらないと表示しない。なるほど。
==========================================
■外部swfの読み込み
var ローダー名:Loader = new Loader();
var URL変数 = new URLRequest(“XXXX.swf”);
ローダー名.load( URL変数 );
addChild(ローダー名);
URLは直接構えなくなってかならず「URLRequest」を経由。
ん、めんどくさい。最後はやっばり「addChild」。
==========================================
■親から外部swfのライブラリのMCを動的に配置
親:Main.swf
子:content_1.swf(ライブラリにmc_boxを配置)
親が「content_1.swf」をロード → mc_boxを配置
というふうにやりたかったが、2時間はまった。
mc_boxが見つからない。
いろいろ調べた結果、「ApplicationDomain」を使えば解決できるみたい。
2.0のリンケージでいうものは、
3.0じゃクラスとして書き出されるようになった。
外部swfを読み込んでもクラスは読み込まないのが原因みたい。
var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
で親にクラスを読み込む。
ローダー名.load( Myrequest , context );
loadの第二引数に宣言した「context」を渡せば読み込みOK。
配置するときは、動的にクラスを生成することになるから、
クラス名作成 → 代入&new
でやらないとだめ。それがまためんどくさい。
var ContentClass:Class = getDefinitionByName(“mc_box”) as Class;
var Mc_1:MovieClip = new ContentClass() as MovieClip;
すごいね
わたしいまもAS3勉きゅです
いしょにがんばろ!
Zoearthさんありがとうございます。
がんばりましょう。