• 締切済み

マウスホイールでタイムライン制御

マウスホイールを上下に動かす事でタイムラインを 1フレームからトータルフレームまで行き来する (マウスホイールを手前に回すと、タイムラインが動きだし 逆に回すと逆再生する) flashを作りたいのですが、x軸y軸をプラス、 マイナスする方法しかわかりません。どなたかマウス ホイールアクションonMouseWheelでタイムライン上を 行き来させる方法がわかる方いらっしゃいますでしょうか?

みんなの回答

noname#35109
noname#35109
回答No.2

とりあえず参考URL 「マウスホイールを回してアクションしたい(FlashMX2004)」 http://hakuhin.hp.infoseek.co.jp/main/as/mouse.html#MOUSE_04 #1の方の回答から引用 > マウスホイールで1フレーム目(ASを書いたフレーム)に行ってしまうと、 > リスナーが2重、3重に登録されてしまうので そうかーー,なるほど! 目から鱗の回答ありがとうございます。 このご質問で作ったもので検証のため遊んでいると, どんどん onMouseWheel の実行の数が多くなって, 何でなんだろう??? と,それが疑問でここに回答できませんでした。 言われてみるとそうですね。 原因がわかると簡単に対処できます。 一応対処法入りの私が用意していた回答↓。 //////////////////////////////////////////////////////////////////// // とりあえず _root をストップ this.stop(); // // マウスクラスのリスナーに登録したオブジェクトを削除(重複登録防止) Mouse.removeListener(mouseListener); // // _root に マウスホイールを監視するオブジェクトの作成 var mouseListener:Object = new Object(); // // マウスホイールが回転したときの関数を定義 mouseListener.onMouseWheel = function(dlt) { _root.gotoAndStop(_currentframe+(dlt/Math.abs(dlt))); }; // // マウスクラスのリスナーに 作成したオブジェクトを登録 Mouse.addListener(mouseListener); //////////////////////////////////////////////////////////////////// 登録する前に削除しておけば,1フレームに何度行っても重複登録は防げます。 最初の最初は何も登録されていないのに, いきなり削除するとは邪道かもしれませんが, エラーも何も出ませんでしたから, 一応OKではないでしょうか??? (ちょっと自信なし) ======================= _root.gotoAndStop(_currentframe+(dlt/Math.abs(dlt))); に関してです。 Mac は無視するとして, Windows 環境でマウスホイールの回転を調整する場合は, 「スタート」→「コントロールパネル」→「マウス」で, 「マウスのプロパティ」パネルが出てきますから, マウスタブを選択し,「ホイール」タブを選択し, 「1度に次の行スクロールする」の値で設定できます 私の場合,この値が 3 (3行スクロール)になっているので, ホイールの回転で得られる値が3や-3になりますが,誰しも3とは限りません。 またいつも3とは限りません。 1の人もいれば,20の人もいるかもしれません。 ですから, dlt/Math.abs(dlt) を使っています。 Math.abs() は,( )内の数を絶対値で返します。 仮に dlt(delta) に -20 が入ると, dlt/Math.abs(dlt) = -20/20 = -1 になります。 どんな数が入っても -1 か 1 になるので, 1フレーム単位で制御できます。 Mac は マウスホイール の動きを Flash で受け取ることができませんので, onMouseWheel などは, Windowsのみ対応という条件で使用してください。 というか,元から環境に大きく左右されますし, マウスホイール自体がないマウスを使用されている方もいますから, マウスホイールを使ったことは,重要な場所には使わない方が良いです。 重要な場所とは, 次のページに行くなどメニューのような場面です。 マウスホイールがなければ次のページに進めませんから,せっかく作ったページなどに行けなくなってしまいます。

全文を見る
すると、全ての回答が全文表示されます。
  • perse
  • ベストアンサー率74% (113/152)
回答No.1

>x軸y軸をプラス、マイナスする方法しかわかりません。 そこまでわかってるなら簡単です。 プラスなら次のフレーム、 マイナスなら前のフレームにgotoAndStop()させればいいんです。 例えば2フレーム目から11フレーム目に1~10の数字を書きます。 以下のスクリプトを1フレーム目に記述します。 //------------------------------------------------------------- this.stop(); var mouseListener:Object = new Object(); mouseListener.onMouseWheel = function(delta) { trace(delta); var cur = _root._currentframe;//現在のフレーム位置 if (delta<0 && cur>2) { //ホイールアクションがマイナス方向で //フレーム位置が2フレームより大きいとき _root.gotoAndStop(cur-1); //一つ戻る } else if (delta>0 && cur<_root._totalframes) { //プラス方向で全フレーム数より小さいとき _root.gotoAndStop(cur+1); //次に進む } }; Mouse.addListener(mouseListener); //--------------------------------------------------------------- マウスホイールで1フレーム目(ASを書いたフレーム)に行ってしまうと、 リスナーが2重、3重に登録されてしまうので 1フレーム目を通るのは一回だけになるように注意してください。

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

関連するQ&A

  • 特定のmcのフレームにきたときメインタイムライン制御

    AS初心者です。 今、メインタイムラインに配置したmc"main_mc"内のmc”mc1”の、 特定のフレームに来たとき メインタイムラインのフレーム移動をする、というスクリプトを書きたいのですが うまい行かずに困っています。 mc"mC1"のフレームアクションに _root.gotoAndPlay(20); と書きましたが、うまくいきません。 なんででんしょうか。。 もしお分かりのかたがいたらお教えいただけると幸いです 初歩的質問ですみません。。。 mac macbook os 10.4.11 flash cs4を使用しています。

  • FlashMXでタイムラインをとばしたい

    FlashMXのスクリプトで質問です。 ボタンのアクションスクリプトで、ロールアウトするとタイムラインの20フレーム目に戻ってプレイし、40フレーム目まで行ったら、60フレーム目まで飛んで60フレーム目以降をプレイする、 と言うような指定をしたいのです。 on (rollOut) {gotoAndPlay("20");} まではできるのですが、40→60の間をとばす方法が分かりません。 まず最初に0→60を表示させたいので、フレームへのアクション指定は避けたいのです。 またswfファイルも一つにまとめたいのです。 ボタンへのアクション指定で出来る方法が一番いいのですが、良い方法がありましたら教えてください。 よろしくお願いいたします。

  • Flash マウスホイールの制御

    FlashのSWFファイルを組み込んだHTMLをWEB上で公開しようとしているのですが、その際のマウスホイールの動作について質問があります。 現在、MCをスクロールさせるためにコンポーネントのScrollPaneにMCを追加して表示させています。 こうした場合、Flashにフォーカスが当たっている時にマウスホイールを行うとMCだけでなくブラウザのスクロールまで反応してしまいます。 いろいろググってみるとJavaScriptと連携して制御する方法が一般的なように見受けられたのですが、本来Flashにフォーカスが当たっていないとScrollPane等は反応しないはずという記述も見受けられました。 こうしたときにはどう制御するのが一番的確な方法なのでしょうか? ご存知でしたらご指摘の程をよろしくお願いします。

    • ベストアンサー
    • Flash
  • Excelでのマウスホイール

    Excel2000でマウスホイールを転がすと、画面が拡大・縮小するようになってしまいました。 Ctrl+マウスホイールでは今までのように画面が上下にスクロールしてくれます。以前は、全く逆でした。 Excel 上だけの問題で、Wordやブラウザソフト(IE7、Opera)では今までどおりCtrl+マウスホイールで画面の拡大・縮小、マウスホイール単独では上下スクロールです。 特にマウス設定を変えた記憶はないのですが、不便なので元に戻す方法があれば教えていただけないでしょうか。 OSはXP-SP3(バージョンアップ直後は問題なかったと思います)、マウスはUSB接続です。

  • マウスホイールを押すと

    よろしくお願いします。FMV-LX70Y/Dで、最初から付属のマウスの ホイールを押すと、+の虫眼鏡マークに変わり、ホイールを回すと、 拡大、縮小します。これではなく、マウスを上下するとスクロールさせたいのですが、設定方法が解らないので、教えて下さい。

  • Flashでタイムライン表示割合を小さくしたい

    Flashでタイムラインが1000フレーム、レイヤー数が100近くなったときによく感じるのですが、 タイムライン内のレイヤー表示、フレームの表示数をもっと小さくできないものかと思っています。 以前にウェブで公開されていたflaファイルを開くと、 タイムライン表示が非常に細かくて、今の私の求める表示画面に近かったのですが、 それに切り替える方法をご存知でしたら教えてください。

    • ベストアンサー
    • Flash
  • タイムラインか?シーンか?どちらで管理するのが、、

    15ページくらいのフラッシュサイトを制作しています。 ページの管理でこまっています。 タイムライン上でフレームに飛ばす方法か、 1ページずつシーンを作る方法か どちらがいいのでしょうか? それとも他に良い方法はあるのでしょうか? お手数ですが、よろしくお願いいたします。

  • Windows8マウスのホイールでムーズスクロール

    Windows8(マウス使用)で、マウスの中心のホイールを回転させた時に、ツイッターのタイムラインをipadのようにスムーズにスクロールする方法はありますか? ありましたらぜひやり方を教えて下さい。 現在コントロールパネルのマウスのホイール設定のスクロールの刻みを最小の1行にしていますが、それでもなんだかスクロールが段階的で読みづらいです。

  • Bluetoothマウスのホイール誤作動

    Bluetoothマウス(M-BT12BR)を使用しているのですが、ある時からホイールの操作通りに画面が上下しない(ホイールを手前に回し続けて画面を下に移動させようとしてもスムーズに移動しないで時々勝手に少し上に戻ってしまう)問題が生じて困っています。解決方法をご存知でしたら教えて下さい! ※OKWAVEより補足:「エレコム株式会社の製品」についての質問です。

  • メインのタイムラインに戻るボタン

    同じような質問を幾つかあたってみたのですが上手くいかなかったので質問させていただきます。 FLASH8でFLASHを作成しています。 メインになるタイムライン上にムービークリップでウィンドウを作りました。 更にその中(ドラッグした時に一緒に動かす為、入れ子にしている)に、ウィンドウを閉じる為のボタンを作りました。 ウィンドウを閉じた状態にする為には、メインのタイムラインにある "main"というフレーム名の場所に戻らなければならないのですが、ボタンが反応せずウィンドウを閉じる事が出来ません。 現在ボタンには on (release) { _root.gotoAndStop("main"); } このアクションスクリプトを記述しています。

    • ベストアンサー
    • Flash
回復ドライブ作成2.0の穴
このQ&Aのポイント
  • 回復ドライブ作成中に問題発生!USBメモリを差し込む2.0の穴が見つからず困っています。
  • Lenovo PW003EYKのマシンタイプモデル82HV0027JPで、回復ドライブ作成中に問題が発生しました。
  • USBメモリを差し込む2.0の穴が見当たらず、問い合わせ先もわからない状況です。どうすれば良いでしょうか?
回答を見る