FLASHマウスホイールでの正常な動作ができない!

このQ&Aのポイント
  • FLASH8(Win-XP)を使用している際に、マウスホイールを使ってオブジェクトを移動しようとすると、正常に動作しない問題が発生しています。
  • 現在の仕様では、マウスホイールでのアクションを行うためには、一度FLASH画像をクリックしなければならないようです。
  • 試した環境はFP7+IE6とFP10+N7であり、FP7の場合にはFLASH画像の周りに枠が表示される現象を避けるために、JavaScriptを使用してHTMLを書き出しています。
回答を見る
  • ベストアンサー

【FLASH】マウスホイールで正常に動かない!

FLASH8(Win-XP)使用者です。 オブジェクトの移動にマウスホイールを使いたいのですか、うまく動作しません。 どのようにやっても一旦「FLASH画像をクリック」しないと反応しないのです。 マウスホイールでのアクションは本来そういう仕様なのでしょうか? 以下にスクリプトを記します。 my_ls = new Object(); my_ls.onMouseWheel = function(delta, target_mc) { ballY = _root.ball._y - (delta * 10); _root.ball._y = ballY; }; Mouse.addListener(my_ls); *試したのはFP7+IE6、FP10+N7です。 FP7時にFLASH画像の周りに枠が出る現象を避けるためJavaScriptにてHTMLを書き出しています。 お詳しい方、よろしくお願いいたします。

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

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

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

> 一旦「FLASH画像をクリック」しないと反応しないのです。 これは,Flash 内の ball などの特定の画像という意味ではありませんよね。 Flash 自体を一度クリックしないと動作しないということですよね。 マウスホイールの問題ではなくて,Flash とは本来そういうものです。 Flash に フォーカス が当たっていないと,マウスイベントは有効になりません。 わかりやすい例で言うと, マウスに限らず,キーイベントもそうです。 ブラウザ に 表示された Flash は初期状態でブラウザ側にフォーカスがあるので, キーイベント もブラウザ側が受け取ります。 例えばブラウザのURL欄にフォーカスがあって,そこで「キー1」を押した場合, ブラウザのURL欄が「1」になります。 Flash のボタンに, on (release, keyPress "1") { play(); } などどと書いてあってもそれは無効で,ブラウザの URL 欄が 「1」 になります。 当たり前と言えば当たり前ですよね。 ブラウザ と Flash との関係以外でも,PCの仕様はほとんどそうです。 ActionScript 2.0 リファレンスガイド 「 ActionScript クラス > Mouse」 http://livedocs.macromedia.com/flash/8_jp/main/00002427.html  --- 引用 --- > Flash アプリケーションが監視できるのは、 > そのフォーカス内で発生するマウスイベントのみです。 > Flash アプリケーションは、別のアプリケーションでのマウスイベントを検出できません。 > > イベント > onMouseDown = function() {} > マウスボタンが押されると通知されます。 > > onMouseMove = function() {} > マウスポインタが移動すると通知されます。 > > onMouseUp = function() {} > マウスボタンが離されると通知されます。 > > onMouseWheel = function([delta:Number], [scrollTarget:String]) {} > マウスホイールを回転させると通知されます。 「ブラウザに埋め込んだ Flash ムービーにキーボードフォーカスを与える」 http://www.adobe.com/jp/support/flash/ts/documents/tn_15586.htm 「JavaScript を使用して Flash にフォーカスを与える」 http://yoshiweb.net/blog/index.php?itemid=67 上の方の Adobe のページにある > 回避策 1 > ユーザーに Flash ムービーをクリックしてもらう。 > Flash ムービーの最初のフレームにボタンを追加して、 > ユーザーがそのボタンをクリックしてから、 > 処理を続行してもらう方法が考えられます。 > 例えば、"スタート"、"ログイン"のボタンを用意します。 > これらのボタンをクリックすると Flash にフォーカスを与えることが可能です。 今回のご質問はこの方法はとれないのかもしれませんが, この「スタート」ボタンを用意する方法がが簡単で,よく用いられる方法です。 ゲームなどで,意味のない「スタート」ボタンがあったりする場合がありますが, ボタン自体に意味はなくても, Flash に フォーカスを与えるという意味で存在しているケースもあります。

ikataro
質問者

お礼

なるほど!わかりました。 そのようにさせていただきます。 ありがとうございました。

関連するQ&A

  • ホイールマウスで動かす

    こんにちは windows flash8を使用しています。 正円のMC(circle)をホイールマウスを1回まわすごとに 18度回るようにしたいとおもっています。また、何周でもできるようにしたいです。移動の際は、減速しながら移動させようと思います。 以下のスクリプトで大体狙った動きを表現することはできたのですが、 -------------------------------------- my_ls = new Object();  //リスナーオブジェクト n=0;  //ホイールの回ったメモリ数。初期値は0 my_ls.onMouseWheel = function(delta){ n += delta;   //deltaはホイール1メモリで3(-3)です。 } _root.circle.onEnterFrame = function(){ R_pos = 6*n R_dif = Math.round((R_pos - this._rotation)*0.5); this._rotation += R_dif; if(Math.abs(this._rotation - R_pos)<2){ this._rotation =R_pos; } } _root.circle.onRollOver = function(){ Mouse.addListener(my_ls); } _root.circle.onRollOut = function(){ Mouse.removeListener(my_ls); } ------------------------------------- なぜか、回転が半分(180度)を超えるとくるくると回り続けてとまらなくなります。 まだactionscript初心者で調べながらやっているんですが、 どうしても原因がわかりません(><) どうかよろしくお願いします!

    • ベストアンサー
    • Flash
  • flashの画面全体で表示

    はじめまして。 質問させてください。 flashで背景画像のみを画面いっぱいに表示して 他のムービクリップはブラウザの大きさに左右されずサイズと場所を固定したくて 下記のように記述しました。 ---------------------------------------------- bg_h = _root.bg._height/_root.bg._width; Stage.scaleMode = "noScale"; Stage.align = "TL"; function setPosition() { _root.bg._width = Stage.width; _root.bg._height = bg_h*_root.bg._width; _root.rogo._x = 10; _root.rogo._y = 10; } ls = new Object(); ls.onResize = setPosition; Stage.addListener(ls); ---------------------------------------------- 上記だとブラウザのサイズが縦長になってしまうと下に大きく白い余白が空いてしまいます。 "noBorder"の使った時のように比率の差が大きい方のサイズに合わせたいのですが どうすれば良いのかわかります。 ご存知の方がいらしたら教えて頂ければと思います。 よろしくお願い致します。

  • 【FLASH】onLoadCompleteで外部swfの内部情報を取得するには?

    FLASH8(Win-XP)使用者です。 onLoadCompleteで外部swfの内部情報を取得することはできるのでしょうか? 具体的には、外部swf(gaibu.swf)の中の_root.gaibuMcの高さを調べたい場合、 myListener = new Object(); myListener.onLoadComplete = function(){ takasa = _root.eizo.gaibuMc._height; }; my_mcl = new MovieClipLoader(); my_mcl.addListener(myListener); my_mcl.loadClip("img/gaibu.swf", _root.eizo); といった記述ではうまくいきませんでした。 お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • フルウィンドウのFlash Firefoxなどでずれる

    http://creator.job-stage.jp/guide/fla_sample/flash_0001.html のサイトを参考にしてフルスクリーンのサイトを作っています。 Firefoxなどで確認したところ、 中央部に表示されず上半分にずれてしまいます。 Firefox用などのスクリプトが必要ですか? //1. ステージ クラスを宣言。 flStage.align = "LT"; Stage.scaleMode = "noScale"; //2. レイアウトの関数を宣言。 function LayOut() { _root.MC_Logo._x = 50; _root.MC_Logo._y = 50; _root.MC_CopyRight._x= Stage.width - _root.MC_CopyRight._width-20; _root.MC_CopyRight._y= Stage.height - 20; _root.MC_main._x = (Stage.width - _root.MC_main._width)/2; _root.MC_main._y = (Stage.height- _root.MC_main._height)/2; } //3. ブラウザーをリサイズした時の設定。 myListener = new Object(); myListener.onResize =function() { LayOut(); break; }; Stage.addListener(myListener); LayOut();

    • ベストアンサー
    • Flash
  • マウスの移動方向によってマウスカーソルの画像を切り替えたい

    今、マウスカーソルを(右向きの)車の画像にしています。 マウスを右方向に動かしたら、右方向の車の画像にし、逆に左方向に動かしたら左方向の車の画像に切り替える、という処理は可能でしょうか?可能である場合、どのようなスクリプトを書けばよいのでしょうか? マウスのx座標の値の増減で判断する、ということは想像できるのですが、書き方が分かりません。 右向きの車の画像のムービークリップ「car」のインスタンスには、下のスクリプトを記述しています。 onClipEvent (load) { Mouse.hide(); } onClipEvent (mouseMove) { this._x = _root._xmouse; this._y = _root._ymouse; updateAfterEvent(); } バージョンはMXです。 どうかよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASH アクションスクリプト

    画面のサイズを拡大縮小しても 常にセンターに表示させる アクションスクリプトで質問がございます。 back_mcが【背景】 main_mcが【オブジェクト】 _root.main_mc._x = ( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = ( Stage.height - _root.main_mc._height) /2; このアクションスクリプトで【オブジェクト】が最初から常にセンター表示になる事は分かるのですが、例えば座標x600 y500で始まるようにするのはどうしたら良いのでしょうか。 下記のアクションスクリプトでは、【オブジェクト】がx600 y500の位置に最初はあるのですが画面のサイズを拡大縮小してもピクリとも動きません。 Stage.align = "TL"; Stage.scaleMode = "noScale"; Stage.addListener(this); this.onResize = function() { _root.main_mc._x = 600;( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = 500;( Stage.height - _root.main_mc._height) /2; _root.back_mc._width = Stage.width; _root.back_mc._height = Stage.height; } this.onResize(); いまいち分かりにくい質問ですが伝わりますでしょうか。 分かる方、宜しくお願い致します。

    • ベストアンサー
    • Flash
  • マウス位置によって画像を切り替える

    ステージ上のマウス位置を読み取り、その座標によって画像を切り替えるFlashを作成中なのですが、上手くいきません。 流れとしては 画像のファイルを読み込む ↓ 画像のファイル分だけムービークリップを作成 ↓ マウスの座標に応じて画像(ムービークリップを切り替える) というものです。 下記のようにかいています。 ●1フレーム目 //各画像の変数読み込み jpg1 = "test1.jpg"; jpg2 = "test2.jpg"; jpg3 = "test3.jpg"; jpg4 = "test4.jpg"; //初期配置 //空のMCを作成し、その中に画像変数を読み込ませる。 _root.createEmptyMovieClip("image_mc0",4); _root.createEmptyMovieClip("image_mc1",3); _root.createEmptyMovieClip("image_mc2",2); _root.createEmptyMovieClip("image_mc3",1); _root.image_mc0.loadMovie(_root.jpg1); _root.image_mc1.loadMovie(_root.jpg2); _root.image_mc2.loadMovie(_root.jpg3); _root.image_mc3.loadMovie(_root.jpg4); //マウスが押されたときに変数MCclickをオンにする _root.mouse_mc.onPress = function() { MCclick = true; trace( "押された時の変数 " +_root.MCclick); } //マウスが離れた時に変数MCclickをオフにする _root.mouse_mc.onRelease = function() { MCclick = false; trace( "離れた時の変数 " +_root.MCclick); nowpoint = (_root._xmouse); trace( "今の位置" + nowpoint); } //マウスがボタン領域外にいった時に変数MCclickをオフにする _root.mouse_mc.dragOut = function() { MCclick = false; trace( "どっかいった時の変数 " +_root.MCclick); } stop(); ●ステージ上にかぶせている透明なMC(mouse_mc) //MCclickがオンの時変数mc_xの値をとり続ける onClipEvent (mouseMove) { if (_root.MCclick) { _root.mc_x = (_root._xmouse); trace( "押された時の変数mc_xの位置 " + _root.mc_x); trace( "マウスを押したままの変数 " + _root.MCclick); //100以下の時に画像1を表示 if((_root.mc_x >= 0) || (_root.mc_x <= 100)){ _root.image_mc0._visible = true; _root.image_mc1._visible = false; _root.image_mc2._visible = false; } else if((_root.mc_x >= 100) || (_root.mc_x <= 200)){ _root.image_mc0._visible = false; _root.image_mc1._visible = true; _root.image_mc2._visible = false; } else if((_root.mc_x >= 200) || (_root.mc_x <= 300)){ _root.image_mc0._visible = false; _root.image_mc1._visible = false; _root.image_mc2._visible = true; } } } この書き方で一応動作はするのですが、1枚目と2枚目の画像の切り返しか動作が行われなくて困っています。 画像のサイズ、ステージのサイズは両方とも 400*400です。

    • ベストアンサー
    • Flash
  • 慣性の効果がついたマウス追従

    マウス追従の効果で教えてください。 http://www.flashiroha.com/script/as8.htmlの慣性効果付加型のスクリプトは AS2.0で書かれています。 onClipEvent(load) { vx=0; vy=0 } onClipEvent(enterFrame) { vx=vx*0.65+(_root._xmouse-this._x)/a; vy=vy*0.65+(_root._ymouse-this._y)/a; this._x+=vx; this._y+=vy; } これをAS3.0で作成していますが、マウスに追従するどころか大きくステージから離れてしまいます。 どのように記述をしたらいいでしょうか。 my_mc.addEventListener(Event.ENTER_FRAME,onEnterframe); var vx ; var vy ; function onEnterframe(eventObj:Event):void{ vx= my_mc.x*0.65+(stage.mouseX-my_mc.x)/2; vy= my_mc.y*0.65+(stage.mouseY-my_mc.y)/2; my_mc.x+=vx; my_mc.y+=vy; trace(my_mc.x); }

    • ベストアンサー
    • Flash
  • マウスポインタを変化させない方法

    50も半ば過ぎの初心者です。 Flash8で、jpg画像の上にムービークリップ及びボタンを配置、   on (rollOver) { gotoAndPlay("s1"); } on (releaseOutside, rollOut) { gotoAndPlay("s2"); } で、画像へのマウスポインタの乗り降りでムービークリップの制御をしました。 このとき、画像にマウスポインタが乗ると形状がデフォルトの"矢印"から"手"に変りますが、これをデフォルトのまま変化させない方法を教えてください。 on (rollOver) { Mouse.hide(); gotoAndPlay("s1"); } on (releaseOutside, rollOut) { Mouse.show(); gotoAndPlay("s2"); } で、画像にマウスポインタが乗ると消えるようにはできたのですが、クリックしても何も起こらない"ボタン"なので、"矢印"のままにしておきたいのです。 よろしくご指導ください。

    • ベストアンサー
    • Flash
  • USB接続でマウスがどうさあしません…

    usb接続で光学式マウスが動作しません。 以前は同じマウスで正常に動作していました。 OSは win xp sp2 です。 マウスはBuffaloのBOMC-Y/MSVです。USBポートに接続した場合、デバイスマネージャのUSBコントローラに不明なデバイスと表示されます。標準マウスドライバで動作し、USB接続PS/2接続両方対応しているマウスです。 一旦不明なデバイスを削除して再起動してみましたがダメでした。 今はPS/2接続でマウスを使用しています。しかし何故かマウスホイールが効かないので画面のスクロールができず不便です。 このマウスを買う前に使用していたボール式マウスを試しにPS/2接続してみてもマウスホイールが効かなくなっていました。コントロールパネルのマウスのプロパティでホイールは有効になっているのは確認済みです。 助けてください!!

専門家に質問してみよう