• ベストアンサー

FLASHでの座標取得

マウスが動くたびに変数としてテキストボックスにいれるにはどのようなアクションスクリプトをかけばいいのでしょうか? 以下のようにしてみましたができませんでした。 シーン上のフレーム1のところのレイヤーが何もない箇所に以下のアクションスクリプト onClipEvent(mouseMove){ Zahyox = _xmouse; hensuu = Zahyox; } でも何も出てきません。 座標取得をやるのは初めてで、どこへかけばいいのかすらわかってないので、よろしくお願いします。 FLASH5です。

  • w-inty
  • お礼率72% (1169/1618)
  • Flash
  • 回答数3
  • ありがとう数4

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

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

マウスが動いた時に発生する mouseMove イベントは、ムービークリップのイベントです。利用するにはムービークリップが必要です。 変数を表示するためのテキストボックスをムービークリップにすれば、mouseMove イベントを検出できるようになるだけでなく、X座標とY座標の両方を表示するにも1つのシンボルを再利用でき、一石二鳥です。 「テキスト」ツールでテキストボックスを作成したら、「テキストオプション」パネルでタイプを「ダイナミックテキスト」にし、「変数」の項目に、内容を表示したい変数の名前を入力します。ここでは仮に、変数名を coordinate とします。 このテキストボックスを、ムービークリップに変換します。テキストボックスには、ムービークリップが持っている coordinate という変数の内容が表示されることになります。 このムービークリップのインスタンスを2つステージに配置して、次のようなスクリプトを設定してみてください。Y座標を表示するには、_xmouse を _ymouse に変更します。  onClipEvent(mouseMove)  {   //ステージの左上を原点とするマウス座標を取得   coordinate = _root._xmouse;  } (↑このスクリプトをコピーして利用する場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) カーソルの位置は _xmouse と _ymouse プロパティを見ると分かります。 ただし、_root._xmouse とした時はステージの左上を ( 0 , 0 ) とするカーソルの座標が、インスタンス名._xmouseとした時は指定のインスタンスの中心点を ( 0 , 0 ) とするカーソルの座標が返ってきます。 onClipEvent アクションの中でターゲットパスを省略すると、this._xmouse と同じ意味になります。つまり、そのムービークリップの中心点を原点とするカーソルの座標になります。 なお、ムービークリップの中心点というのは、インスタンスにある+マークが表示されている点のことです。 座標を表示することが目的ではない場合も、発想は同じです。 Flash MX 以降であれば _root.onMouseMove = function () ・・・としてフレームに定義しておけるところですけれど、Flash 5 ではこの方法は利用できません。mouseMove イベントを利用するには、必ずムービークリップが必要になります。 既にステージにあるムービークリップを、どれか1つ借りてもいいのですが、mouseMove イベント検出専用のダミーのムービークリップを配置しておくのも1つの手です。 ムービークリップのインスタンスであれば、何でも構いません。適当なシンボルを1つ作ってもいいですし、実際に作品で使っているシンボルのインスタンスでも結構です。 ムービークリップインスタンスのアルファを0%にして、ステージのどこかに置いておきます。 このムービークリップに onClipEvent(mouseMove) を設定して _xmouse や _ymouse プロパティを参照すると、マウスが動く度にカーソルの座標を取得することができます。

w-inty
質問者

お礼

回答ありがとうございます。 スクリプトを貼り付ける箇所を間違えていたんですね。 無事座標を取得できました。 ありがとうございました。

その他の回答 (2)

  • teddy1014
  • ベストアンサー率34% (17/50)
回答No.3

No.2の方が言われている通り、「mousuMove」イベントはムービークリップのイベントですので、ステージにムービークリップを配置する必要があります。 >「シーン上のフレーム1のところのレイヤーが何もない箇所に」 と言われていますが、意味がいまいち理解出来ません。 「あるレイヤーのフレーム1のところに」と言う事でしょうか?。でも、onClipEventはムービークリップインスタンスでのみ利用出来るので、フレームアクションではエラーになるはずです。 ・レイヤー1の1フレームに適当な位置にダミーのムービークリップを配置。(縦横1x1の透明なムービーで良い)  インスタンス名を「aaa」とする。 ・同じくダイナミックテキストエリアを2個配置。  変数名を「hensuu_x,hensuu_y」とする。(注:インスタンス名ではありません。必ず変数名に指定してください。) ・「aaa」のムービーアクションとして、 onClipEvent(mouseMove) { _root.hensuu_x = this._xmouse ; _root.hensuu_y = this._ymouse ; } _root.の代わりにthis._parent.でも構いません。 これで、マウスを動かす毎にダイナミックテキストエリアに表示されます。(実際に試しましたから間違いありません。) 今、気付きました。No.2で回答されている方はDPEさんで、私もいつもお世話になっている方です。DPEさんの回答をCopy&Pasteされて試されたら良いですね。

w-inty
質問者

お礼

回答ありがとうございます。 >「あるレイヤーのフレーム1のところに」と言う事でしょうか? はい、そうです。 エラーは出ませんでしたが、何も反応しなかったです。 #2の方の方法で無事解決しました。 ありがとうございました。

  • comuru
  • ベストアンサー率30% (9/30)
回答No.1

おつかれさまです。。 FLASH関連なら参考URLのサイトが便利です。 Have Fun! GAC http://www.gac.jp/

参考URL:
http://www.gac.jp/
w-inty
質問者

お礼

便利なサイトですね。 今後も活用したいと思います。 ありがとうございました。

関連するQ&A

  • FlashのActionScript詳しい方お願いします

    Flashで波紋が広がっていくようなムービーのスクリプトなのですが、うまく行きません。 スクリプトが間違っているのだと思うのですが、一応本を参考に同じように入力したつもりですのでどこが間違っているのかが分かりません。 デバックしたら下のようなメッセージが出るのですが、「;」をどこかに入れたらいいのでしょうか? 『 シーン = シーン 1, レイヤー = mouse, フレーム = 1 : 行 9:';' が必要です。 onClipEvnet(mouseMove) { 』 ----------------------------------------- 以下が記述したスクリプトです。 onClipEvent(load){ if(_name== "mc"){ max=10;//複製する個数 for(i=0; i<max; i++){ this.duplicateMovieClip(i,100+i);//複製 } } } onClipEvnet(mouseMove) { if(_name=="0"){//一つ目のmcはマウスの座標とする _x=_parent._xmouse; _y=_parent._ymouse; }else{//それ以降は自分の名前から-1引いたインスタンス名の座標を取得する _x=_parent[int(_name)-1]._x; _y=_parent[int(_name)-1]._y; } updateAfterEvent(); }

  • カーソルのカスタム

    flash ver.9 AS2.0 使用です。 カーソルを自分で制作したムービークリップ(MC)にする方法を教えていただきたいです。 MCに直接スクリプト onClipEvent (mouseMove) { _x = _root._xmouse; _y = _root._ymouse; } を書く方法は分かるのですが、 知りたいのは フレームアクションで制御する方法です。 多分、とても初歩だと思うのですが、よろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASH外部ファイルの読み込み

    Flashでjpegファイルの読み込みをしたいのですが、 アクションスクリプトで onClipEvent(load){ _root.hyouji_mc.loadMovie("face1.jpg"); } とインスタンスに記入するとなにも表示されません。 【hyouji_mc】を青色にして実行するとスクリプトのない状態ですと青の四角が表示されるのですが、スクリプトを実行すると真っ白になり、やはり画像が表示されません。 試しに【load】をe【nterFrame】に変えてもだめでした。 【mouseDown】や【mouseMove】,【keyDown】にすると画像は表示されます。 【onClipEvent】を【on(rease)】等に変更をしても表示されます。 (1)どうにかフレームが読み込まれた時に画像が表示される様にしたいのですが、解決策としてはフレームアクションとして記述するしかないのでしょうか? (2)【onClipEvent(load,enterFrame)】で   【loadMove()】は実行できないのでしょうか? フラッシュはMXを使っています.OSは2000です。 意味がわかりにくいと思いますが、ご教授ください. よろしくお願いします。

  • Actionscriptで座標指定

    はじめまして。 WinXP・Flash MXの環境で作業しています。 動きとしては、[a_mc]と言うMCがある距離動いたら、B秒止まるというような動きをしていて ボタンにマウスが乗ると指定した座標にスライド移動してMCの動きは止まる。 そしてボタンからマウスが離れたら、静止した場所から再びある距離動いたら、B秒止まるという動きが再開される というものを考えています。 [a_mc]のMC構造は レイヤー1に縦に7枚つなげた画像を配置 レイヤー2の1フレーム目に Y_dif = (Y_Pos-_y)*0.6; _root.Slide._y = Number(Y_dif)+Number(_y); と言うアクションを配置。 2フレーム目にgotoAndPlay(1);のアクションが配置してあります。 シーン1にの レイヤー1に[a_mc]のMCを配置。インスタンス名はSlideにしています。 レイヤー2にはボタンが7つ配置してあります。 [a_mc]のMCにアクションは onClipEvent (load) { function replace() { if (_y>=-1680) { _y = _y-2; } else if (_y<-1680) { _y = 0; } } } onClipEvent (enterFrame) { replace(); } と入れているのですが、何秒間止まるなどの入れ方がうまく分かりません。 (※getTimerなど使うのかななど色々試しているのですが…) ボタンのアクションは on (rollover) { _root.Slide.Y_Pos = 4; } on(rollOut){ _root.Slide.replace(); } としているのですが、ピクっと動いてすぐ止まってしまいます。 現状このような感じになっています。 ムービーのスクロールをB秒止める方法とrolloutすると続きがスクロールする方法はどうやるのでしょうか? 長々と申し訳ありませんが宜しくお願い致します。

    • ベストアンサー
    • Flash
  • mcのx座標が50以上になったら次フレーム

    タイトルどおり、 mcのx座標が50以上になったら次フレーム という処理をしたく、 mcに次のアクションスクリプトを記述しました。 onClipEvent(enterFrame){ this._x += 10; } onClipEvent(load){ if(this._x >= 50){ nextFrame(); } } しかし何故か次のフレームに行ってくれません。 どこか間違っているのでしょうか。。。 nextFrame();をgotoAndPlay(2);にしても駄目でした。

    • ベストアンサー
    • Flash
  • ムービークリップ再生後次のフレームへ移動しません

    アクションスクリプトを使って、テキストが下から上へ流れるようにムービークリップを再生し、テキストが流れ終わったところで次のフレームへ移動させたいのですが、フレームが移動せず困っています。 スクリプトは色々なところで調べて、やっとの事で下記のように書きました。 使用しているのはFlash MX 2004 です。 |○  □|○|  ←1.スクリプトレイヤー |●    □|  ←2.ムービークリップレイヤー |○|●→|●|  ←3.ムービークリップ後に再生したいレイヤー 1.のスクリプト(2つのキーフレームいずれとも) stop(); 2.のムービークリップのスクリプト onClipEvent (load) { spd =5; onClipEvent (enterFrame) { this._y = this._y-spd; if (this._y<=-10) { spd = 0; gotoAndPlay(2); } } 知り合いにお見舞いのメッセージをと思って作ったのですが、送ることが出来なくてとてもあせっています。 どうぞよろしくお願いします。

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

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

    • ベストアンサー
    • Flash
  • FlashのActionScriptについて

    FlashのActionScriptについて質問です。 Yesか Noを選択する、診断テストみたいなフラッシュを作りたいのです。 1フレームには一番はじめの Yes Noが表示されています。 それのどちらかのボタンをクリックするまで、次のフレームに流れないようにするには、 1フレーム目にstop();でよいのでしょうか? それとも、sotoAndstopとかなのでしょうか? また複数のレイヤーがあるときstop();などのアクションスクリプトは 全部につけなければいけませんか?

  • flashのMCの中にMCを入れてその中のボタンでシーンを移動したいのですができません

    flashの シーン1で大元になる5つのMCで構成された大元のMCにはonClipEvent (enterFrame)のスクリプトを記述しています。 その5つのMCの中、それぞれに、ボタンがあります。そのボタンはシーン1からシーン2に飛ばすアクションをつけているのですが、まったく反応しません。 なぜか、同一シーンのフレーム移動は反応するのですが。ボタンの記述は下記です。 on (release) { _parent._parent.gotoAndPlay("work", 1);

    • ベストアンサー
    • Flash
  • FLASHのActionScriptについて

    すみません。どなたか教えてください。  風景の画像が時間が来たら、次の風景が移る様にしたいのです。 静止している様に見える"2"のフレームを2フレームにして、2フレーム目に gotoAndPlay("シーン 1", "02") を入れてループさせています。120秒後に"03"フレームに移動させるよう、隠しオブジェクトに以下のスクリプトを記入しました。 onClipEvent (load) { beforeTime = getTimer(); n = 0; } onClipEvent (enterFrame) { nowTime = getTimer(); n = n+nowTime-beforeTime; beforeTime = nowTime; if (n>120000) { gotoAndPlay("シーン 1", "03"); n = 0; } } しかし、初めのgotoが無視されたように、書き出してしまいます。ここを Stop() にするとずーととまったままです。何か方法はないのでしょうか?

専門家に質問してみよう