- ベストアンサー
マウスに追従するクリップの範囲について
- マウスに追従するムービークリップの反応範囲を制御する方法について教えてください。
- マウスがムービーの中に入ったときにのみ追従するようにし、ムービーが定位置に戻るときはゆっくりと追従の流れを残しつつ戻りたいです。
- 使用している環境はWin XP : MX 2004です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
エラーメッセージはなんと出ていますか? **エラー** シーン = シーン 1, レイヤー = レイヤー 1, フレーム = 1 :行 2:ステートメントは on/onClipEvent ハンドラ内でなくてはいけません。 function MoveMe() { などとでていたら、スクリプトを書く場所が原因です。 スクリプトを記述しているアクションパネル[F9]のタイトルが 「アクション - ムービークリップ」 となっているはずです。 これはムービークリップにスクリプトを書いていることになるので #1で書いたものをムービークリップ用に多少書き直さなければなりません。 #1のスクリプトをそのまま使うためにはフレームに書く必要があります。 タイムライン [ctrl+alt+T] 内をどっか適当にクリックするか、 ステージ内のシンボルとかが何も置いてないところをクリックしてください。 そうするとアクションパネルのタイトルが 「アクション - フレーム」になるのでそこにスクリプトを記述してください。
その他の回答 (3)
- flipknight
- ベストアンサー率0% (0/1)
回答させていただきます。 えと、開発環境がpraflaなので、MX 2004の詳しいことはわからんのです。ASだけ回答します。 まず、マウスに追従する設定ですが、 追従範囲のインスタンス名(paraflaではスプライト名)をareaに設定します。 その後、マウスに追従させるムービークリップに以下のASをコピペしてください。 onClipEvent(load){ ////////設定////////// ax=100; //定位置x ay=100; //定位置y speed=5; //追従速度 mousehide=0;//マウス表示(1で非表示、0で表示) //////設定終わり////// } onClipEvent (enterFrame) { ///////マウス表示、非表示/////// if(mousehide==1&&_root.area.hitTest(_root._xmouse, _root._ymouse, true)){ Mouse.hide(); } else {Mouse.show();} /////ここまで/////// /////////マウス追従///////// if (_root.area.hitTest(_root._xmouse, _root._ymouse, true)) { _x += (_root._xmouse - _x)/speed; _y += (_root._ymouse - _y)/speed; } /////ここまで/////// //マウス定位置への移動// else{ _x += (ax-_x)/speed; _y += (ay-_y)/speed; } /////ここまで/////// } です。 自分の作っている作品からの引用なので、いらんとこは消してください。 また、用語間違ってたら誰か指摘お願いします
補足
ご回答ありがとうございます。 さらに理解不能といいますか。。頭が混乱しております(>_<) 少しずつ勉強してみます。。 ありがとうございました。
- perse
- ベストアンサー率74% (113/152)
私の方でも試してみましたが動きました。 インスタンス名つけましたか? #1で書いたスクリプトの一番下にでも trace(_root.my_mc) trace(_root.area_mc) と書いてムービープレビュー[ctrl+Enter]してみてください。 undefinedとでたらインスタンス名が設定されていない証拠です。 インスタンス名とシンボル名は違います。 「シンボルに変換」でつけた名前はシンボル名です。 インスタンス名とはステージに配置したときの名前です。 つけ方はシンボル(ムービークリップ)を選択して[ctrl+F3]でプロパティパネルを開きます。 そこに<インスタンス名>と入力されたテキストボックスがあるのでそこに記述してください。
補足
度々、ありがとうございます(^_^) インスタンス名を入力してませんでした。。 早速入れてみたのですが、下記のエラーがでてしまいます。。 function() { ActionScript エラー数 :4 報告済みエラー :4 なぜでしょう?? お手数をおかけしてすいません。。(^_^;) よろしかったら、教えてください。。
- perse
- ベストアンサー率74% (113/152)
ステージに、 追従するMC[インスタンス名:my_mc]と マウス追従の有効範囲となるMC[インスタンス名:area_mc]を配置します。 //マウスに追従 function MoveMe() { this._x += (_root._xmouse-this._x)/10; this._y += (_root._ymouse-this._y)/10; } //定位置に戻る function ReturnMe() { var x = 0; //定位置の座標 var y = 0; this._x += (x-this._x)/10; this._y += (y-this._y)/10; } //マウスオーバー時 _root.area_mc.onRollOver = function() { //マウスに追従させる _root.my_mc.onEnterFrame = MoveMe; }; //マウスアウト時 _root.area_mc.onRollOut = function() { //定位置に戻す _root.my_mc.onEnterFrame = ReturnMe; };
補足
ご回答ありがとうございます。 早速、ためしてみたのですが、、無反応で何も動きません。。 初心者で申し訳ございません(^_^;) 原因がわからないので。。2~3日、時間があるときに いろいろためしてみます。。 超初心者向けに補足がありましたら、よろしくお願いいたします。。
お礼
できました(^_^) ありがとうございました。 これからもよろしくお願いいたします。