[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