• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:onEnterFrameの止め方につきまして)

onEnterFrameの止め方について

このQ&Aのポイント
  • b1、b2、b3、b4、b5というインスタンスを作成し、横方向に均等に並べ、それとは別にnextbuttonというボタンを作成し、そこにマウスを乗せるとb1からb5までがx座標値が増える方向に一斉に流れ、nextbuttonからマウスがアウトすると止まるようにする方法について説明します。
  • _root.stop();と記述することでonEnterFrameの動作を止めることができます。
  • b1のx座標値が徐々に増加し、x:85に達した時点でonEnterFrameの動作を止めるようにするには、_root.b1._xの値が85に達した時に_stop()関数を呼び出すようにする必要があります。

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

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

delete で削除します。 厳密には b1のx座標値がx:85に達した時点ではなく, 若干通り過ぎますが, 基本的には次のようにします。 ------------------------------------- _root.stop(); nextbutton.onRollOver = function() { _root.onEnterFrame = function() { _root.b1._x += 10; _root.b2._x += 10; _root.b3._x += 10; _root.b4._x += 10; _root.b5._x += 10; if (_root.b1._x>=85) { delete _root.onEnterFrame; } }; }; nextbutton.onRollOut = function() { delete _root.onEnterFrame; }; ------------------------------------- きっちり止めたい場合は, delete _root.onEnterFrame; を実行する直前に,各座標を入れて,次にようにします。 if(_root.b1._x>=85){ _root.b1._x = 85; _root.b2._x = ??; _root.b3._x = ??; _root.b4._x = ??; _root.b5._x = ?? delete _root.onEnterFrame; }

hiro8358
質問者

お礼

できました! 本当に有難うございます。助かりました。 実は写真を見せるためのページを作成しておりまして、画面の下の方に小さい写真を20枚弱程度並べておいて、画面に設置したnextbutton、backbuttonにマウスを乗せると小さい写真が右に左に・・ と移動し、クリックすると画面中盤にその大きな写真がでるというものを作っておりました。 おかげさまで思った通りのものができました。 有難うございました。

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

関連するQ&A

  • onEnterFrameで予定の位置で止まってくれない。

    http://www.icnet.ne.jp/~ang74g5c/ ↑このようなものを作ってみました。 フラッシュのサイズは800×600px。 一つの色のパネルの大きさも800×600pxで、様々な色を合わせて3行3列で合計9個のパネルを並べたものをイラストレータで作成してフラッシュに入れ、インスタンス名はcolorpannel(基準点は左上)としました。 右上の番号を押すと想定の位置で止まるようにしたいと思い、フレームに以下の設定をしてみました。 (右上の番号にはそれぞれnum1~num9までのインスタンスネームをつけています。) ------------------------------------- num1.onRelease = function() { _root.onEnterFrame = function() { if (_root.colorpannel._x>=0) { _root.colorpannel._x -= 30; } if (_root.colorpannel._x<=0) { _root.colorpannel._x += 30; } if (_root.colorpannel._y>=0) { _root.colorpannel._y -= 30; } if (_root.colorpannel._y<=0) { _root.colorpannel._y += 30; } }; }; num2.onRelease = function() { _root.onEnterFrame = function() { if (_root.colorpannel._x>=-800) { _root.colorpannel._x -= 30; } if (_root.colorpannel._x<=-800) { _root.colorpannel._x += 30; } if (_root.colorpannel._y>=0) { _root.colorpannel._y -= 30; } if (_root.colorpannel._y<=0) { _root.colorpannel._y += 30; } }; }; num3.onRelease = function() { _root.onEnterFrame = function() { if (_root.colorpannel._x>=-1600) { _root.colorpannel._x -= 30; } if (_root.colorpannel._x<=-1600) { _root.colorpannel._x += 30; } if (_root.colorpannel._y>=0) { _root.colorpannel._y -= 30; } if (_root.colorpannel._y<=0) { _root.colorpannel._y += 30; } }; }; (以下、num9まで座標位置が変わったものだけを記述していますので省略します。) ------------------------------------- URLを見ていただくとわかるように、各色の止まる位置が微妙にズレて隣の色が見えてしまっているのです。 OnEnterFrameなので、座標位置を指定してdeleteで止めれば良いのかな?とは思っているのですが、その書き方もよくわかりません。 どなたか、おわかりにある方がいらっしゃいましたら教えていただけませんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • FlashCS5 ActionScript2.0で3つのボタンを制御し

    FlashCS5 ActionScript2.0で3つのボタンを制御しています。 それぞれインスタンス名はbt1,bt2,bt3です。 動きはマウスオーバーで120%大きくなり、ロールアウトで100%へと戻るものです。 しかし、ロールアウトの動作中に他のボタンに触ると、ロールアウトの動作が中断してしまいます。 なぜでしょうか? //////////////////////////////////////// stop(); sx = 3; var i; //----------- for( i = 1; i < 4; i++){ Nov = "bt" + i; _root[Nov].onRollOver = function(){ Name = this._name; btOverMotion(Name); } _root[Nov].onRollOut = function(){ Name = this._name; btOutMotion(Name); } } //----------- function btOutMotion(eachNo){ No = eachNo; onEnterFrame = function(){ if(_root[No]._xscale < 100){ delete this.onEnterFrame; }else{ _root[No]._xscale -= sx*2; _root[No]._yscale -= sx*2; } } } //----------- function btOverMotion(eachNo){ No = eachNo; onEnterFrame = function(){ if(_root[No]._xscale > 120){ delete this.onEnterFrame; }else{ _root[No]._xscale += sx; _root[No]._yscale += sx; } } }

    • ベストアンサー
    • Flash
  • ActionScript2.0のイベントについて

    親ムービークリップに配置した子ムービークリップのイベントが実行されなくて困っています。 親ムービークリップ自体には下記のイベントを設定しています。親ムービークリップはattachMovieで動的に配置しています。 onRollOver・・・onEnterFrameを設定 onRollOut・・・onEnterFrameを削除 子ムービークリップを配置して子ムービークリックにイベントを設定しました。onEnterFrameをは実行されますが、onReleaseが実行されず困っています。 function Parent() { this.onRollOver = function() { this.onEnterFrame = function(){・・・} } this.onRollOut = function(){ delete this.onEnterFrame; } this["child_mc"].onRelease = function() { trace('a') // 実行されない } this["child_mc"].onEnterFrame = function() { trace('b') // 実行される } } ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ _root.attachMovie("Parent", "parent_mc", _root.getNextHighestDepth(), new Parent()); 子ムービークリップはオーサリングで静的にParentに配置し、プロパティでchild_mcと設定しています。 onReleaseは実行できず、そこで止まっています。 なんでも良いので教えてください。

    • ベストアンサー
    • Flash
  • onRelease文での動作について・・・。

    ムービークリップをボタンにして、その階層の最初のフレームに this.onRollOver = function() { this.onEnterFrame = this.nextFrame; }; onRelease=function(){ var num:Number=0 onEnterFrame=function(){ trace("LOOP num ="+num) num ++ if(num>30){ delete onEnterFrame } } } stop() 最後のフレームに this.onRollOut = function() { this.onEnterFrame = function() { if (this._currentframe > 1) { this.prevFrame(); } }; }; とした場合について質問です。 ボタン上にカーソルがある場合は30までカウントされます。 しかし、クリック直後にカーソルがボタン上から離れるとカウントが停止します。 ボタンから離れてもカウントを続けるにはどうすればよいでしょうか?? ちなみに、このスクリプトは簡単に流れが分かるように作ったものなのでfor文などではなくonEnterFrame~での対処法を教えて下さい。 実際にはonEnterFrame以下はもっと長くなっているので・・・。 どうかお願いしますっ!!! m(_ _)m

    • ベストアンサー
    • Flash
  • 「.txt」に記入した、テキストとリンクURLをFlashに読み込む時に・・・

    こんにちは! Windows XP Flash MX 秀丸 「.txt」から  Flash内のテキストフィールドにテキストを  そのテキストの上に重なっているボタンインスタンスに  URLを指定させたいと考えています。 マウスが乗ったときにアクションの起こるボタンに、 外部からテキストとURAを設定したいということです。 ボタン構成は ボタンインスタンス「A」 ダイナミックテキスト「vtext」 ムービークリップ「B」ActionScript記入 ムービークリップ「over」マウスが乗った時のムービー まとめて「aaa」とシンボル化してあります。 「.txt」には以下のように記入 *** Index Setup *** &index=YAHOO!JAPAN& &url=http://www.yahoo.co.jp& &target=_blank& シーン1タイムライン1フレーム目には _root.aaa.A.onRollOver = function () { if (_root.aaa.overFlag != 1) { with (_root.aaa.over) { play(); } // End of with } // end if _root.aaa.overFlag = 1; _root.aaa.vText._x = -200; }; _root.aaa.A.onRollOut = function () { _root.aaa.overFlag = 0; _root.aaa.vText._x = 0; }; _root.aaa.A.onPress = function () { getURL(_root.aaa.A.url, _root.aaa.A.target); }; 「data」には onClipEvent (load) { if (_root.inText == null) { this.loadVariables("SingleButton_01a.txt"); } else { this.loadVariables(_root.inText); } // end if } この状態でターゲットパスを正確に記入しどの階層でも動くのですが、 シーン1のタイムライン上(どこでも)にstop();とアクションを記入 するとテキストのみが表示され、ボタンのリンクやムービーは止まってしまいます。この解決方法はないのでしょうか? よろしくお願いします。

  • マウスがステージ外に出た事の判断方法

    Fhashを勉強中の者ですが、下記のサイトの様なイメージのFlashを作成したいと思っています。 http://www.scratchbrain.net/cm/ (ステージ内を幾つかのブロックに分割し、マウスオンするとマウスに追随する枠にコメントが表示され、マウスがステージ外に出るとコメントの枠が消えるコンテンツ) mcをボタン化したものを画面内に幾つか配置してインスタンス名を設定し、mc.onRollOver = function() {}でmc上をマウスオンすれば表示枠内の内容を変える事は出来ました。 次にステージの外(上下左右)に出たらサンプルの様に表示枠を小さく縮小するか、アルファを下げて見えなくしたいのですが、そのやり方が分からず悩んでいます。 マウスの座標(_xmouse、_ymouse)による判断だとマウスがステージ外にはみ出すと上手く行かず、ステージと同サイズのmcを作成して大きなボタンにしてmc.onRollOut = function() {}だと、ボタン同士の上下が重なるので作動しません。 何か良いやり方やアイデアがあれば、是非お教え下さい。 (Windows XP、FlashCS3、AS2)

  • 0.5秒 ボタンにマウスをあて続けると外部swfが再生

    お世話になります。 //イベントボタンにマウスオーバーしたときのアクション event1.onRollOver = function(){ screen.loadMovie("a.swf"); event1.onEnterFrame = function(){ event1._y -= 2; if (event1._y<=263) { event1._y = 263; } }; }; //イベントボタンにマウスアウトしたときのアクション event1.onRollOut = function(){ event1.onEnterFrame = function(){ event1._y += 2; if (event1._y>=271) { event1._y = 271; } }; }; 上記のようにアクションスクリプトを記述しています。ボタンが全部で7個あって、各7個のボタンにロールオーバーすると、それぞれ違う外部ファイルを読み込むようにしています。 が、これだけだとちょっと間違えて違うボタンに触れただけで違う外部ファイルの再生が始まり不便です。 理想としては、0.5秒くらいボタンにマウスを当て続けるとムービーが再生されるような形が理想なのですが・・・ setInterval を使うとできそう、というのはわかるのですが、具体的にどうしていいのか分かりません。 ご存知の方いらっしゃいましたらぜひ教えてください!

    • ベストアンサー
    • Flash
  • loadMovieとonEnterFrameについて

    はじめまして FLASH8を使用しています。 ActionScript初心者です。よろしくお願いします。 単体のswfだと機能するのですが、loadMovie後機能しなくなってしまいます。 読み込ませる側のアクションは ▽ボタンシンボルに on (press) { _root.moveMenu_1 = -138; menu_name.text = "キッズメニュー"; menu_text.text = kidsData; } ▽フレームアクション loadVariables("kidsmenu.txt", this); loadVariables("menmenu.txt", this); loadVariables("ladymenu.txt", this); loadVariables("seniormenu.txt", this); moveMenu_1 = -296; this.onEnterFrame = function() { img_y._x += ((0-moveMenu_1)-img_y._x)*0.1; }; MCのインスタンス名は「img_y」です。 他にボタンが3つほどあります。 swf単体だと機能します。 loadMovie後text・外部テキストは読み込むのですが、スクロールしなくなってしまいます。 これを3_1.swfとしました。 読み込む側のアクションは ▽ボタンシンボルに on (press) { _root.moveMenu = 2100; } 他に4つほどボタンがあります。 ▽フレームアクション scroll_flag = 0; moveMenu = 0; this.onEnterFrame = function() { if (scroll_flag == -1) { if (back_img._x<0) { moveMenu -= 20; } else { moveMenu = 0; } } if (scroll_flag == 1) { if (back_img._width+back_img._x>700) { moveMenu += 20; } else { moveMenu = 2800; } } back_img._x += ((0-moveMenu)-back_img._x)*0.1; }; back_img.c_1.loadTarget.loadMovie("1_1.swf"); back_img.c_2.loadTarget.loadMovie("2.swf"); back_img.c_3.loadTarget.loadMovie("3_1.swf"); back_img.c_4.loadTarget.loadMovie("4.swf"); back_img.c_5.loadTarget.loadMovie("5.swf"); スクロールするMCを「back_img」としました。 他に読み込んだものは機能したんですが 3_1だけうまく機能しません。 長々と失礼しました。

    • ベストアンサー
    • Flash
  • onEnterFrameの中止

    お世話になります。 1フレームには下記のようにマウスに追従させています。 function moveCross() { this._x = _root._xmouse; this._y = _root._ymouse; } closs.onEnterFrame = moveCross; 1フレームのメニューから2フレームに進んだ時に、この追従をさせないようにしたいのですが できません。delete onEnterFrameを使えばいいとわかったのですが。 すみませんが、教えてください。

    • ベストアンサー
    • Flash
  • Flash ActionScript(アクションスクリプト)の挙動

    Flash ActionScript(アクションスクリプト)の挙動が 思うようにならず困っています。 ●使用ツール  Macromedia Flash MX ●やりたいこと  ムービークリップ【mc_4_0】【mc_4_1】【mc_4_2】が配置されている。  各ムービークリップにマウスが乗っているかを毎フレーム判定し、  乗っていればx/yscaleを1.5倍に、乗っていなければ1倍に戻す。 ●現在の処理  ○メインタイムラインの処理 ---------------------------- //最初のシーンを設定 _global.scene = SceneMcSelect //毎フレーム、シーン関数を呼ぶ onEnterFrame = function() { //現在シーンを呼ぶ eval( _global.scene )(); } ----------------------------  ○SceneMcSelect関数の定義 ---------------------------- function SceneMcSelect(){ for( count = 0 ; count < 3 ; count++ ){ //マウスが乗ったか? eval("mc_4_" + count).onRollOver = function(){ trace(count); eval("mc_4_" + count)._xscale = 150; eval("mc_4_" + count)._yscale = 150; } //マウスが離れたか? eval("mc_4_" + count).onRollOut = function(){ trace(count); eval("mc_4_" + count)._xscale = 100; eval("mc_4_" + count)._yscale = 100; } } } ---------------------------- ●現在の挙動  onRollOverやonRollOutの判定は正しく行われているようですが、  x/yscaleの変更処理が行われません。  traceでcountの値を確認すると、なぜか【3】になっています。 難しい処理をしているわけではないと思うのですが、 思うとおりの挙動にならず困っています。 何か間違いや見落とし等ございましたら、ご指摘お願いいたします。

    • ベストアンサー
    • Flash