![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
以下のようにスクリプトを書いたのですが
ムービークリップがマウスカーソルと同じ位置に来ても
ムービークリップがフレーム2に移動しません。
ドラゴンクエストVIIIのトップページのFlashのような
表現をしたいのですがうまくいきません。
http://www.square-enix.co.jp/dragonquest/eight/
_mc.onEnterFrame = function()
{
this._x += ( _root._xmouse - this._x ) / 5;
if( this._x == _root._xmouse ) this._mc.gotoAndStop(2);
else this._mc.gotoAndStop(1);
};
どうすればこの問題を解決することができるのでしょうか。
ご存知の方がおられましたらご回答をよろしくお願いします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
これでいかがでしょうか↓?
---------------------------------------------
// _mc に対する onEnterFrame イベントハンドラの定義
_mc.onEnterFrame = function() {
this._x += (_root._xmouse-this._x)/5;
// 自分自身の座標がマウス座標の ±1 に入れば
if (this._x>=_root._xmouse-1 && this._x<=_root._xmouse+1) {
// 自分自身を フレーム2 に進ませて止める
this.gotoAndStop(2);
} else {
// 自分自身を フレーム1 に進ませて止める
this.gotoAndStop(1);
}
};
---------------------------------------------
ご質問で書かれているスクリプトには,
おそらく2箇所の間違いがあります。
まず1つ目は大きな誤解です。
> ムービークリップがマウスカーソルと同じ位置に来ても
> ムービークリップがフレーム2に移動しません。
同じ位置に来ることは決して(一生)ありません。
ムービークリップのマウス追従移動のスクリプトは
this._x += (_root._xmouse-this._x)/5;
この1行です。
バラして書くと
this._x = this._x + (_root._xmouse-this._x)/5;
です。わかりますでしょうか。
onEnterFrame で,
1フレーム進む時間ごとに,
this(自分自身)とマウスの座標の間の距離を 1/5 ずつ縮めているだけです。
1/5 ずつ縮めているだけなので,
もし this と マウス との座標の差が 500px あった場合
500→100→20→4→0.8→0.16→0.032→……
となるだけで,決して this._x == _root._xmouse になることはありません。
ですから,
if (this._x>=_root._xmouse-1 && this._x<=_root._xmouse+1)
のようにして,
1ピクセルくらいの範囲を持たせないと if 文 は true になりません。
「&&」 は 「なおかつ」 という意味です。
if(this._x は マウス._x-1 より大きく,なおかつ,マウス._x+1 より小さい)
という意味になります。
これで, if文は true になり得ます。
2つ目の間違いは,
「おそらく間違いではないだろうか?」という私の推測です。
if( this._x == _root._xmouse ) this._mc.gotoAndStop(2);
この, this._mc.gotoAndStop(2); のターゲットパスが間違っていませんか?
this._mc.gotoAndStop(2);
↓訂正↓
this..gotoAndStop(2);
おそらく,こうだと思います。
// _mc に対する onEnterFrame イベントハンドラの定義
_mc.onEnterFrame = function() {
です。
わかりますでしょうか?
_mc に対する onEnterFrame イベントハンドラの定義 なのですから,
_mc が this です。
もし _mc の中にさらに _mc が存在していれば,
この2つ目の間違いはターゲットパス間違いではありません。
単なる私の推測違いです。
次のようにしてください。
---------------------------------------------
// _mc に対する onEnterFrame イベントハンドラの定義
_mc.onEnterFrame = function() {
this._x += (_root._xmouse-this._x)/5;
// 自分自身の座標がマウス座標の ±1 に入れば
if (this._x>=_root._xmouse-1 && this._x<=_root._xmouse+1) {
// 自分自身内の _mc を フレーム2 に進ませて止める
this._mc.gotoAndStop(2);
} else {
// 自分自身内の _mc を フレーム1 に進ませて止める
this._mc.gotoAndStop(1);
}
};
---------------------------------------------
早速やってみたところ問題を解決することができました。
2つ目のターゲットパス問題もご指摘の通り、間違っていました。
Flashのターゲットパスの挿入の機能をそのまま使用していたため気づきませんでした。
ご回答していただきどうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- 英語 英語の仮定法について If he were in this age, that man would 1 2022/12/12 23:52
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- 英語 語順 1 2023/01/24 20:54
- 英語 【 論・表 助動詞 】 問題 ※写真の 4) 私の解答 I’m going to climb the 2 2022/06/19 18:26
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
多分探索木の高さを測定する関...
-
attachMovieについて(長文)
-
空のムービークリップを作成し...
-
ドラッグ&ドロップ
-
photoshopで書いた四角の枠の中...
-
VBScriptでMsgBoxのYesNoボック...
-
VBAで改行の入ったデータの正規...
-
POIでのテキストボックス作成に...
-
IP Address 入力フォームについて
-
変数に256文字以上のテキストを...
-
テキストボックスの中身をリセ...
-
Flashでカラーシュミレーション...
-
MCが放物線を描いて移動
-
外部SWF読み込み後の座標指定
-
シンボルの存在意義
-
python ボタンを押すと複数の関...
-
for & duplicateMovieClip & fu...
-
[AS3]自動的に画像が重なってい...
-
クリックされたインスタンス以...
-
Flashで文字の表示を
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
createEmptyMovieで作成したMC...
-
マウス 追従 範囲外
-
MovieClip(root)について
-
ムービークリップがマウスカー...
-
ドラッグで、mcの大きさを等倍...
-
360度パノラマ写真をループでき...
-
B-SHELL 特定の行を置き換えたい
-
多分探索木の高さを測定する関...
-
Suzukaで一行ニュースティッカ...
-
プログラミング、アーキテクチ...
-
photoshopで書いた四角の枠の中...
-
YOASOBI
-
VBScriptでMsgBoxのYesNoボック...
-
テキストボックスの中身をリセ...
-
五芒星は、悪魔崇拝とどういう...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
else if文の順序を変えることに...
-
テキストボックスにセルの値を...
-
ipconfig /releaseって何ですか?
おすすめ情報