[AS] 外部SWFファイルの読み込みで、子swf側で動的に配置したmcが表示されない。
すげー悩んだのでメモ。
親SWF(parent.swf)で、ドキュメントクラス Main.asを設定して、外部swfを読む処理はこんな感じ
//ドキュメントクラス
package {
import flash.display.Loader;
import flash.net.URLRequest;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.display.MovieClip;
//親ファイルのドキュメントクラス
public class Main extends MovieClip {
var loader:Loader
private var loaderRoot:Object;
public function Main() {
loader= new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,xComplete);
var urlReq:URLRequest = new URLRequest("test.swf");
loader.load(urlReq);
}
public function xComplete(e:Event):void {
addChild(loader);
}
}
}
子swf(test.swf)はこんな感じで、動的に何かを表示させてみる。
(ステージには他にシェイプとか文字とかおいておく。)
package {
//ドキュメントクラス
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.MouseEvent;
public class Main extends Sprite {
public function Main() {
var sp:Sprite = new Sprite()
sp.graphics.beginFill(0xFFCC00);
sp.graphics.drawRect(0, 0, 100, 100);
sp.graphics.endFill();
addChild(sp);
}
}
}
一見平気そうにみえるけど、これでparent.swfを開くとtest.swfで定義した四角が表示されてない・・・
test.swf単体で開けば四角は表示されるのに、parent.swfを開くと表示されない。
Flash上で、ステージにおいたものは表示されているので、swfを読み込めてないわけではない。
なんだこりゃー!!!!!と思ったら・・・
読み込み側のswfのドキュメントクラス名と、読み込まれる側のドキュメントクラス名が同じだとまずいようす。
(今回は両方とも、Main.asとなっている)
というわけで、どちらかを変えてあげればOK。
子swf側を変えるのであればこんな感じ。
package {
//MainからTestMainに変更
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.MouseEvent;
public class TestMain extends Sprite {
public function TestMain() {
var sp:Sprite = new Sprite()
sp.graphics.beginFill(0xFFCC00);
sp.graphics.drawRect(0, 0, 100, 100);
sp.graphics.endFill();
addChild(sp);
}
}
}
もちろんflaファイルの設定も変えなきゃね。
ちなみに、ドキュメントクラス名が一緒の状態で、子swf側でステージ上のインスタンス名を取得しようと以下のようなエラーがでました。
//ステージに_mcというインスタンス名のMCがある状態で。
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.MouseEvent;
public class Main extends Sprite {
public function Main() {
var sp:Sprite = new Sprite()
sp.graphics.beginFill(0xFFCC00);
sp.graphics.drawRect(0, 0, 100, 100);
sp.graphics.endFill();
addChild(sp);
//これはエラーになる。
var mc:MovieClip = MovieClip(this.getChildByName("_mc"));
}
}
}
ReferenceError: Error #1056: Main のプロパティ _mc を作成できません。
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at Main()
Tweet
7 Comments
Творческая Лаборатория DedicateT Creative Laboratory DedicateT
Добрый день!
Необыкновенно интересный сайт.
Масса приколов…Анаша, Амф, Амф, Дудка, и т.д.
Переходи на сайт:
https://frankcasinos-play.com/
Проститутки
официальный сайт казино франк
Героин
How to make $ 5292 per day: https://hh-k-lo.blogspot.be?mw=40
ГОТОВАЯ СХЕМА ЗАРАБОТКА В ИНТЕРНЕТЕ С МИНИМАЛЬНЫМИ ВЛОЖЕНИЯМИ от 9352 рублей в день https://1borsa.com/millionrubley276124
Hi everyone , I’m Hayley.
Welcome to my about page. I started writing in middle school after a creative writing assignment for my English teacher. I did creative writing for almost a year before I thought about doing something else.
I had always loved doing research papers because I’m passionate about learning. When you combine writing skill with a love of learning, academic writing only makes sense as a job.
I’m passionate about aiding the students of the future in their school career. When they don’t like their assignment , I am there to help.
Hayley – Professional Academic Writer – toppaperwriters.comTeam
Fwd: Storу of Suссessful Раssivе Incоmе Strаtegiеs. Тhе $10000 per Mоnth Guidе tо Рassive Inсоmе: http://trawvygy.mypcprotech.com/fec
Buy and Download Cheap Microsoft Windows 10 Home Online.
Download Cheap Microsoft Windows 10 Pro