• 締切済み

ActionScriptのLoaderクラス

BlurFiltanの回答

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

スクリプト書き直すとは だいたいこのように↓するとういうことですよね? //------------------------------------------ //Loaderインスタンスを参照する変数を用意 var thumbLoader_obj:Loader; //Loaderインスタンスを1つだけ作成 thumLoader_obj=new Loader(); for(var i:uint=0;i<8;i=i+1){ var thumbBtn:MovieClip=this["btn0"+(i+1)+"_mc"]; var thumbUrl:URLRequest=new URLRequest(imgThumb_arr[i]); //1つのLoaderインスタンスに対して //順に imgThumb_arr[0]~imgThumb_arr[7] をロード thumbLoader_obj.load(thumbUrl); thumbLoader_obj.x=3; thumbLoader_obj.y=3; thumbBtn.addChild(thumbLoader_obj); } //------------------------------------------ お碗を1つ用意して まずは ワカメのみそ汁を入れ (それを捨てて)豆腐のみそ汁を入れ (それを捨てて)油揚げのみそ汁を入れ (それを捨てて)あさりのみそ汁を入れ (それを捨てて)納豆のみそ汁を入れ (それを捨てて)玉葱のみそ汁を入れ (それを捨てて)麩のみそ汁を入れ (それを捨てて)ジャガイモのみそ汁を入れました。 さて,この状態でお碗に入っているみそ汁は何のみそ汁でしょう? このみそ汁と同じことですよ。 器を1つしか用意せずに 次から次へと取っかえ引っかえ違うものを入れて行けば 最後に入れたものしか残りません。 上の文章には「(それを捨てて)」と書いていています。 実際にFlashでも同じLoaderに次から次へと違う物をロードすれば 前にロードしていたものはアンロードされます。 しかし「(それを捨ずに)」に変更しても結局同じことです。 1つの器の中で様々なものがごちゃまぜになっていくか, 上に上に重なって一番上のものしか見えなくなるだけです。 どちらにしても1杯のみそ汁しかできません。     上に書いたスクリプトの1行目&2行目ですが ここにポイントがあるので注意してください。 次のように1行にまとめても同じことです。 //Loaderインスタンスを1つだけ作成して //そのインスタンスの参照を変数に代入 var thumbLoader_obj:Loader=new Loader(); 2行にしても1行にしても同じことですが, どちらにしてもとにかく thumbLoader_obj というのは「変数」であって Loaderインスタンス自体ではありません。 Loaderインスタンスを参照する「変数」です。 最初にご質問で書かれているスクリプトと同じような 内容を喩え話的に書き直してみます。 //---------------------------------- //選出する校長を仮称「ボス」と呼ぶことにする var ボス:校長; for(var i:uint=0;i<8;i=i+1){   ボス = 選出した新しい校長();   そのボスを 学校0~7 に順次配属; } //---------------------------------- 最初のスクリプトはこんな感じですよ。 「ボス」は校長を名指しするための仮称です。 例えば 田中先生,高橋先生,佐藤先生,鈴木先生,…のように 次から次へと違う新しい校長を選んでは 次々に違う学校に配属させているのです。 ですから 結局 学校0~7 には違う校長が配属されることになります。 次に私が上に書いたスクリプトも同じような 内容を喩え話的に書き直してみます。 //---------------------------------- //校長を1人選出して仮称「ボス」と呼ぶことにする var ボス:校長 = 選出した新しい校長(); for(var i:uint=0;i<8;i=i+1){   そのボスを 学校0~7 に順次配属; } //---------------------------------- 「ボス」という仮称を与えられた校長は1人しか選出されていません。 田中先生なら田中先生1人のみです。 その「ボス」を 学校0~7 に次から次へと配置替えするのですから 結局「ボス」は 学校7 のみに1人だけ配属されることになってしまいます。     とにかく大切なことは var ○○ の ○○ は変数だということです。 変数には 文字列 や 数値 を直接入れることもありますし ムービークリップ や Loader などの参照を入れることもあります。 何かを参照する変数ですから(何かを名指しで呼ぶための名称ですから), 基本的に Flash に存在するものは何でも入れることができます。 クラスでも関数でも何でも代入できます。 //---関数を変数に代入する例---------------- //関数を作成してその参照を変数function_objに代入 var function_obj:Function = function():void{ trace("関数が実行されました"); } //function_objが参照する関数を実行 function_obj(); //-----------------------------------------   「F-site [AS3] MovieClipインスタンスとインスタンス名」 http://f-site.org/articles/2008/04/19014939.html

206sws16
質問者

お礼

BlurFiltan様 ご回答ありがとうございます。 例え話を織り交ぜていただき、丁寧な解説をありがとうございます。 また、個人的な事情でお礼を申し上げるのが遅くなり、申し訳ございませんでした。 その後私もこの件について色々と考えてみました。 どうやら、解説いただいている内容からすると、私は変数とインスタンスの理解が少し違っているような気がしました。以前、Adobeが提供しているflash_as3_programing.pdfの第3章のデータ型という節(11ページ)に以下の様な解説がありました。 ----------------------------------------------------------- http://help.adobe.com/ja_JP/ActionScript/3.0_ProgrammingAS3/flash_as3_programming.pdf データ型と同じ意味で多く使用される用語に、クラスとオブジェクトがあります。 クラスは単にデータ型の定義です。データ型のすべてのオブジェクトのテンプレートと考えることができ、「Example データ型のすべての変数には A、B および Cの 3 つの特性があります」と宣言するようなものです。一方、オブジェクトは、クラスの実際のインスタンスです。データ型が MovieClip である変数は、MovieClip オブジェクトとして記述できます。したがって、次のように同じ内容を様々な表現で表すことができます。 • 変数 myVariable のデータ型は Number • 変数 myVariable は Number インスタンス • 変数 myVariable は Number オブジェクト • 変数 myVariable は Number クラスのインスタンス ----------------------------------------------------------- この部分を読んで、変数名を冠して宣言された実際の変数は、クラスから生成された(インスタンス名を持つ)インスタンスと同じだと思っていました。 さて、ご解説いただいた内容の一部を以下に抜粋させていただきます *********************************************************** //---------------------------------- //校長を1人選出して仮称「ボス」と呼ぶことにする var ボス:校長 = 選出した新しい校長(); for(var i:uint=0;i<8;i=i+1){   そのボスを 学校0~7 に順次配属; } //---------------------------------- *********************************************************** この辺りのことについてご質問です。 以下は配列arrに文字列「みなさんこんにちは1回目」~「みなさんこんにちは9回目」を順に格納するプログラムなのです。 var hello:String=new String(); var arr:Array=new Array() for(var i:int=1;i<10;i=i+1){ hello="みなさんこんにちは"+i+"回目"; arr.push(hello); } このプログラムも、ループ処理の前にStringクラスからインスタンス(変数?)helloを生成して、ループ処理の中でそのまま使用しているというサンプルという意味で提示させていただいています。 これだと、Stringクラスから生成するインスタンス(変数?)helloはループ処理の中でStringクラスからループ処理ごとインスタンスを生成しなくとも、上手く値を更新して順に配列の中に文字列を期待通りに格納可能です。 これと、私が質問している(もしくは例で説明いただいている)内容とのプログラム上の違いが私には今一つ明確に理解できていません。 ただ、この件について、私なりに考えた内容を以下に述べさせていただきます。(これは、anyhelp様のご回答に対する補足からの抜粋です) ----------------------------------------------------------- 私なりに考えたのですが、最後の一度しか機能しないのは?というよりは、希望通りの処理がなされないのは以下のことが理由ではないかと考えています。 FLASH上で画像をActionScriptでコントロールする為にインスタンス化するということは、実際の手順としては、 (1)ライブラリにシンボルが登録(もしくは、シンボルをクラス化する) (2)そのシンボル(クラス)からインスタンスを作成 (3)作成されたインスタンスにインスタンス名を付けて、ActionScriptでコントロール可となる。 ということであると解釈しています。 ここで、画像のインスタンスに設定可能なプロパティは座標や拡大縮小であり、色の変更など、元のシンボルの画像とは本質的に異なる設定はできないことになっています。 そこで、もともとの私が書いているプログラムの6行目の部分で、thumbLoader_objに画像が読み込まれた時点で、これはそのサムネイル画像のインスタンス名になっているわけですから、5行目をコメントアウトして、その代わりに、5行目の内容を1行目と置き換えたのでは、ループ処理して、thumbloader_objに再度、本質的に画像として異なる次の順番のサムネイル画像を読み込もうとしていることになってしまいます。 したがって、既にインスタンス化されている画像のインスタンス名に新たな画像を読み込む行為はプログラムとして正しい文法ではなく、ループ処理ごとに新たなサムネイル画像を読み込んでくることを想定していますので、thumbLoader_objというLoaderクラスのインスタンスを毎回、生成して、読み込んできたサムネイル画像をインスタンス化する必要があるのではないかという考えに至りました。 ----------------------------------------------------------- BlurFiltan様が仰っていることと、上記抜粋の私の理解はやはり、異なっているのでしょうか?かなり身勝手な質問で申し訳ございませんが、この件をしっかりと理解したいと考えていますのでご回答をお願いいたします。 また、ご説明から抜粋した上記プログラムの解説箇所である、 *********************************************************** 「ボス」という仮称を与えられた校長は1人しか選出されていません。 田中先生なら田中先生1人のみです。 その「ボス」を 学校0~7 に次から次へと配置替えするのですから 結局「ボス」は 学校7 のみに1人だけ配属されることになってしまいます。 *********************************************************** の部分についてですが、私には、学校0に田中先生が配属されて、あとはダメという具合だとまだ分かるのですが、どうして最後の学校7にだけ上手く配属されてしまうのかが、ご説明ではうまく理解できませんでした(そういう仕様だということでしょうか?)。 申し訳ございませんが、今一度、ご助力を賜りたく存じます。

関連するQ&A

  • swfを読み込む毎にランダムに画像を読み込むには、

    下記のように決まった画像を読み込むスクリプトを現在使用しています。 フラッシュを開く毎に20枚程度の画像の中からランダムに7枚選んで表示させたいのですが、ここから修整するにはどのように考えたら良いのでしょうか? 現在はまったく固定の画像を読み込んでいるだけなのでいいのですが、、。 // 写真のURLを保存する配列 var photoArr:Array // 写真を自動的に変更するタイマー var imageTimer:Timer; // 大きな画像を読み込むローダー var bigImageLoader:Loader; // 現在表示されている画像の番号 var imageNum:Number = 0; //-------------------------------- // 初期化の処理 //-------------------------------- // 配列を設定する photoArr = new Array(); photoArr[0] = "b00.jpg"; photoArr[1] = "b01.jpg"; photoArr[2] = "b02.jpg"; photoArr[3] = "b03.jpg"; photoArr[4] = "b04.jpg"; photoArr[5] = "b05.jpg"; photoArr[6] = "b06.jpg"; // タイマーを起動 startTimer(); // サムネイルを表示 setThumbnail(); // 大きな画像を読み込む loadImage(); //-------------------------------- // 関数 //-------------------------------- // サムネイルを並べる function setThumbnail() { for (var i=0; i<photoArr.length; i++) { // MovieClipを並べる var mc:Thumbnail = new Thumbnail(); mc.y = i * 74; mc.mouseChildren = false; mc.addEventListener(MouseEvent.CLICK, onThumbnailClick); mc.buttonMode = true; mc.num = i; thumbnailTarget.addChild(mc); // サムネイル画像をロードする var loader:Loader = new Loader(); var url = "gallery_img/"+photoArr[i]; var urlRequest = new URLRequest(url); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onThumbnailLoad); loader.load(urlRequest); loader.x = 4; loader.y = 17; mc.addChild(loader); } } // タイマーをスタートする function startTimer() { imageTimer = new Timer(8000, 0); imageTimer.start(); imageTimer.addEventListener(TimerEvent.TIMER, onTimerCalled); } // 大きな画像を読み込む function loadImage() { // サムネイルの背景色を変える for (var i=0; i<photoArr.length; i++) { var mc = thumbnailTarget.getChildAt(i+1); if (i == imageNum) { mc.gotoAndStop(2); mc.scaleX = 1.1; mc.scaleY = 1.1; } else { mc.gotoAndStop(1); mc.scaleX = 1; mc.scaleY = 1; } } // 表示されている画像を消す if (bigImageLoader != null) { mainTarget.removeChild(bigImageLoader); } // 新しい画像を読み込む var url = "gallery_img/"+photoArr[imageNum]; var req = new URLRequest(url); bigImageLoader = new Loader(); bigImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad); bigImageLoader.load(req); mainTarget.addChild(bigImageLoader); } //-------------------------------- // イベント //-------------------------------- // サムネイルが押されたら実行される function onThumbnailClick(eventObj) { imageNum = eventObj.target.num; loadImage(); imageTimer.stop(); imageTimer.start(); } // サムネイルがロードされたら実行される function onThumbnailLoad(eventObj) { var mc = eventObj.target.loader; mc.width = 80; mc.height = 55; } // タイマーが呼ばれるたびに実行される function onTimerCalled(eventObj) { imageNum++; if (imageNum >= photoArr.length) { imageNum = 0; } // 大きな画像を読み込む loadImage(); } // 大きな画像が読み込まれたら実行される function onImageLoad(eventObj) { // bigImageLoader.alpha = 0; stage.addEventListener(Event.ENTER_FRAME, onFadeIn); } // function onFadeIn(eventObj) { // フェードインをつける bigImageLoader.alpha += 0.05; if (bigImageLoader.alpha >= 1) { removeEventListener(Event.ENTER_FRAME, onFadeIn); } }

    • ベストアンサー
    • Flash
  • actionscript 3.0 の外部リンク

    初めて質問させていただきます。 Flash CS3 のactionscript3.0にて、サイト内リンクのボタンを作成したのですが、 フラッシュを読み込んだ時点で、インスタンスthe URL4がポップアップで開いてきてしまいます。 そのような記述をしていないのでどうしたら良いか分からず… 何かお知恵をお貸しいただけると幸いです。 よろしくお願い致します。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ↓実際に書いたacitonscriptです。URLはダミーです。 //theURL1という変数に代入し、URLRequestのインスタンスを生成 var theURL1:URLRequest = new URLRequest("http://www.111/A.html"); var theURL2:URLRequest = new URLRequest("http://www.222/B.html"); var theURL3:URLRequest = new URLRequest("http://www.333/C.html"); var theURL4:URLRequest = new URLRequest("http://www.444/D.html"); navigateToURL(theURL1); navigateToURL(theURL2); navigateToURL(theURL3); navigateToURL(theURL4); // イベントリスナーの登録 A_btn.addEventListener(MouseEvent.CLICK,gotoURL1); B_btn.addEventListener(MouseEvent.CLICK,gotoURL2); C_btn.addEventListener(MouseEvent.CLICK,gotoURL3); D_btn.addEventListener(MouseEvent.CLICK,gotoURL4); // URL1へジャンプする function gotoURL1(event:MouseEvent):void { var theURL1:URLRequest = new URLRequest("http://www.111/A.html"); navigateToURL(theURL1,"_self"); } // URL2へジャンプする function gotoURL2(event:MouseEvent):void { var theURL2:URLRequest = new URLRequest("http://www.222/B.html"); navigateToURL(theURL2,"_self"); } // URL3へジャンプする function gotoURL3(event:MouseEvent):void { var theURL3:URLRequest = new URLRequest("http://www.333/C.html"); navigateToURL(theURL3,"_self"); } // URL4へジャンプする function gotoURL4(event:MouseEvent):void { var theURL4:URLRequest = new URLRequest("http://www.444/D.html"); navigateToURL(theURL4,"_self"); }

  • 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.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
  • FLASHCS3のActionScript3.0で外部画像の読み取り後

    FLASHCS3のActionScript3.0で外部画像の読み取り後に、ムービー内に画像を入れると表示されません。 複数画像をfor文で読みながら、読み終えたらEvent.COMPLETEで関知して、loadComp関数内で addChildして画像を表示させたいですが、その後マウスドラッグで動かせるようにするため mc1という空のムービーを作ってその中に、画像を内包したいのですがそうすると画像が表示されないです。 ※mc1.addChild(event.target.loader);というように 普通にmc1を除いて、 addChild(event.target.loader); とすると表示されます。 ムービーに内包すると画像が表示されないのはなぜか知りたいです。 よろしくお願いします。 photoLoad(); //画像読み込み関数 function photoLoad() { urlList[0] = "photo1.jpg"; urlList[1] = "photo2.jpg"; urlList[2] = "photo3.jpg"; urlList[3] = "photo4.jpg"; urlList[4] = "photo5.jpg"; for (var i = 0; i < urlList.length; i++) { var x:int; loaderList[i] = new Loader(); loaderList[i].load(new URLRequest(urlList[i])); loaderList[i].x = x; x = x+100; //画像のサイズによって変更 loaderList[i].contentLoaderInfo.addEventListener(Event.COMPLETE,loadComp); } } //画像読み込み関数ここまで**************************************** function loadComp(event:Event):void{ var mc1:MovieClip = new MovieClip(); //■■■問題の箇所・addChildの前にmc1をつけると表示されない■■■ addChild(event.target.loader); //移動可能に mc1.addEventListener(MouseEvent.MOUSE_DOWN, startObj0); mc1.addEventListener(MouseEvent.MOUSE_UP, stopObj0); function startObj0(event:MouseEvent):void { mc1.startDrag(); } function stopObj0(event:MouseEvent):void { mc1.topDrag(); } }

    • ベストアンサー
    • Flash
  • 【AS3.0】画像をクリックして外部複数ファイルの読み出しと削除を行う方法

    AS3.0初心者です。 恐れ入りますが、教えていただきたいことがあります。 【開発環境:WinXP FlashCS4】 『 ・a_btnボタンをクリックすると、外部1フォルダの中の複数イメージファイル(jpg)が同時に表示される。 ・b_btnボタンをクリックすると、外部2フォルダの中の複数イメージファイルが同時に表示される 但し、他のフォルダの画像が出ている時は、前表示されていた画像は削除される 』 というものを制作しております。 a_btnをクリックすると、外部フォルダが同時に表示されるところまでは作れたのですが、b_btnをクリックした時に、a_btnをクリックした時に出てきた画像を削除して、新たに画像を表示させるというところでつまづいております。 現在のスクリプト↓ ------------------------------------------------------------ var loader:Loader=new Loader(); a_btn.addEventListener(MouseEvent.CLICK,xClick); //配列の設定 var song01:Array = ["1/e01.jpg","1/e02.jpg","1/e03.jpg","1/e04.jpg"]; var loaderList:Array = new Array(); //iの初期値 var i:int = 0; //spaceの設定 var space:Number =50; function xClick(evt:MouseEvent):void{ for(var i:int=0; i < song01.length;i++){ loaderList[i] = new Loader(); var urlReq:URLRequest= new URLRequest(song01[i]); addChild(loaderList[i]); loaderList[i].load(new URLRequest(song01[i])); loaderList[i].y = space * i+ 250; trace(song01[i]); } } ---------------------------------------------------------- 最終的にはXMLからファイルを読み出して、読み出したファイルをクリックすると音データが再生されるものを作成しようと思っております。 書籍などを見ても、うまく応用できず…恐れ入りますがヒントだけでもいただけると大変助かります。よろしくお願いできませんでしょうか?

    • ベストアンサー
    • Flash
  • ActionScriptでサウンドをループさせる

    ActionScriptでサウンドをループ再生させたいです。 var url : URLRequest = new URLRequest("xxx.mp3"); var sound_obj : Sound = new Sound(url); sound_obj.play(0,1); とすることで目的のサウンドを1回だけ再生させることができるのは分かるのですが、 無限にループ再生させたい場合は sound_obj.play(0,1); の第二引数にどの値を入れればいいのでしょうか? よろしくお願いします。

  • ActionScriptで配列をクリアする方法を教えてください。

    ActionScriptで、オブジェクトを格納した配列をクリアする正しい方法を教えてください。 具体的には、 ・new Array() で配列を生成する。 ・new Object() で生成したオブジェクトを配列に格納する。 ・配列の中身を処理したあと、配列を一度クリアする。 ・配列に別のオブジェクトを格納する。 ような処理をしたいのですが、メモリリークを起こさずに配列をクリアするにはどうしたらいいでしょうか? 例えば、イメージはこんな感じです。(意味のないコードですが) // 配列の生成 var arr = new Array(); // 配列にオブジェクトを格納 for (var i = 0; i < 5; i++) { var obj = new Object(); obj.num = i; } // 配列のクリア arr.length = 0; // クリアした配列に別のオブジェクトを格納 for (var i = 0; i < 5; i++) { var obj = new Object(); obj.num = i * 2; } 上記のコードで、arr.length = 0; で配列をクリアしていますが、これで配列に格納されたオブジェクトが確保したメモリがすべて解放されるでしょうか? あるいは、配列の内容がなくなるまで pop() 等で取り出す等の処理をする必要があるでしょうか? 以上よろしくお願いします。

    • ベストアンサー
    • Flash
  • AS3の配列の中にアクセス

    FlashCS3でas3を使っています。 配列についての質問なのですが、 下記のコードがあるとします。 var btn_arr:Array=[aboutA_mc,aboutB_mc,aboutC_mc,aboutD_mc]; 配列に格納したボタン全てに、同じマウスアクションをつけたい場合など、 for (var i:int = 0; i<btn_arr.length; i++) { btn_arr[i].addEventListener(MouseEvent.Roll_Over,abcdOver); } function abcdOver(e:MouseEvent):void { btn_arr[i].textColor = #FFFFF; とかで、出来るかなと思ったのですが、上手くいきません。 何か良い方法があれば、ご教授よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 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