• ベストアンサー

当たり判定後の処理 Flash

FlashMXを使っていますが あるインスタント同士が重なったとき、あるフレームラベルに移動させたい 少々調べたところ、これに該当するものがなかったので質問させていただきます。 まず、インスタントAとBが重なるとき フレームラベル「あいうえお」に移動させるような感じです。 フレームラベルの移動の仕方はボタンでの移動しかわかりませんでした; よろしくお願いします。

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

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

_root にインスタンス名 「A_mc」 と 「B_mc」 というムービークリップがあったとします。 また, フレームラベル「あいうえお」 は _root にあるフレームラベルだとします。 「A_mc」と「B_mc」が存在する _root のフレームに, 普通に次のように書けばできると思います↓。 ----------------------------------------------------- // とりあえず _root をストップ _root.stop(); // 1フレーム進む時間毎に随時実行する関数を A_mc に定義 _root.A_mc.onEnterFrame = function() { // もし この A_mc が B_mc と当たったら if (this.hitTest(_root.B_mc)) { // _root を フレームラベルあいうえお に進めて再生 _root.gotoAndPlay("あいうえお"); // この1フレーム進む時間毎に随時実行する関数を削除 delete _root.A_mc.onEnterFrame; } }; ----------------------------------------------------- 1フレーム進む時間毎に随時実行する関数は 特に A_mc に定義する必要はなく, B_mc に定義しても,_root に定義しても,他に定義してもかまいません。

sikkoku
質問者

お礼

回答ありがとうございます。 初心者質問ですいませんが 現在のフレームラベルがstage001playからstage001cに移動し あたるインスタントがhiyoとgoal001だとすると stage001play stop(); // 1フレーム進む時間毎に随時実行する関数を A_mc に定義 stage001play.hiyo.onEnterFrame = function() { // もし この A_mc が B_mc と当たったら if (this.hitTest(_root.goal001)) { // _root を フレームラベルあいうえお に進めて再生 stage001play.gotoAndPlay("stage001c"); // この1フレーム進む時間毎に随時実行する関数を削除 delete stage001play.hiyo.onEnterFrame; } }; でいいはずですよね? なぜできないんでしょうか。 そもそもフレームラベルが移動したいフレームラベルの外にあるからでしょうか その場合はどう書けばよろしいのでしょうか?

sikkoku
質問者

補足

すいません 自己解決しました。 本当にありがとうございましたッ!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Flash判定アクションスクリプトの記述を教えてください。

    仕事の都合でFlash(Versionは8)を扱わなければいけなくなり只今勉強中兼HP製作中です。 行き詰まっているので教えてください。 現在、シーン1のタイムライン1フレーム目にいます。 ステージ上には、 ムービークリップが4つ(名前 m_A , m_B , m_C m_D)配置されています。 ボタンが5つ(名前 b_A , b_B , b_C , b_D , b_Z)配置されています。 ボタンb_Aには on (release) { with (_root.m_A) { play(); } } と記されていて、ボタンを押すとm_Aは再生されて10フレーム目でストップします。 ボタン B~D も同様にボタンを押すとムービークリップB~Dもそれぞれ再生されて10フレーム目でストップします。 ムービークリップ m_A~Dのフレーム10の中には、さらにボタン b_Xがあり、 それを押すとさらに再生されて20フレーム目までいったところで、gotoAndPlayで1フレーム目に戻りストップします。 シーン1のタイムライン1フレーム目に配置されている、ボタンb_Zを押すと、 ムービークリップ m_A~Dのタイムライン1フレーム目にいるものはそのままで、 そして、10フレーム目でストップしていたものは、 再生されて20フレーム目までいったところで、gotoAndPlayで1フレーム目に戻りストップになったところで、 (m_A~Dが全てタイムライン1フレーム目に行ったところで、) シーン1のタイムライン1フレーム目から再生されて、 タイムライン10フレーム目でストップといった命令を書きたいのですが、 どうやって指定してやればよいでしょうか? 多分、if文等を使用するんでしょうが、さっぱりわかりません。 詳しく教えていただければ、幸いでございます。

  • 当たり判定の処理がわかりません。

    CとDXライブラリでSTGを作っているのですが、あたり判定がわかりません。前、斜め右上、斜め右下の3方向に飛ぶ弾の処理を行いたいのですが、どうすればいいのでしょうか? 画面に出力することはできたのですが、ななめに飛ぶ弾だけ判定できずに困っています。 ―――――――――ソースの一部――――――――――― //拡散する弾 void JitamaMove2(){ //弾の発射 int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if( (key & PAD_INPUT_A) && (trigger == 0) ) { for( int i = 0; i < 3; i++ ){ if (jitama[i].life == 0){ jitama[i].life = 1; jitama[i].x = jikidata.x+24; jitama[i].y = jikidata.y+8; jitama[i].y1 = jikidata.y+8; jitama[i].y2 = jikidata.y+8; float dy = jikidata.y; float d = sqrt(dy*dy); jitama[i].yobi = dy/d*idouryou[4]*10; break; } } trigger = 20; } if(trigger>0) trigger = trigger - 1; //弾の移動 for(int i=0; i<3; i=i+1){ if(jitama[i].life > 0){ jitama[i].x = jitama[i].x + idouryou[10]; DrawGraph(jitama[i].x, jitama[i].y,*(jitama[i].ghandle), TRUE); float idouy = (float)jitama[i].yobi / 10; jitama[i].y2 = jitama[i].y2 - idouy; DrawGraph(jitama[i].x, jitama[i].y2 - 10, *(jitama[i].ghandle), TRUE); //斜め下に対する弾の描写 jitama[i].y1 = jitama[i].y1 + idouy; DrawGraph(jitama[i].x, jitama[i].y1 + 10, *(jitama[i].ghandle), TRUE); //斜め上に対する弾の描写 //画面外に出たときの処理 if(jitama[i].x>640) jitama[i].life = 0; } } } /*当たり判定を計算する関数*/ int IsAtari(CharaData *a, CharaData *b){ int retval = 0; int ax1 = a->x + (a->image_w - a->bounds_w)/2; int ay1 = a->y + (a->image_h - a->bounds_h)/2; int ax2 = a->x + (a->image_w + a->bounds_w)/2; int ay2 = a->y + (a->image_h + a->bounds_h)/2; int bx1 = b->x + (b->image_w - b->bounds_w)/2; int by1 = b->y + (b->image_h - b->bounds_h)/2; int bx2 = b->x + (b->image_w + b->bounds_w)/2; int by2 = b->y + (b->image_h + b->bounds_h)/2; if( (ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2) ){ switch (a->amode){ case A_NORMAL: //キャラ消滅 a->life = 0; break; case A_HARD: //耐久力-1 a->life = a->life -1; break; } switch (b->amode){ case A_NORMAL: //キャラ消滅 b->life = 0; break; case A_HARD: //耐久力-1 b->life = b->life -1; if(b->life > 0) SetHanten(b->x, b->y, b->image_w, b->image_h); break; } if(b->life == 0) SetBakuen(b->x, b->y); retval = 1; } return(retval); } //当たり判定の処理 int AtariHantei(){ for(int i=0; i<50; i=i+1){ if(tekidata[i].life > 0 && tekidata[i].amode != A_GHOST){//A_GHOS・・・判定なし //自機と敵の判定 if(IsAtari(&jikidata, &tekidata[i])==1) return(1); //弾と敵の判定 for(int j=0; j<3; j=j+1){ if(jitama[j].life > 0 && jitama[j].amode != A_GHOST){ IsAtari(&jitama[j], &tekidata[i]); } } } } for( int i = 0; i < 50; i++ ){ if(tekitama[i].life > 0){ if(IsAtari(&jikidata, &tekitama[i]) == 1) return(1); } } return(0); }

  • Flash、ボタンが動かない!?

    Flashでコンテンツ制作中です。 ボタンが思うとおりに動きません。 まず、シーン1上に、レイヤー10枚400フレームほどでアニメーションを作っています。 まずは、あるボタンをクリックすると、他のフレームに移動するように作っています(移動はすべてフレームラベルをつけて移動しています)。 移動先はアニメーションなのでシンボルでアニメーションクリップ化しています。 そのアニメーションクリップはいくつかのボタンの集合体です。ボタンをクリックするとまた別のフレームに飛ばしたいのですが、うまく出来ません。 ボタン自体が動いていないわけではありませんでした。 on (release) {getURL("http://www.~~/");}にするとちゃんとページを表示します。 on (release) {gotoAndPlay("main");}とすると移動しません。 on (release) {gotoAndPlay("シーン 1", "main");} でもダメでした。 ラベルのスペル間違えではないとした場合、他に何かダメな理由が考えられることはありますか? よろしくお願いします。

  • FLASHでボタンごとに違うフレームに移動する場合

    こんにちわ。 FLASHにて4つのそれぞれのボタンを作成し、そのボタンをクリックするとそれぞれ違うフレームに移動するにはどうすればいいのでしょうか? 例 Aボタン→フレーム10 Bボタン→フレーム20 Cボタン→フレーム30 Dボタン→フレーム40

    • ベストアンサー
    • Flash
  • Flashでロールオーバー中は・・・

    教えてください、Flash初心者です。FlashMX2004を使用しています。 1つのFlashファイルの中に、A,B,C,D,Eの5つのムービークリップがあります。メインのタイムライン上にはその5つのムービークリップを置いています。Aムービークリップの最後のフレームには「_root.gotoAndPlay("B");」というスクリプトがあり、BムービークリップにはCへ、CにはDへ・・・というように、何のアクションも行わなければ、AからEへ順次ムービーが進んでいく、というものです。また、それぞれのムービークリップには、それぞれ他のムービークリップへ自由にジャンプできるようにボタンも設置しています。Aムービークリップに置いてあるCボタンにロールオーバーすると、Cムービークリップの再生が始まる、という具合です。 で、ここで質問なんですが・・・今の状態であれば、例えばボタンでA ムービークリップからCムービークリップへジャンプすると、Cムービークリップへ行くのですが、Cの再生が終わると、自動的にDムービークリップへ移動します。(もちろん、そうなるようにしてるのですが・・・)ただ、ボタンで別のムービークリップへ移動した時だけは、そのムービークリップの再生後もそこでstopさせておきたいのです。 矛盾してるようですが、whileとかifとかを使えばできるのでしょうか??

  • FLASHでドラッグしたり…

    MacOS9.1でFlashMXを使っています。 今、フレーム1においてドラッグできるMCがあるのですが、1にあるボタンを押してフレーム2に移った時にそのMCのドラッグをさせなくするようにしたいのです。 どのようなスクリプトを書けば良いでしょうか? さっぱり分からないので、ヒントでも良いのでお願いします。

  • ボタンで別swfの任意のフレームに移動したい

    いつもお世話になっています。 WinXPでFlash MX2004を使用しています。 ボタンクリックで別swfの任意のフレーム(ラベル)に移動したいと考えているのですが、可能でしょうか? 具体的にいうと、 01.swf上にボタンA/B/Cを設置。 リンク先の02.swfにフレームラベル「A」「B」「C」があって、01.swfのボタンをクリックすると、02.swfのそれぞれのフレームに移動。 ずいぶん以前にそういった内容の記事をWeb上で見たように思ったのですが、「Flash」「ラベル」「任意」などの単語で検索しても見つけられません。 お心当たりの方がいらしたらどうかご指導ください。

    • ベストアンサー
    • Flash
  • ボタンの上にマウスが乗るとムービが動くようにしたい(FlashMX2004)

    FlashMX2004でこのようなことをしたいのですが ボタンとムービーにどのような設定をすればよいのでしょうか? ステージ上に重ならないように2つのボタン(A,B)と1つのムービー(C)が 配置されています。1つ目のボタン(A)の上にマウスが乗ると、ムービー (C)の2フレーム目から6フレーム目まで動きます。(B)の上にマウスが乗ると 12フレーム目から16フレーム目まで動きます。 ボタンの数が多いのでなるべくfunction関数を使いたいのですが、 使い方が分かりません。よろしくお願いします。

  • ロールオーバーするとラベルにジャンプし、ロールアウトするまでストップ

    ボタンAとボタンBの2つがありまして、 ボタンAにロールオーバーすると、指定したラベルにジャンプし、ボタンAの位置にボタンBがきます。 オーバー後少し進み、ロールアウトするまでストップしたいのですが、どうすれば良いのでしょうか? ボタンAには ──────────────────── on (rollOver) { gotoAndPlay("ボタンBの所のラベル"); } ──────────────────── と書いてあり、ロールオーバー時にきちんとラベルにジャンプしてくれます。 ボタンBには、 『 buttonB 』と名前を付け ──────────────────── on (release) { getURL("http://www.URL"); } ──────────────────── と記載してあり、別ページに飛ばしております。 該当のラベルまでジャンプした後、10フレームくらい進んだフレームにActionScriptをかけておりまして、 ──────────────────── stop(); clearInterval(stopID); var mov_stop = 4000; stopID = setInterval(function () { play(); clearInterval(stopID); }, mov_stop); } ──────────────────── となっており、ここのフレームでロールアウトするまでストップさせたいのですが、どうすればいいのか分からず困っております。 分かり難い文章で申し訳ないのですが、どなたか詳しい方ご掲示お願い致します。

    • ベストアンサー
    • Flash
  • ドラッグしたときの当たり判定

    ParaFlaを使ってFlashを制作しています aというスプライトをドラッグし bというスプライトにぶつかったらラベルCに飛ぶ というものを作りたいのですがうまくいきません aに記述しているアクションスクリプト on (press) { this.startDrag (true); } - on (release,releaseOutside) { this.stopDrag (); } - onClipEvent (enterFrame) { if(this.hitTest(_root.b) == true) { this.gotoAndPlay("c"); } } - onClipEvent (mouseMove) { updateAfterEvent(mouse); } バージョンはSWF8です ドラッグはできるのですがbとぶつかっても 何も起こりません bには何も記述していません どこを変更すればよいかわかる方 よろしくお願いします

    • ベストアンサー
    • Flash

専門家に質問してみよう