• ベストアンサー

FLASHで、ボタンの押しっぱなしについて

ステージ上に配置したボタンを押すことでムービークリップを動かすことはできるのですが、ボタンを押しっぱなしにしてる間ムービークリップが移動しつづけるようにするにはどうしたら良いのでしょうか? whileなどを使って色々試してみましたがどうもうまく行きませんでした。 ご存知の方がいましたらゼヒ教えてください。 環境はwin版FLASH MXです。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

ムービークリップイベントの enterFrame イベントは、ムービークリップがステージ上に存在している間、常に発生しています。この点を利用して、次のように考えてみてはいかがでしょう。 ムービークリップの移動の許可/不許可を保持する変数(フラグとも呼ばれます)を1つ用意します。ここでは仮に、move_flg という変数にします。 ムービークリップイベントの enterFrame を利用して、常時この変数を監視します。そして、move_flg が true の時だけ移動の処理を行います。 あとは、ボタンが押された時に move_flg を true に、離された時に false にするよう、ボタンにアクションを設定すれば出来上がりです。ボタン外にカーソルがある時にマウスボタンが離された場合も含めて処理をさせたいのなら、release と releaseOutside イベントを併用してください。 とりあえず、ステージ上に、動かすムービークリップのインスタンス clip と、ボタンのインスタンス button の2つがあるとします。 それから、動かすかどうかのフラグ move_flg は、タイムラインの1フレーム目で定義してあるとします。最初は動かさないので、move_flg には初期値として false を入れておきます。 2つに設定するアクションは、大体こんなところでしょうか。 (↓このスクリプトをコピーして使う場合は、各行の行頭に入っている全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)  ・button に設定するアクション    //ボタンが押されている時    on(press)    {     //ムービークリップの移動を許可する     _root.move_flg = true;    }    //ボタンが離された時    on(release , releaseOutside)    {     //ムービークリップの移動を禁止に     _root.move_flg = false;    }  ・clip に設定するアクション    onClipEvent(enterFrame)    {     //移動が許可されている時、移動の処理     if( _root.move_flg )     {      /*以下に移動の処理を書く。ここでは       斜めに移動*/       _x += 5;       _y += 5;     }    } Flash MXからは、ムービークリップでも、ボタンシンボルのように press や release のイベントを検出できるようになりました。ボタンシンボルを使って何か不具合がありましたら、ムービークリップシンボルの onPress や onRelease イベントハンドラを試してみてください。 ただし、イベント発生時に呼ぶ関数を予め定義しておく必要があります。ボタンの on や、従来の onClipEvent とは少し違うので、ご注意を。

mappi_mappi
質問者

お礼

教えていただいた記述で無事成功しました。 フラグを使うところまではわかっていたのですが、onClipEvent(enterFrame)には気づきませんでした。まだonClipEventイベントハンドラ各種の違いがはっきりとわかってないので勉強したいと思います。 ご回答ありがとうございました!

その他の回答 (1)

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.1

イベント駆動の発想をしましょう。 1.目的のムービークリップ フレーム1:stop(); 最終フレーム:gotoAndPlay(2); ステージ上に配置し、インスタンス名をつける(例:mc1) 2.ボタン(タイプはムービークリップ) on(press) { _parent.mc1.play(); } on(release) { _parent.mc1.stop(); } ---------------------------------------- 以上で基本形は完成ですが、まだ不十分です。 マウスダウンでムービー再生中にポインタをボタンの外にずらしてからマウスアップしてみてください。ムービーが停止しないと思います。 解決方法はお分かりでしょうか。簡単な修正で解決するのですが。

mappi_mappi
質問者

お礼

すみません。質問の仕方が悪かったようです。 ムービークリップを動かすというのは_xや_yといったムービークリップそのものを動かすことです。 キーボードのキーで操作するのであればKeyis.Downを用いることでできるのですが、マウスのキーコードは用意されていないので悩んでいるところです。 申し訳ありませんが以上の点の対処法をご存知でしたら再度ご回答いただけると嬉しいです。 ボタンの外にずらしてのマウスアップによる問題の対処法も気になりますね。on(dragout)かon(rollout)、on(releaseoutside)などにmc.stop()を使えば良いのでしょうか?

関連するQ&A

  • FLASH MXでムービークリップをボタンではなくムービークリップ自体で操作できますか?

    いまだにFLASH MXを使っています。 やりたいことはムービークリップを作成し、マウスがそれに触ると停止し、離れると動く、といった感じにしたいのですが、どうにも上手くいきません。 他にボタンを作成しそこにアクションを設定すれば上手く動くのですが ボタンではなく自分自身で操作できないかと思っています。 ボタンのシンボルをムービークリップ(movie)化 それをステージに配置しアクションを設定 アクションイメージ on (rollOver) { movie.stop(); } on (rollOut) { movie.start(); }

  • ボタンにムービー

    Flash初心者です。 MXをMacOS X 10.39環境で使用しています。 ムービークリップを作り、ボタンのアップ、オーバー、ダウンにそれぞれ別のムービークリップを配置し、ムービープレビューで確認したのですが、動きません。 何が問題なのか検討がつかない状態です。 チェックすべき場所や解決方法などご存じありましたらアドバイスをいただきたく思います。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASHでのボタン制御

    FLASHでボタンを作成しました。そのボタンには「オーバー」の部分のみムービークリップが配置されています。そのボタンをクリックした後、マウスのボタンを離すとすぐに「オーバー」のムービーが再生されてしまうのですが、クリック後マウスのボタンをはなし、マウスカーソルがボタンの上にある状態でも「オーバー」のムービーにならないようにするにはどうしたらよいのでしょうか? 具体的には・・・ 1.ボタンをクリックした後「ダウン」のままの状態にする。とか・・・ 2.「ダウン」にもムービークリップを配置し、クリックした後はそのムービーが再生されて完結する。 というようなボタンに変えたいのです。 わかりづらい文章で恐縮ですがよろしくお願い致します。

  • Flash5 「ボタン」シンボルの制御について

    ----- <状況> ------- 今、ステージ上に2つの「ボタン」があります。 一つのボタンを押すと、もう一つのボタンの大きさを150%拡大したい…。 -------------------- 「ボタン」と「ムービークリップ」の場合は、「ムービークリップ」に名前が付けられるので、 「ボタン」にActionScriptを書いて「ムービークリップ」の大きさを変更できるのですが、 これが「ボタン」と「ボタン」の場合だと、どうすればいいのか分かりません。また、「ボタン」を区別するためそれ自身に名前を付けたりできないのでしょうか? この件について、ご存知の方はどうか教えてください! お願いします!

  • Flash リンケージ

    ステージ上に空のムービークリップを配置して、そこにjpg画像を読み込む実験をしています。 loadMovieを使えば、外部のjpg画像を読み込めるのですが、 今やりたいのはflash内に画像を読み込んで、ライブラリ内にあるビットマップ画像(jpg)に対して、識別子を付けてスクリプト処理で表示させるというものです。 1.ステージに空のムービークリップ「mc」(←インスタンス名)を配置しています。 2.ライブラリ内のビットマップ画像には「p1」という識別子を付けています。 「p1」の識別子を使った表示方法が解らなかったので、とりあえず今はビットマップ画像を一旦新しいムービークリップで包んでそのムービークリップの識別子を「c1」として、 ルート上に mc.attachMovie("c1,"mc2",1); というように書いて、表示させています。 が、これではやりたい事と違います。 ライブラリ内のビットマップ画像に付けた識別子「p1」を利用して、 その該当するjpg画像をステージ上に配置(表示)させるにはどうすればよいでしょうか? FlashのバージョンはMXもしくは8 ASは1.0もしくは2.0です。

  • 動くボタンでリンク

    FLASH MXです。 マウスポインタがオーバーすると色が変わるボタンをつくりました。 そのボタンをムービークリップとして、動きをつけました。 それをスクリーン上に配置して、リンクをはったのですが、 するとマウスポインタを置いても色がかわらなくなってしまいました。 どうしてなんでしょうか。おしえてください。 前の質問にあった、リンクで、透明ボタンの方法を試しましたが、うまくいきませんでした。

    • ベストアンサー
    • 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でボタンをつくっているのですが、actionscriptをつ

    Flashでボタンをつくっているのですが、actionscriptをつかってボタンをクリックさせたいのですが、アクションパネルのところに「現在の選択範囲にアクションを割り当てることはできません。」と表示されてしまいます。 参考書に附属されているflaをみたところ、Actionscript1.0、2.0となっているのですが、作成しているのはActionscript3.0で作っています。 ====== on (release) { /*↑ボタンが押されて離されたら*/ _parent.gotoAndPlay("about"); /*↑「about」ラベルへ移動*/ } ====== このようなscriptをいれたいのですが、うまくいきません。 ムービークリップでボタンを作るまではできました。その後、何かが抜けているのかして上記のようなエラーがでます。 flash初心者のため、どういう風に書いて質問させていただいたらよいのかわからないのですが、参考flaと見比べたときに「シンボル定義」のなかにあるムービークリップがひとつたりませんでした。(このムービークリップは「navigation」というものですのでそれがありません。) 質問するにはあまりにも情報が少ないかもわかりませんが、何卒ご教授いただけると大変助かります。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Flashでの座標指定におけるボタン有効化

    よろしくお願いします。 現在、FLASHでゲームを作成中です。 バージョンはFLASH CS4です。 ASは2.0です。 ボタンが配置されており、更にムービークリップ(以下mc)があります。 ボタンは初めクリックできないようにしておきます(マウスに反応しない)。 mcを十字キーで移動させ、ある座標内(10<=x<=50、10<=y<=50)に入ったとき、 初めてボタンをクリックできるようにするためにはどのようにASを記述すればよいでしょうか? ifでmcが座標内に入っていたら、ボタンをenabled=trueにする感じでしょうか? ご回答よろしくお願いします。

    • ベストアンサー
    • Flash
  • flashのボタンは、ムービークリップで作ったほうがよい?!

    flashのボタンは、ムービークリップで作ったほうがよいのでしょうか? バージョンはflashmx2004です。 ムービークリップでボタンを作るよりも、シンボル化したときにボタンとするほうが楽な気がするのですが、デメリットはありますでしょうか?

    • ベストアンサー
    • Flash