Flashスクリプトでの質問

このQ&Aのポイント
  • FlashMXを使用して地図を作成しています。地域部分にマウスを当てると地名が表示され、拡大・縮小ボタンで地図の拡大・縮小ができます。しかし、地域部分をクリックするとリンク先に飛んでしまいます。
  • 地図をドラックすることで地図を動かせるようにしていますが、ドラック中にリンク先に飛んでしまう問題が発生しています。
  • 拡大した後に地域選択部分でドラックするとリンク先に飛んでしまうため、どのような対応をすべきか悩んでいます。
回答を見る
  • ベストアンサー

Flashスクリプトでの質問

FlashMXを使用してある地図を作っています。 その地図は地域部分にマウスをあてると右側に地名が表示されるという物です。 更にそこに拡大・縮小ボタンをつけて地図を拡大・縮小できるようにしました。 更に拡大した時点でその地図をドラックすると地図が動くようになっています。 そこで問題が発生しました。 拡大してドラックするのはよいのですが、地域部分をクリックするとその地域部分で違う場所にリンクで飛ばす状態になっています。 ドラックした後にリンクがはってあるのでリンク先に飛んでいってしまうのです。 ドラックしている時点ではリンク先に飛んで行ってはこまるのですがどうしても拡大を行った後に地域選択部分でドラックするようになってしまうのでどのような対応をするか悩んでいます。 どうかよいアドバイスをいただけないでしょうか? お願いします。

  • k--8
  • お礼率8% (5/58)

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

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

あるムービークリップが、ドラッグされた時は地図を動かし、クリックされた時はリンク先を表示する、ということでしょうか? 要するに、ムービークリップの上でマウスのボタンが押されて離された場合、それがクリックだったのかドラッグだったのかを判別できればいいのだと思います。 クリックはボタンを押して離す動作、ドラッグはボタンを押したままマウスを動かす動作です。 従って、ボタンが押されて離されるまでの間に、マウスが動かされたかどうかが分かれば、クリックかドラッグかを判別できると言えます。 まず、フレームアクションで変数を2つ用意します。1つはボタンが押されたかどうかを、もう1つはマウスが動かされたかどうかを記憶するものです。ここでは仮に、ボタン用を press_flg 、マウス用を drag_flg とします。 MovieClip オブジェクトの onPress を使って、ボタンが押された時に press_flg を true にし、ボタンが押されたという情報を残しておきます。 同じく MovieClip オブジェクトの onMouseMove で、マウスが動かされたかどうかを検出します。MouseMove イベント発生時にボタンが押されていた( press_flg が true )ら、ドラッグであると見なせますので、ドラッグを開始し、drag_flg を true にしてドラッグ中であることを記憶します。 MouseMove イベントは、マウスが動く度に発生するします。その都度ドラッグの開始処理をしていたのでは正常にドラッグできませんから、ドラッグを開始した直後( press_flg が true で、drag_flg が false の時)に1度だけ、ドラッグの開始処理 を行います。 ボタンが離された時点で、drag_flg が true であればドラッグ、false のままならクリックだったと判断できます。後は、drag_flg が false だった時だけ、リンク先を表示すれば完成です。 このような考え方でスクリプトを組むと、大体、こんな感じになります。ムービークリップはとりあえず、clip という名前にしてあります。 Flash MX からはムービークリップをボタンのように使えるようになりましたが、イベント発生時に呼ぶ関数を、予めフレームアクションで定義しておくスタイルになりました。以下のアクションはインスタンスにではなく、フレームに設定します。 (↓このスクリプトをコピーして利用する場合は、各行の行頭に入っている全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)   //フラグの定義と初期化   press_flg = false;   drag_flg = false;   clip.onPress = function ()   {    //ボタンが押されたことを記憶    press_flg = true;   };   clip.onMouseMove = function ()   {    //ボタンが押されていた場合のみ、1度だけドラッグの開始処理    if ( press_flg && ( ! drag_flg ) )    {     //ドラッグ開始     this.startDrag();     //ドラッグ中であることを記憶     drag_flg = true;    }   };   clip.onRelease = function ()   {    //ドラッグだった場合:ドラッグを終了    if ( drag_flg )    {     this.stopDrag();    }    //クリックだった場合:リンク先を表示    else    {     getURL("***.html","_blank");    }    //フラグをクリア    press_flg = false;    drag_flg = false;   }; これだけでは、ムービークリップ外でボタンが離された場合は、ドラッグの終了やクリックの判定が行われません。clip.onReleaseOutside = ・・・として、onRelease と同じ処理を行うよう、定義しておいた方が無難です。 なお、別の考え方として、ボタンが押されてから離されるまでの時間を計測し、短ければクリック、長ければドラッグと見なす方法もあります。 長くなってすみませんでした。

関連するQ&A

  • FLASHで作る地図につて

    商店街の地図をFLASHで作ることになりました。 ユーザーが拡大・縮小や、ドラッグを行って地図上にある店のアイコンを選択、指定したHTMLにジャンプするようなものを作ろうと考えています。 そこで質問なのですが、地図上に店の名前を入れてしまうとどうしても拡大しすぎで見にくくなってしまいますよね? 各種ダイアログに出るようなポップアップヘルプのような感じでマウスオーバー時に店名を表示させることはできますでしょうか? 地図をいくら拡大・縮小させても店名表示部分のサイズは一定で行いたいのですが・・。 ソースを載せることができないのでわかりにくい質問内容になってしまって申し訳ありません。 どなたか対処法をご存知の方がいらしたら教えてもらえると嬉しいです。 環境はWin版Flash MXです。

  • レイヤー内のすべてのMCのXY位置やScaleを変更したい!

    こんにちは。よろしくお願いします。 使用しているのは、「FlashMx2004」です。 レイヤーの中にMCが10個ほどあるのですが。このどれかのボタンをクリックしたときに、10個のMCすべてが、拡大縮小されるような仕組みを作っています。 一つ一つ、拡大縮小の命令をだせば言いと思うのですが、もっと楽なやり方ってないのでしょうか? イメージが湧きにくいかと思いますので、作成している物も、書き記そうと思います。 「地図」で。マスク処理により、左右前後に動きます。 地図内には、地域分けする為の枠があり、枠をクリックすると、クリックされた枠を中心に拡大されるような地図を作りたいです。 言葉足らずかも知れませんが、よろしくご教授ください。

  • あるサイトの機能について、日本語で説明の文章を作成しました、文章中の日本語が正しいですか、

    あるサイトの機能について、日本語で説明の文章を作成しました、文章中の日本語が正しいですか、 サイトアドレスは「http://60.32.5.11/steppower_Flg/」です、 (検索範囲は 経度 140 - 145 緯度 30 - 35) begen: Google マップみたいな機能です、 入力した緯度と経度を条件として、検索すると、画面地図の対応するところを赤い線で囲んで表示します、 画面の下は五つボタンがあります、図面拡大ボタンをクリックすると、図面の解像度は十パーセント拡大します、 図面縮小ボタンをクリックすると、図面の解像度は十パーセント縮小します、 原図表示ボタンをクリックすると、原図に戻ります、 全画面表示ボタンをクリックすると、全画面表示モードになります、 ヘルプボタンをクリックすると、ヘルプ画面の不透明度を少しずつ増加します、 上記の機能はマウス操作も実現できます、 左マウスをクリックすると、図面の解像度は十パーセント拡大します、 Shiftキーと左マウスをクリックすると、図面の解像度は十パーセント縮小します、 マウスドラッグをすると、図面が移動します、 マウスホイールを上にすると、図面が拡大します マウスホイールを下にすると、図面が縮小します 画面の左下のところはチェックボックスがあります、 チェックボックスがチェックされたとき、マウスは地図の上に移動するとき、 対応する緯度と経度が表示されます、 経度と緯度の入力部分は、右向けのしるしをクリックすると、入力部分を右に少しずつ拡大します、 左向けのしるしをクリックすると、入力部分を左に少しずつ縮小します、 以上、

  • Flashでの文字ボタンリンクについて。

    Flash初心者です。FlashMXを使っています。 文字をボタンにしてリンクなど貼る場合、文字の部分しか反応せず困っています。文字を少し外れるとリンクが外れてしまいます。どうすれば文字全体にリンクがはれるのでしょうか。後ろに何か背景を付けるほかないのでしょうか。初歩的な質問で申し訳ありませんが教えてください。

  • Flashでイメージビューとサブメニュー処理したい

    長文で内容がおかしな文章になったりすることもありますが最後までおつきあいください。 もちろん初級レベルのFlash利用者でFlashMX2004は使っていましたが最近はFLASH8を使い始めました。 さて、タイトルのことですが、具体的には メイン表示とサブ表示があり、左半分と右半分を4:3の割合として表示する構成だとします。 メイン表示部分には主なイメージでたとえば写真でマウスドラッグすれば表示しきれない部分もみれる感じとします。 一方のサブ表示にはメニューリストがあり、 ・拡大する/縮小する ・補足メッセージポインタを表示する/しない とします。 と、ここまでFlashなら実現できるかと思ってましたが、そうは今のところうまくいきません。 まず、最初に画像表示分野をマウスドラッグできるセットされたムービークリップを配置し、 その配置したフレームの上のフレームにしてから右部分にはメニュー選択できる部分を 配置したのですが、どこが間違っているのでしょうか。 うまくいかない現象は、メニューの部分をクリックしても画像がドラッグした感じでメニューには反応しません。 どうかご教授願います。

    • ベストアンサー
    • Flash
  • Flashボタンのリンクについて

    今回初めてHPを作っているんですがどうしてもわからないので質問させていただきます。 FlashMXでボタンを作ってリンク(gotoURL)を貼って、Dreamweaverにて縦に割ったフレームの左側に設置しました。 ボタンをクリックして右側のフレームに指定のドキュメントを表示させたいんですがどうしてもうまくいきません。 作ったボタンにはgetURL("指定ドキュメト","_self");とアクションスクリプトを設定して"_self"の部分は_parent,_blnk,_top,mainframe等記述してひと通り試してみたのですがどうしても右側のフレームに表示されません。 色々調べてみたのですがどうしてもわからずほとほと困り果てています。。初心者の質問で申し訳ありませんがおわかりの方どうぞご指導よろしくお願いします。

  • 拡大を制限するアクションスクリプト

    いつもお世話になっています。 on(release){ _root.screen._xscale-=20; _root.screen._yscale-=20; } と、ボタンに入れて『screen』の部分を拡大、縮小するようにしました。 が、このままだと、どこまでも拡大・縮小できてしまうので、拡大・縮小の回数を制限するような方法や、一度拡大・縮小したものを元の状態に戻す方法はありますか? on(release){ this.play(); } この形だと、1フレーム目に戻ってしまいます。 1フレーム目に戻らない形で、元の状態に戻せるといいのですが・・・

    • ベストアンサー
    • Flash
  • つまらない質問なのですが、IEの拡大縮小について、、

    IEの拡大・縮小について、、、(IE.6) 教えてください。 パソコンを使い始めて2年余り。。。 あまり、操作も詳しくないのに、firefoxを使い始めました。 firefoxには、アドオンで、拡大縮小のボタンがあり、ツールバーに、 置いています。 そして、最近気付いたのですが、IEに、 【拡大縮小のボタン】を発見!!⇒(ツールバーに、AAのボタンがありますよね??) 笑われそうですが、今までは、メニューバーから、拡大縮小、 もしくは、ctrlキーのマウスのホイールでやっていたもので、、、 こういう【ボタン】の存在に気付きませんでした。 それで、みなさんにお聞きしたいのですが。 パソコンデビュー(IE)のとき、 どのくらいで、このAAの存在に気付きましたか?? なんか、今まで損していたような、、、、 みなさん、よろしくお願いします。

  • 【FLASH】ボタンアクションが重なっている場合の処理

    http://www.geocities.co.jp/mizuterubose/hp/sample_fla.htm ↑のように、3つに区切られたスペースをそれぞれマウスオーバーすると、 その色が拡大するようにしたいのですが、 これをひとつにすると、一番上にあるボタンが有効になり、うまく表示できません。 オレンジ部分にマウスオーバーするとオレンジが拡大、 グリーン部分にマウスオーバーするとグリーンが拡大、 ブルー部分にマウスオーバーするとブルーが拡大するようにしたいのですが、 何か方法はないでしょうか? よろしくお願い致します。

  • Adoce InDesign CS4 について

    InDesign CS4 DTPデザイン・テクニック(著者;井村克也)の本をんで居て分からないことろがあり、質問します。 私のOSはWin XPです。 著者が紹介してるのはMacです。 【内容】:マーク作成 1.まず、Shiftを押しながら円を描く。 2.円の拡大コピーをする ツールPanelから拡大/縮小ツールを選択し、コントロールパネルから拡大・縮小の基準をオブジェクトの中心にする。 3.Shift+Option+ドラッグ 右側のハンドルをShiftキーを押しながドラッグを開始し、少し幅を広げたらOptionキーも加えて押して、マウスボタンを放す。 3.で困っています。 WiodowsにはOptionキーがないからです。 ご教授願います。