• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:attachMovieで同じ深度に新しいmcを生成)

as2.0でattachMovieで新しいmcを生成する方法とは?

BlurFiltanの回答

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

#1です。 > 進んだり戻ったり、最初と最後で違う表示にしたりするには、 > どういった方法があるのでしょうか・・ 何というか...ですね, 最初からなぜ同じ深度に同じムービークリップを出すのか,その意味を私は全くわかってないのですよ。 つまり根本的に何をされているのかわかっていないのです。 ですから 「普通はご質問のようなこと(私が回答したようなこと)はしない。」 としか言えませんね。。。 また _root.slidePos の意味もわかっていませんから 何をどうすれば良いと言うことも書けませんし。 3種類のボタン(クリックするムービークリップ)を出す必要があるのであれば, 普通は最初から3つとも出しておきます。 出したり引っ込めたりしません。 そして最初から3種類のボタンに動作定義をしておきます。 そうしておいた上で そのボタン(クリックするムービークリップ)の _visible プロパティを切り替えます。 例えば 「Amc」「Bmc」「Cmc」という3つのボタンが要るのであれば 最初から3つともステージ上に出しておいて Amc.onRelease = function(){…云々…}; Bmc.onRelease = function(){…云々…}; Cmc.onRelease = function(){…云々…}; としておいた上で 最初は「Amc」と「Cmc」が不要である場合は Amc._visible = false; Cmc._visible = false; として「Amc」と「Cmc」を非表示にしておきます。 また _visible が false である間はボタン機能(マウスに反応すること)が消えていますからクリック動作も働きません。 それで Bmc.onRelease によって 何某かのカウンタをカウントアップするなどして 例えば カウンタが 3 以上であれば Amc._visible = true; にするとかします。 もっとも一般的にはそうするというだけで, 別に _visible の true や false を切り替えなくても良いです。 例えば 「Amc」や「Bmc」や「Cmc」内の フレーム1 を空白キーフレームだけにしておいて Amc.gotoAndStop(1); で 「Amc」を非表示しにて Amc.gotoAndPlay(2); などで表示させたり動かしても良いです。 Amc._alpha = 0; だけでの非表示はダメです。 この場合見た目は非表示ですが透明になるだけでボタン機能は働いてしまします。 上で書いたイメージの雰囲気はこんな感じです↓。 FLASH道場「方法切替ボタン」 http://www2.netwave.or.jp/~light/houkou_kirikae_btn.html

noname#199100
質問者

お礼

BlurFiltanさん  説明が不十分にもかかわらず、 丁寧に回答して下さって、ほんとうにありがとうございます。 最初から、目的に合う方法を選べていなかったんですね。 すみません・・ 仮として背景mcにたくさんボタンを配置してonClipEventでスライドさせる仕掛けを書いていて、 それを残してボタンだけ別の方法で位置を固定しようとしたため、いつのまにか滅茶苦茶になっていました。 すべてのmcを予め配置して_visibleで表示/非表示にさせる方法をやってみます。 ほんとうに助かりました。 BlurFiltanさんの解説はとても分かりやすいので、他の方への回答なども見させて頂いて勉強しようと思います。 ありがとうございます。

関連するQ&A

  • duplicateMovieClipで生成したmcの深度

    こんにちは。 Mac OS X/バージョン10.6.2 ActionSpript2,0 ステージ上にmcがあって、その後ろを duplicateMovieClipで空の背景を生成して移動させて 絶えず雲が動いているフラッシュを作りたいのですが・・・ 移動は上手くいったのですが、深度が上手く行かず 背景がmcの全面に来てしまいます。 よろしければご指導の程、お願いします。 背景=haikei ********************** var speed = 10; _root.haikei.duplicateMovieClip("haikei2",-1);    ここで深度を設定しているんですよね?↑ _root.haikei2._x -= _root.haikei._width; this.onEnterFrame = function() { _root.haikei._x += speed; _root.haikei2._x += speed; if (_root.haikei._x>_root.haikei._width) { _root.haikei._x = _root.haikei2._x-_root.haikei._width; } if (_root.haikei2._x>_root.haikei2._width) { _root.haikei2._x = _root.haikei._x-_root.haikei2._width; } }; ***************** まだまだ未熟者で、duplicateMovieClip,depth等で検索などし、 試したのですが上手く行かず・・・理解できず・・・でした。 よろしくお願いします!

    • ベストアンサー
    • Flash
  • attachMovieで表示した複数のMCが一瞬ずつしか表示されません

    attachMovieでMCを複数表示しているのですが、 ランダムに表示したMCが一瞬ずつしか表示されません。 やりたいことは、aaaというMCが横位置と大きさがランダムで表示され、 下にまっすぐ落ちるという動きです。 こちらの記事を参考に作成しました。 http://oshiete1.goo.ne.jp/qa2500105.html -------------------------------------- // 深度の初期値を設定 var dep = 0; // 大きくなる限度を設定 var mag = 80; _root.dep++; _root.attachMovie("aaa", "myMC"+_root.dep, _root.dep); //座標を指定 _root["myMC"+_root.dep]._x = Math.random()*Stage.width; //下に落ちていく _root["myMC"+_root.dep]._y += 10; // 大きさを指定 var my_scale = Math.random()*_root.mag; _root["myMC"+_root.dep]._xscale = my_scale; _root["myMC"+_root.dep]._yscale = my_scale; -------------------------------------- ランダムに表示はできるのですが、すばやく消えて、すぐに次のMCが 表示されてしまいます。 同じ深度に表示されているように見えますが、 _root.dep++; で 深度は変わっているはずなんですが…。 ちなみに stop(); を入れたらひとつだけ表示されましたが 下に落ちていきませんでした…。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • MCの重なり順

    今、ボタンをクリックするごとにattachMovieでステージ内にMC(ボールのアニメーション)を配置するというものを作っています。 ステージ内に設置したカラーバー(スライダー?)からsetRGBでそれぞれのMCに色をつけています。 そこで、それを応用して背景も色を変えられればいいなぁと思い、背景部分をMCにして背景ボタンを作り、 色を選択して背景ボタンを押すと、背景の色が変わるようにしました。 これで背景の色を自由に変えることができるようにはなったのですが、 クリックして出現させたボールMCの上に背景が重なってボールが見えなくなってしまいます。 きっとこれは深度に関係しているんだろうとは思いましたが、背景もattachMovieで複製させているため、どうしていいかわかりません。 もしくは、背景をMCにしないで色を変える方法があればいいのかとも思うのですが…。 環境はXP、FlashMXです。 どなたか分かる方、解答よろしくお願いします!!

    • ベストアンサー
    • Flash
  • すべてのMCを1フレーム目へ

    ステージ上にMCのインスタンスが100個あるとします。 ボタンのクリックで全部のMCを1フレーム目へ移動させたいと思っています。 _root.EVENT_btn.onRelease = function() { _root.A_mc.gotoAndStop(1); _root.B_mc.gotoAndStop(1); _root.C_mc.gotoAndStop(1); _root.D_mc.gotoAndStop(1); : : } とひとつずつ書くしかないのでしょうか? ほかに効率のよい書き方はありますか? (注)すべてのインスタンスの親は同一オブジェクトではありません。

    • ベストアンサー
    • Flash
  • actionscript2.0でMCの切り替えなど

    Flash初心者で勉強中の身なのですがどうか質問させてください。 根本的に間違っていたりできないことをやろうとしていたら申し訳ないです。。 その際にはこう改変した方がいいとのご指示をご教示頂きたいです。よろしくお願いいたします。 attachMovieを使ってライブラリ内のMCをステージに呼び出し、そのMCを押す度にそのMCを切り替えたいと考えています。 ライブラリにはa1,a2,,,a5、b1,b2,,,,b5,c1,d1,e1…という識別子をつけたMCを用意しています。 a-eの横幅は80×80です。 20ずつ間を空けて○1のMCを横一列に配置しました。 _root.attachMovie("a1", "a1",1, {_x: 100, _y: 100}); _root.attachMovie("b1", "b1",1, {_x: 200, _y: 100}); _root.attachMovie("c1", "c1",1, {_x: 300, _y: 100}); _root.attachMovie("d1", "d1",1, {_x: 400, _y: 100}); _root.attachMovie("e1", "e1",1, {_x: 500, _y: 100}); このMCを押すと、MCが数字の大きいものに切り替わる(b1を押すとb2のMCに…で5まで)ようにしたいので、 ひとつひとつを下記のscriptで記述しました。 _root.attachMovie("b1", "b1",1, {_x: 200, _y: 100}); b1.onPress=function(){ b1.removeMovieClip(); _root.attachMovie("b2", "b2",1, {_x: 200, _y: 100}); b2.onPress=function(){ b2.removeMovieClip(); _root.attachMovie("b3", "b3",1, {_x: 200, _y: 100}); b3.onPress=function(){ b3.removeMovieClip(); _root.attachMovie("b4", "b4",1, {_x: 200, _y: 100}); b4.onPress=function(){ b4.removeMovieClip(); _root.attachMovie("b5", "b5",1, {_x: 200, _y: 100});}}}} これをa-e同じことを繰り返しています。 ここからが問題なのですが、 ここで例えば a2,b5,c1,d3,e1 という風に適当に押されてMCが切り替わり、整列させるボタンが押された時、 その数字を参照して 縦に20pxずつ空けながら b5 (空行/4があった場合の行) d3 a2 c1(20pxの空白)e1 と並べ替えたいと思っています。 つまり、a-eが現在どの数字(○1,○2..)なのかを調べ、その数字の若い方から順に縦に配置させたいと考えています。 また、上のc1,e1のように1の数字のMCが2つ以上あった場合は、同じ行に20pxずつ空けて横に配置していきたいのです。 その調べた数字の順に縦と横に並べ替える(新たにステージ上に配置し直す)というルール付けをどういうscriptを書けば上手く行くかが自分ではどうにも分からず、ここから進めない状態です。。 誰がどんな回数押したとしてもそれに準じた整列をして欲しいのですが、そのやり方があるようでしたらどうかご教示頂きたいです。 また、上記の私の書き方では難しいようでしたらそこから改変したものをお教え願いたいです。 分からないことばかりで申し訳ないのですが、何卒よろしくお願いいたします。

    • ベストアンサー
    • 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
  • MC間でMCをやり取りできますか?

    質問は初めてですがよろしくお願いします。 深度入れ替えの関係で(簡略化のため)、MCを似たような深度ずつに親MCにまとめる構造で作成してきました。 しかし、このやり方では、当初予定していた深度の移動はできますが、予定外の深度の移動が、不可能になりました。 やりたいこと _root.a.mc のような構造の中のmcというムービークリップを、 _root.b.mc の階層に移動したいのです。mcの持つ変数等も一緒に移動できるのが好ましいです。 不可能であれば、 attachMovie()、removeMovieClip()あたりを使って負荷のかかりそうなやり方で我慢しようとは思っています。 ParaFla!使用・SWF8:FLASH8相当の設定で製作中

    • ベストアンサー
    • 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の中に生成する

  • attachMovieで生成したインスタンスを消す方法

    1.現在A.B.C・・・・という名前の多数のボタンがあります 2.それぞれをクリックすると、A1.B1.C1・・・・とそれぞれのインスタンスがZ_mcというムービークリップ内に生成されます。その時にボタンに記述したスクリプト on (press) { Z_mc.attachMovie( "識別子", "A1", 1); } 3.このままですとA.B.C・・・・とボタンをクリックしていくとインスタンスがA1.B1.C1・・・・と同じ場所に生成されるため、重なってしまいます。 どのようにボタンにスクリプトを記載すれば、前に生成されたインスタンスを削除して、新しいインスタンスを生成できるのでしょうか?よろしくお願いします。

    • ベストアンサー
    • Flash
  • attachMovieで生成したインスタンスへの文字代入

    FlashMX(AS1.0)を使用しています。 ダイナミックテキストを子にしたムービークリップのインスタンスをattachMovieで配置したのですが、ダイナミックテキストに文字列を代入しても文字のみが表示されません。 試しに、duplicateMovieClipでコピーした場合はダイナミックテキスト内の文字は表示されています。 スクリプトは以下のように組んでいます。 (略) 1:cnt++; 2:samp_mc = "tag"+cnt; 3:_root.attachMovie("sym_ln",samp_mc,cnt);//sym_ln...ダイナミックテキストを含んだシンボルのリンケージ 4:samp_mc.dymtxt = "123";//dymtxt...ダイナミックテキストの変数名 インスタンスを配置してもdymtxtに表示されません。が、 3:base_mc.duplicateMovieClip(samp_mc,cnt);//base_mc...ステージに配置したmcのインスタンス名 とすると表示されます。 attachMovieを使用してインスタンスを配置するようにしたいのですが、文字が表示されないのはどこに原因があるのでしょうか?

    • ベストアンサー
    • Flash