- ベストアンサー
AS3でattachMovie()とは?質問内容を要約すると
- AS3でattachMovie()とはどのような機能なのかわからない質問です。attachMovie()はAS2.0で使用されていた機能であり、MC(ムービークリップ)をコードで生成して表示するためのものです。
- 質問者はブロック崩しのプログラム練習をしており、ブロックをステージに配置する際にライブラリでリンケージして書き出し、attachMovie()を使ってMCを生成したのかもしれません。
- その後の問題は、ボールがブロックに当たったときにブロックを消すためのコードを記述する際に、生成したすべてのブロックに適応させる方法がわからないというものです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- AS3.0でのattachMovieが分かりません
AS2.0では リンケージで"mc"という名前で登録。 for (var i:Number=0; i<10; i++) { var _mc:MovieClip = attachMovie("mc_"+i, "mc_"+i, getNextHighestDepth()); _mc._x = 100*i; } というような感じで10個のmcを配置できますよね。 これをAS3.0でやりたいのですが、 リンケージで"mc"という名前で登録。 他のサイトを参考に、 for (var i:int=0; i<10; i++) { addChild(new (getDefinitionByName("mc"+i))); } とするが、"変数 mc0 は定義されていません"とコンパイルエラー。。 ひとつ配置するには addChild(new mc) でいけますが forを使って上記AS2.0版と同様の事をやるにはどう定義すればよいのでしょうか。。
- ベストアンサー
- Flash
- AS3.0でのattachMovie
私はFlash 初心者で、ActionScript3.0とflashの勉強中で、表題のところで詰まってしまいお尋ねしたいことがあります。 for (i = 0; i < s_num; i++) { _root.attachMovie("sks" + i,"sks" + i,i); sks[i] = eval("sks" + i); sks[i]._x = 320 - 125 * (s_num - i); sks[i]._y = 50; } AS3.0ではeval、attachMovieという関数は存在しておりません。 AS3.0の場合、どのように記述したらよいのかわからないので、どなたか教えていただくことはできますでしょうか。
- 締切済み
- Flash
- AS2 attachMovie 外部画像対応に
AS2 attachMovie 外部画像対応にしたい <やりたいこと> AS2 attachMovieを利用して、複数画像を読み込むサンプルがあるのですが、 これを外部画像読込対応に変更したいです。 <知りたいこと> AS2 attachMovieで、外部画像を読み込む簡単なサンプルコードを 作成していただけないでしょうか? あるいは、下記内容を、どう修正すればよいでしょうか? <現状> ・画像は「image_1」「image_2」「image_3」って感じで、ムービークリップにして、ライブラリへ入れてます。 ・ステージ上に画像は、配置せず、変わりに、ムービークリップのリンケージ識別子を、それぞれ「image_1」「image_2」「image_3」としています、また、「ASに書き出し」「最初のフレームに書き出し」にチェックを入れてます <現状のコード一部> next_bottun.onPress = function() { if (image_maisu>next_i) {//イメージ枚数より選択イメージが少なかったら next_i += 1;//選択イメージを加算 var mc_name = "image_"+next_i;//識別子の名前を変更して change_mc(mc_name, syoki_sokudo);//切り替わり関数に送る } }; function change_mc(mc_name, syoki_sokudo) { i++;//IDを加算して var new_name = "image_"+i;//インスタンス名を設定 var syoki = {_alpha:0, i:i, sokudo:syoki_sokudo};//初期値を設定 _root.main.attachMovie(mc_name, new_name, i, syoki);//mainの中に生成する
- 締切済み
- Flash
- ASファイルからのstage
flashcs3 actionscript3.0で作成しています。 asファイル "Test.as" package { import flash.display.DisplayObjectContainer; import flash.display.Sprite; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.*; public class Test extends Sprite { public function Test() { init(); } private function init() { for (var i:uint = 0; i<10; i++) { var sp:Sprite = new Sprite(); sp.graphics.beginFill(0x00CCFF); sp.graphics.drawRect(i*20,50,20,20); sp.graphics.endFill(); stage.addChild(sp); } } } } flash var hoge2 = new Test(); と書いてflash上のstage上にSpriteをaddChildしたいのですがstageをnullと解釈してしまいます。 この場合flash上のstageを参照するにはどうすれば良いのでしょうか?
- ベストアンサー
- Flash
- AS3.0 ループを利用したムービークリップ生成
お世話になります。 ソフトはFlashCS3を使用しています。Actionscript3.0で書き出そうと思っています。Actionscript3.0初心者ですがよろしくお願いします。 ライブラリーに Mc01,Mc02,Mc03,Mc04とクラスを指定したムービークリップを準備した状態でステージにムービークリップを生成しようと考えています。その際、for文を使って短く書きたいと思っています。 for (var i=0; i>4; i++){ var "Mc0"+i:"Mc0"+i = new "Mc0"+i(); "Mc0"+i.x = 10*i; "Mc0"+i.y = 10*i; this.addChild("Mc0"+1); } 上記のように書くと「1086:シンタックスエラー:identifierがMcの前に必要です。」とエラーが出てうまく作動しません。 参考までに現在は以下のようにすべて書き出しています。 //ムービクリップ01 var Mc01:Mc01 = new Mc01(); Mc01.x = 0; Mc01.y = 0; this.addChild(Mc01); //ムービクリップ02 var Mc02:Mc02 = new Mc02(); Mc02.x = 10; Mc02.y = 10; this.addChild(Mc02); …… 以下省略 特にfor文にこだわっててはいません。ループで生成できればOKです。 どなたかわかる方よろしくお願いします。
- ベストアンサー
- Flash
- (AS3)「var mc:MovieClip = new MC?();」 の?の部分を変数にできないか
タイトルの通りです。 今ライブラリには100個のムービークリップがあって、それぞれMC1~MC100までのリンケージ名(クラス名)でActionScriptに書き出しているものとします。 これらを動的に「var mc:MovieClip = new MC?();」というふうにしたいのですが、うまくいきません。 一応下のように自分なりに考えてみたのですがやっぱりダメでした。 var i:int = 3; var str:String = "MC"+i; var mc:MovieClip = new str(); stage.addChild(mc);
- ベストアンサー
- Flash
- as3でのmc再生について
as3でご質問です。 現在as3で、ほとんどをmain.asというasファイルに書いて配置など行っております。 モーションなどがあるmcに関しては、ムビークリップを作って、ライブラリに読み込んであるのをリンケージして呼び出しています。 そこで質問です。 var bn01:MovieClip = new fr_bn01(); var bn02:MovieClip = new fr_bn02(); var bn03:MovieClip = new fr_bn03(); addChild(bn01); addChild(bn02); addChild(bn03); //fr_bn01、fr_bn02はflash上で作成した何フレームかあるmcです。 例えば、bn01の最後のフレームまでいったら、bn02が出現して再生、bn02が最後のフレームまでいったらbn03が出現、再生。 とする場合、どのような書き方をすればよろしいでしょうか。 お手数をおかけしますが、ご教授いただけたらと思います。 よろしくお願いします。 環境:CS3、as3.0
- ベストアンサー
- Flash
- ランダムに mcを連続attachMovieさせるアニメ
MX2004初心者です。 ライブラリにsakura_mc(10フレーム)があります。 さくらの花びらが手前に飛んでくるこまアニメです。 //乱数生成関数 function rndInit(maxNum){ var a = math.random(); var b = Math.ceil( a*maxNum ); return b; } MC = "sakura" SW = Stage.width; SH = Stage.height; this.onEnterFrame = function(){ if( rndInit(10) == 1 ){ count ++; newName = MC + count; attachMovie( "sakura_mc", newName, 1 ); //表示位置の設定 this[ newName ]._x = Math.random()*SW; this[ newName ]._y = Math.random()*SH; } } この方法だと、sakura_mcがステージ上ランダムな位置に連続で再生 してくれます。 ただ、二つ以上のsakura_mcを同時にステージに再生はしてくれません。 sakura_mcを同時にいっぱい再生させたい場合はどうすればよいでしょうか? sakura2_mcをつくって同じ命令を追加してもダメでした。 よろしくお願いします。
- ベストアンサー
- Flash
- AS3:ステージリサイズするとムービークリップをすべて削除して何秒か後
AS3:ステージリサイズするとムービークリップをすべて削除して何秒か後にまた、ムービークリップを設置。 ステージ横一杯にムービークリップ(以下MC)を縦2列で並べてステージをリサイズするたび、 MCをすべて削除してまた横一杯にMCを2列で並べるというものを作成中なのですが、リサイズの仕方によってはMCが何個か残ってしまいMCを再配置できないという現象がおきます。 以下のようにコーディングしているのですがどこが問題なのでしょう? 環境:AS3、Flash CS4、MC:W:80xH:100 Set(); stage.align=StageAlign.TOP_LEFT; stage.scaleMode=StageScaleMode.NO_SCALE; stage.addEventListener(Event.RESIZE,AddMC); function AddMC(eventObject:Event):void { var delate:uint=mc.numChildren; for (var k:uint=0; k<delate; k++) { mc.removeChildAt(k); } if (delate<=0) { var SetTimer:Timer=new Timer(500,1); SetTimer.addEventListener(TimerEvent.TIMER,ReAdd); SetTimer.start(); function ReAdd(eventObject:TimerEvent):void { Set(); } } } // function Set():void { var yoko:uint=Math.ceil(stage.stageWidth/80); for (var i:uint=0; i<yoko; i++) { for (var j:uint=0; j<2; j++) { var BX:MovieClip=new box(); mc.addChild(BX); BX.x=40+80*i; BX.y=50+100*j; } } } よろしくお願いします。
- ベストアンサー
- Flash
- attachMovieでのインスタンス名
以下のようなスクリプトを書いているのですが、 traceの値がすべてmenu_mcとなってしまいます。 インスタンス名をmenu1_mc,menu2_mc,menu3_mc,・・・としたいのですが、どうすればいいのでしょうか? i = 10; for(y = 0; y < i; y++) { trace(y); m = y+1; obj = _root.attachMovie("menu", "menu"+m, y); obj._x = 30; obj._y = 70*y; trace(this._name); } 環境はFlashCS3、ActionScript2.0です。 よろしくお願いします。
- ベストアンサー
- Flash
お礼
詳しく答えていただきありがとうございます! >eval は ActionScript 2.0 時代にはすでに普通は使われていませんでしたよ。。。 そうだったんですね・・・調べているときに良く出てきたので、普通に使われていたのかと思いました。 インスタンス名にこだわって、それで動かそうとしていたのがいけなかったのですね。 今回だと、複製しながら上手い具合に一つの変数にまとめることが重要だったのですね。 すごく勉強になりました! まだ始めたばかりでわからないことだらけなので、また質問するかもしれませんがそのときはよろしくお願いします。 ありがとうございました。