AS3アクションでボタンクリックで外部のswfを読み込む方法

このQ&Aのポイント
  • AS3アクションを使用してボタンクリックで外部のswfを読み込む方法について教えてください。
  • ボタンをクリックするたびに読み込んだswfが重なって表示されてしまう問題が発生しています。
  • 他のボタンをクリックしたときに表示されているswfをクリアする方法はあるでしょうか。
回答を見る
  • ベストアンサー

AS3 アクションのクリア

ボタンクリックで外部のswfを読み込んでいます。 btn1.addEventListener(MouseEvent.CLICK,link1); function link1(event:MouseEvent):void { var req:URLRequest = new URLRequest("movie.swf"); var ld:Loader = new Loader(); ld.load(req); MovieClip(parent).main_mc.mc1.addChild(ld); } 他のボタンにも同じようにmain_mc.mc1にそれぞれのswfを読み込むようにしていますが、 ボタンをクリックするたびに、main_mc.mc1に読み込んだswfが重なって表示されてしまいます。 AS1・2のように自動的にクリアになり新しいswfが読み込まれるということができません。 他のボタンをクリックしたときにmain_mc.mc1に表示されているswfをクリアにする方法はないでしょうか。 ActionScript3は勉強中のため、知識が浅く申し訳ありませんが、わかる方教えてください。 お願いいたします。

  • Flash
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

単に ボタンをクリックする度に, Loader インスタンスを作成し続けるから変になるのだと思います。 外部 SWF は Loader にロードされるのですよ。 ムービークリップ ではなく ムービークリップ内 の Loader にロードされるのです。 そのイメージをしっかり持ってください。 変更例↓ ======================== //↓Loaderは1つで良い var ld:Loader = new Loader(); MovieClip(parent).main_mc.mc1.addChild(ld); btn1.addEventListener(MouseEvent.CLICK,link1); function link1(event:MouseEvent):void { var req:URLRequest=new URLRequest("movie.swf"); ld.load(req); } //---同階層にbtn2があってmovie2.swfをロードする例--- btn2.addEventListener(MouseEvent.CLICK,link2); function link2(event:MouseEvent):void { var req:URLRequest=new URLRequest("movie2.swf"); ld.load(req); } ========================

go_and_goes
質問者

お礼

ありがとうございます。やっと理解ができました。 もっとAS3を勉強してみます。

関連するQ&A

  • Flash as3.0版ソース  ボタンで内容遷移、うまくいかない…

    こんにちは。 Flash as3.0勉強始めてばかりです。 下記のソースのエラーはボタンを押したたびに、表示した内容はどんどん重ねています。たとえば、(1)ボタンを押した場合、(1)の内容を表示されまして。(2)ボタンを押したとき、画面には(1)+(2)の内容を表示されています。 いろいろ調べましたんですが、なかなかうまくいかないです。 ご解答をよろしくお願い致します。 詳細ソース ーーーーーーーーーーーーーーーーーーーーーー // イベントを設定 Button_tsr.addEventListener ( MouseEvent.CLICK , onClick1 ); Button_gaiyou.addEventListener ( MouseEvent.CLICK , onClick2 ); Button_message.addEventListener ( MouseEvent.CLICK , onClick3 ); Button_jigyou.addEventListener ( MouseEvent.CLICK , onClick4 ); Button_saiyou.addEventListener ( MouseEvent.CLICK , onClick5 ); Button_toiawase.addEventListener ( MouseEvent.CLICK , onClick6 ); // ローダーオブジェクトを作成し配置 var loader_obj : Loader = new Loader(); stage.addChild (loader_obj); loader_obj.x = 85; loader_obj.y =97; // 画面クリックをするとonClickが動作するイベント function onClick1 ( event:MouseEvent ) { // URLRequestを設定 var url0:URLRequest = new URLRequest( "Top.swf" ); // 実際にページに飛ぶ loader_obj.load ( url0 ); } function onClick2 ( event:MouseEvent ) { // URLRequestを設定 var url1:URLRequest = new URLRequest( "概要.swf" ); // 実際にページに飛ぶ loader_obj.load ( url1 ); } function onClick3 ( event:MouseEvent ) { // URLRequestを設定 var url2:URLRequest = new URLRequest( "Message.swf" ); // 実際にページに飛ぶ loader_obj.load ( url2); } function onClick4 ( event:MouseEvent ) { // URLRequestを設定 var url3:URLRequest = new URLRequest( "サービス.swf" ); // 実際にページに飛ぶ loader_obj.load ( url3); } function onClick5 ( event:MouseEvent ) { // URLRequestを設定 var url4:URLRequest = new URLRequest( "情報.swf" ); // 実際にページに飛ぶ loader_obj.load ( url4); } function onClick6 ( event:MouseEvent ) { // URLRequestを設定 var url5:URLRequest = new URLRequest( "問合せ.swf" ); // 実際にページに飛ぶ loader_obj.load ( url5); }

  • as3 addchildで生成したMCにリンクを張る

    下記のようなことがしたいのですが、 エラーになります。 //空のムービークリップを作成 var mc:MovieClip = new MovieClip(); mc.name = "test"; ~中略(画像を読み込んでます)~ stage.addChild(mc); stage.mc.addEventListener(MouseEvent.CLICK, function(event) { var theURL:URLRequest = new URLRequest("http://yahoo.co.jp"); navigateToURL(theURL); }); 生成したMCにリンクを張る場合は どのようにしたらよいのでしょうか。 ご教授お願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0による外部swfの制御

    AS3.0による外部swfの制御 質問させていただきます。 やりたいと事は、メインとなるswfのボタンを押して、 読み込んだ外部swf(stopしている)を再生(play)したいと考えております。 メインのswfはAS3.0、読み込む外部swfはAS2.0になります。 環境はFlash CS3です。 以下がスクリプトになります。 //swf読み込み配置 var loader_obj : Loader = new Loader(); var url : URLRequest = new URLRequest("test.swf"); MovieClip(root).loader_obj.load(url); loader_obj.y = 3 loader_obj.x = 392 stage.addChild(loader_obj); //swfボタン制御 btn.addEventListener(MouseEvent.ROLL_OVER,btn_play); function btn_play(event:MouseEvent):void {MovieClip(root).photo.gotoAndPlay(2);//メインswfのムービーリップも動かす <--ここに外部swfを参照するスクリプトが入ると思うのですが・・・-->gotoAndPlay(2);//外部swfの2フレーム目から再生 } 肝心の所のスクリプトはわかりません・・・ 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • AS3での外部swfの制御

    こんにちは。 Flashのコードについて質問させていただきます。 AS3で外部swfを読み込み、制御したいのですが上手くいきません。 ここでいう外部swfはflashで作ったものではなく、aftereffectsでswfで書き出したものです。 var swf:MovieClip; var loader:Loader = new Loader(); var newSWFRequest:URLRequest = new URLRequest("swfs/" + "test" + ".swf"); loader.load(newSWFRequest); addChild(loader); 上記コードでswfを表示+再生は出来ます。 更に、swfを停止、再再生、逆再生などしたいのですが、可能でしょうか? そもそもこのswfにはタイムラインという概念が存在しないので微妙ですが。。。 swf = new MovieClip(); swf .stop(); とか書き足せば、 TypeError: Error #1034: 強制型変換に失敗しました。flash.display::AVM1Movie@231c04a1 を flash.display.MovieClip に変換できません。 が出ます。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • AS3.0 写真の切り替え

    調べても調べても漠然とした状態が続いてるので質問させていただきました。 まず、サンプルとしてこんなようなものが作りたいんです。 http://www.subaru-sls.co.jp/ ここの企業みたいな写真が一定時間でその場所その場所に移動していくというのを作りたいのですが、今後のことを考え、タイムラインにASを組むのではなく、外部AS(ドキュメントクラス?)だけで作りたいのです。 因みに写真などの配置はなんとかできたのですが、写真が切り替わるのがまったくわかりません。 こちらが現状況のコードになります。↓ package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.display.Shape; import flash.events.TimerEvent; import flash.utils.Timer; import flash.events.MouseEvent; import flash.display.Bitmap; [SWF(width = "550",height = "400")] public class main extends Sprite { //プロパティ var mc01:Sprite = new Sprite(); var mc02:Sprite = new Sprite(); var mc03:Sprite = new Sprite(); var imgUrl01:String = "kabegami1.jpg"; var imgUrl02:String = "kabegami2.jpg"; var imgUrl03:String = "kabegami3.jpg"; var onUrl01:URLRequest = new URLRequest(imgUrl01); var onUrl02:URLRequest = new URLRequest(imgUrl02); var onUrl03:URLRequest = new URLRequest(imgUrl03); var img01:Loader = new Loader(); var img02:Loader = new Loader(); var img03:Loader = new Loader(); var square01:Shape = new Shape(); var square02:Shape = new Shape(); var square03:Shape = new Shape(); var i:int = 0; var timer:Timer = new Timer(20); //コンストラクタ public function main () { init (); } //メソッド private function init () { square01.graphics.beginFill (0x000000); square02.graphics.beginFill (0x000000); square03.graphics.beginFill (0x000000); square01.graphics.drawRect (10, 10, 330, 380); square02.graphics.drawRect (350, 10, 110, 380); square03.graphics.drawRect (470, 10, 70, 380); square01.graphics.endFill (); square02.graphics.endFill (); square03.graphics.endFill (); img01.mask = square01; img02.mask = square02; img03.mask = square03; img01.load (onUrl01); img02.load (onUrl02); img03.load (onUrl03); addChild (square01); addChild (square02); addChild (square03); addChild (img01); addChild (img02); addChild (img03); timer.addEventListener (TimerEvent.TIMER,onTimer); timer.start (); img01.addEventListener (MouseEvent.MOUSE_DOWN,mouseDownHandler); } private function mouseDownHandler (event:MouseEvent):void { } private function onTimer (event:TimerEvent):void { i++; img01.alpha -= 0.01; } } } 長文になってしまいましたが、どうかご教授お願いします。

    • ベストアンサー
    • Flash
  • 外部から読み込んだ画像にリンクをつけたい

    ActionScript3.0についての質問です。 ボタンをクリックした時に外部から画像を読み込んで、 読み込んだ画像にそれぞれに外部リンクをつけたいのですが、 リンクのつけ方が分かりません。 ボタンをクリックして外部から画像を読み込むところまではできたのですが、 その画像にリンクをつけるところで困っています。 超初心者ですので、できるだけ現状のプログラムを生かして変更したいのですが… どなたか分かる方がいらっしゃいましたら、教えていただきたいです。 よろしくお願いいたします。 【Main.as】 package { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; import flash.display.Loader; import flash.display.LoaderInfo; import flash.net.URLRequest; import flash.display.SimpleButton; public class Main extends Sprite { private var contentMC:MovieClip; private var contentLoader:Loader; //コンストラクタ public function Main(){ //外部ファイルを配置するムービークリップの生成 contentMC = new MovieClip(); contentMC.x=0; contentMC.y=0; addChild(contentMC); //Loaderオブジェクトを生成 contentLoader = new Loader(); contentMC.addChild(contentLoader); //ボタン処理 my1_btn.addEventListener(MouseEvent.CLICK,my1Handler); my2_btn.addEventListener(MouseEvent.CLICK,my2Handler); my3_btn.addEventListener(MouseEvent.CLICK,my3Handler); } //各ボタンをクリックしたときに外部ファイルを読み込む private function my1Handler(evt:MouseEvent):void{ var url="img/flashimg01.jpg"; loadContent(url); } private function my2Handler(evt:MouseEvent):void{ var url="img/flashimg02.jpg"; loadContent(url); } private function my3Handler(evt:MouseEvent):void{ var url="img/flashimg03.jpg"; loadContent(url); } //外部ファイル読込 private function loadContent(url){ var req:URLRequest = new URLRequest(url); contentLoader.load(req); } } }

    • ベストアンサー
    • Flash
  • Flash professional CS5を使っており,AS3.0で

    Flash professional CS5を使っており,AS3.0で記述しています。 外部swf(test.swf)をムービークリップ(my_mcとしました)に読み込むには どのようにコードを記述すればよいのでしょうか? MovieClipLoaderを使う物や var urlReq:URLRequest=new URLRequest("test.swf"); var swfLoader:Loader=new Loader(); swfLoader.load(urlReq); このようにロードする方法は見つかったのですが my_mc = loader.content as MovieClip; などとしても ムービークリップに読み込めません。 いろいろ試したのですが直接ステージに読み込まれて表示されたり,エラーも起こらず表示されなかったりします。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 【AS3.0 変数をPHPにPOSTする方法】

    【AS3.0 変数をPHPにPOSTする方法】 開発環境:WinXP ADOBE CS4 ActionScript3.0 すいません。教えてください。 Flashで得た複数の値を外部ファイルに出力したいと考えています。 例えば、btnA・btnB・btnCという3つのボタンがあり、 ボタンをクリックすると、クリック数がカウンターになり、 その値をPHPファイルにPostしたいと考えています。 現在のソース(btnAのみ) ---------------------------------------------------------------- var req:URLRequest = new URLRequest ("http:++++++.php"); req.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //送信パラメータ variables.num01 = 0; req.data = variables; var loader:URLLoader = new URLLoader (req); var are01=0 var num01=0 a_btn.addEventListener(MouseEvent.CLICK,aClick); function aClick(event:MouseEvent):void{ var num01=are01++ trace(num01) var printdata:URLVariables = new URLVariables(event.target.data); loader.load(req); } -------------------------------------------------------------- num01の数値がトレースはされているのですが、 phpの値に代入されません。 --------------------------------------------------------------- phpソース $comment = $_POST['num01']; print "rData=" . $comment;</body> ---------------------------------------------------------------- 同時に複数の値・仮にnum02・num03も同様にPHPにPOSTしたいと考えているのですが、 その際の方法がわかりません。 恐れ入りますが、ヒントだけでもよいので教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部swf内関数の使い方を教えてください

    actionscript 3でムービークリップ内に読み込んだ外部swf内の関数の使い方を教えてください。 以下仮ソースです var mc:MovieClip = new MovieClip(); var imgLoader:Loader = new Loader(); var path:URLRequest = new URLRequest("materials/key_550.swf"); var childSwf:MovieClip; imgLoader.load(path); imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,compLoader); function compLoader(evt:Event):void{ mc.addChild(imgLoader); addChild(mc); childSwf = mc.imgLoader.content as MovieClip //ここをimgLoader.content as MovieClipとするといけるのですが、mcの子のloaderと指定したいのです。 startGOGO(); } function startGOGO():void{ childSwf.keyContMove(); //子のswf内の関数です。 } よろしくお願い致します。

  • AS3.0でムービークリップ制御

    現在、AS3.0でswfファイルを読み込み、その再生・停止をコントロールするswfを作ろうとしています。 そこで自分なりにプログラム書いてみたのですが、停止ができなくて困っています。 以下ソース package { import flash.display.*; import flash.events.*; import flash.net.URLRequest; public class Test extends Sprite { private var mc:MovieClip = new MovieClip(); private var btn_load:SimpleButton = new SimpleButton(); //loadボタン private var btn_stop:SimpleButton = new SimpleButton(); //stopボタン private var l:Loader = new Loader(); public function Test() { mc.x = 30; mc.y = 30; btn_load.upState = this.drawCircle( 0x228822, 20 ); btn_load.overState = this.drawCircle( 0x225522, 21 ); btn_load.downState = this.drawCircle( 0x553355, 20 ); btn_load.hitTestState = btn_load.upState; btn_load.addEventListener( MouseEvent.CLICK, Load ); btn_stop.upState = this.drawCircle( 0x228822, 20 ); btn_stop.overState = this.drawCircle( 0x225522, 21 ); btn_stop.downState = this.drawCircle( 0x553355, 20 ); btn_stop.hitTestState = btn_stop.upState; btn_stop.x = 50; btn_stop.addEventListener(MouseEvent.CLICK, Stop); addChild(mc); addChild(btn_load); addChild(btn_stop); mc.addChild(l); } private function drawCircle( color:uint, r:Number ):Shape { var circle:Shape = new Shape(); circle.graphics.lineStyle( 1, 0x222222 ); circle.graphics.beginFill( color ); circle.graphics.drawCircle( 0, 0, r ); circle.graphics.endFill(); return circle; } private function Load(e:Event):void{ l.load(new URLRequest("animation.swf")); } private function Stop(e:Event):void{ mc.stop(); } } } なにが原因なのでしょうか・・・ わかる方ご回答お願いします。。

    • ベストアンサー
    • Flash

専門家に質問してみよう