• ベストアンサー

時間を判定するリンクボタン

すみません。どなたか詳しい方お願いします。 Flashをやっているのですが ボタンの領域内に入ったときに時間判定をさせまして マウスポインタが3秒間領域内にあった場合→シーン移動 マウスポインタが2秒以内のうちに領域の外に出た場合→そのまま移動なし このような振り分けをしたいと思っています。 アクションスクリプトでやるのであろうということはわかるのですが プログラムがさっぱりわからなくて 何をどうしたらよいのか困っています。 詳しい方ご回答お願いいたします。 当方の所持していますバージョンはMXです。

  • Flash
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

> マウスポインタが3秒間領域内にあった場合→シーン移動 > マウスポインタが2秒以内のうちに領域の外に出た場合→そのまま移動なし 空白の1秒がありますね。 例えば 2.5秒 で出た場合は何か違う動作をするのでしょうか? そうだとすると setInterval で簡単に場合分けすることはできませんね。 ですから, ボタンシンボルのインスタンスに書くスクリプトは, こんな感じになると思います↓。 --------------------------------------------- on (rollOver) { // mytime1 に SWF が表示されてからの時間を代入 mytime1 = getTimer(); // 毎フレーム実行 this.onEnterFrame = function() { //mytime1 に rollOver してからの時間を算出 mytime2 = getTimer()-mytime1; // 3000ミリ秒経てば if (mytime2>=3000) { // シーン 2 に移動して gotoAndPlay("シーン 2", 1); // この onEnterFrame を削除 delete this.onEnterFrame; } }; } // on (rollOut, dragOut) { // もし rollOver 時間が 2秒より長かった場合 if (mytime2>2000) { // シーン 3 に移動する gotoAndPlay("シーン 3", 1); } // この onEnterFrame を削除 delete this.onEnterFrame; } --------------------------------------------- ※Flash MX 以降で作成可能なスクリプトです。 ※ステージ上に簡易的に「mytime2」という "変数名" の   ダイナミックテキストフィールドを作成して実験されると,   経過時間がわかりやすいと思います。

hitmin
質問者

お礼

とても急いでいましたので 大変助かりました。 >空白の1秒がありますね。 >例えば 2.5秒 で出た場合は何か違う動作をするのでしょうか? こちらは私のミスです。 3秒以内ならというところを2秒以内と書き間違えていました。 しかし、ご回答で細かい説明も書き加えていただいたおかげで 数値を変更するなどして求めているものにすることができました。 条件分岐はif文だから~という感じで 必死にon (rollOver)の中にif文を書いて試していましたが そもそもの考え方が間違っていたことが ご回答から理解することができました。 時間も余裕もなかったところに すばやいご回答、とても助かりました。 ありがとうございました。

関連するQ&A

  • マウスポインタの移動について

    ■環境  Flash MX 2004 こんにちわ。Action Scriptにて、マウスポインタの位置を制御したいのですが、いろいろ調べてもわかりません。 たとえば、あるシーンのボタンをクリックし、次のシーンへと移るのですが、その際に、マウスポインタの位置は違う位置に移動したいのですが、その方法がわかりません。 わかる方がいらっしゃいましたら、ご指導いただけないでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • ボタンの重ね順

    こんにちは。当方Flash MX Professional 2004を使っているのですが、今ボタンを使ってメニューを作成しています。 そこで質問なのですが、ボタン同士がデザイン上いくつか重なっているところがあるのですが、その重ね順をマウスポインタを上に置くか、クリックした場合、クリックした(またはマウスポインタを置いたもの)が一番上に来るようにしたいのです。 何かいい方法はありませんでしょうか?action scriptで、press(on){}, press(rollOver){}というのを発見したのですが、ボタンの重ね順を一番上にするスクリプトが分かりません。 お願いしますm(_ _)m

  • 動くボタンでリンク

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

    • ベストアンサー
    • Flash
  • Flashでブラウザ判定したい

    Flashでブラウザ判定したい Action Script を使って、ブラウザ判定を行い、ブラウザに応じたフレームに移動するFlashを作りたいです。 具体的には、IEとOperaと携帯ブラウザとその他ブラウザ(FireFox,Chromeなど)の4種類くらいで分けたいと考えています。 まずUAを取得し、それに応じてIFとGotoandStopでいけそうなのですが・・ ウェブで少し調べると、Java Scriptなどと組み合わせると出来そうでしたが、ASだけでは無理なのでしょうか? もし可能なら方法(AS)をご教授下さい。 環境: Windows Vista Flash Pro 8

    • ベストアンサー
    • Flash
  • モノクロからカラーへ

    windows2000 FLASH MX 一つの画像がモノクロからカラーへと徐々に変化していくシーンを作りたいのですがFlashで作成で作成出来るのでしたら方法を教えて下さい。 アクションスクリプトを使用せずに作成したいのですが、どうしてもアクションスクリプトを使うのであれば記述を教えて下さい。

    • ベストアンサー
    • Flash
  • ヒット領域について

    FLASH MX 初心者です。 ボタンを作成しています。 ボタンの文字部分にヒット領域を指定しても、文字部分を除いたヒット領域しかマウスポインタが反応しません。 どのようにすれば文字部分も含めてヒット領域がマウスポインタに反応するのでしょうか。 環境 OS:WindowsXP アプリケーション:FLASHI MX 7.2 よろしくお願いします。

    • ベストアンサー
    • Flash
  • flashでボタンからリンクで他のファイルを開く方法

    flash professional MX2004でflashコンテンツを作成しています。現在コンテンツ内にボタンを設置、そこをクリックすると他のファイルが開くようにしたいのですが、どの方法で行うのでしょうか?Action scriptで行えばいいのでしょうか? Dreamweaverではリンク欄にURLを入れるような操作でできるのですが? お願い致します。

  • Flash MXの skipボタンを教えてください。

    Flash MXの skipボタンのやり方やアクションスクリプトを教えてください。 たとえばskipボタンを押すと100フレーム目までジャンプするやり方を教えてください。自分でボタンまでは作ったのですが・・・。 できれば丁寧に御願い致しますm(_ _)m 

  • アクションフレームについて

    Flash MX Professional 2004を使っています。 アクションフレームがスクリプトを記入する場所だと思うのですが、小さすぎてとても不便に思っています。 Flash MX Professional 2004にはスクリプトを記入するエディタ等は無いんでしょうか。 Flash MX Professional 2004内臓のエディタがない場合皆さんはどのような環境でスクリプトを書いていますか。 初歩的なことかもしれませんが困っています。 教えてください。

    • ベストアンサー
    • Flash
  • 「最短距離」の接触判定

    1.マウスポインタの左ドラッグ中には、通った軌跡をサンプリングし、Flagを1にして座標(x,y)を「Point」という変数に記録(x[Point],y[Point],Flag[Point]=1)していくとともに、隣り合う座標点を結んで線を描く。 2.マウスポインタの右ドラッグ中に、指定した範囲周辺(例えば50*50[mm]以内)にサンプリングされた座標点が入ったら「接触」と判定する。 3.この際、複数の座標が範囲内に含まれている場合は、マウスポインタの中心から最短距離にある座標点を「接触点」とする。 4.接触点に対してアクションを起こす(例えば、移動させる、線の色や太さを変える、など)。 このようなプログラムにおいて、「最短距離にある座標点」の検出をどのように記述すればいいでしょうか。 接触判定、最短距離の接触点の検出、描線の開始・終了点の検出、アクション、という順番に記述しようと思うのですが、 【接触判定】 マウスポインタの位置と各Pointとの距離の絶対値をfor文で調べ、指定範囲内に収まっているものがあれば接触と判定。 【最短距離の接触点の検出】 ? 【描線の開始・終了点の検出】 最短距離の接触点から描画開始・終了方向にそれぞれシーケンシャルサーチして、Flagが1から0になるところの点をそれぞれ開始点・終了点とする。 【アクション】 開始点~終了点までの各Pointにアクションを起こす。 このような流れです。具体的にどのように最短距離の検出を書けばいいか、ご指導いただけませんでしょうか。使用ソフトはC++Builder4です。

専門家に質問してみよう