- ベストアンサー
ムービークリップの座標AS
アクションスクリプトの勉強中で、質問があります。 ムービークリップをx座標20、y座標20に移動した場合にフレームをストップするためには、 どのような命令をすればいいのでしょうか・・・。 無知で大雑把な質問すみません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> ムービークリップをx座標20、y座標20に移動した場合にフレームをストップ ピッタリキッチリ x=20,y=20 ですか? 意図的にそうすればできますが,普通はあまりピッタリキッチリ x=20,y=20 になることはありません。 また,意図的に x=20,y=20 にするのでしたら, その意図的に x=20,y=20 にするタイミングで stop(); させれば良いことになります。 最初からムービークリップの座標を監視する必要はないと思いますが。 その辺がどうも不可解ですが, 一応書いてみると次のような感じで監視できます。 Flash のバージョンを書かれていらっしゃいませんが, FlashのバージョンやFlashPlayer対応のSWFのバージョンやActionScriptのバージョンで方法などは大きく変わることがあります。 質問の際には必ず明記する方が良いです。 勝手に Flash MX 以上,ActionScript1.0 ということで回答します。 _root の直下に 「my_mc」 というインスタンス名のムービークリップがあって, その 「my_mc」 が動き回っていたとします。 _root(ムービーのメインのタイムライン) └my_mc(ムービークリップ) その場合,フレームに書くスクリプトです。 ----------------------------------------------- // 1フレーム進む時間毎に随時実行 _root.onEnterFrame = function() { // my_mc の _x が 20 なおかつ _y が 20 のとき if (_root.my_mc._x == 20 && _root.my_mc._y == 20) { // _root のタイムラインを再生停止 _root.stop(); // この onEnterFrame イベントハンドラメソッドを削除 delete _root.onEnterFrame; } }; ----------------------------------------------- ムービークリップの座標を監視する必要が有ある場合, たいていは,ピッタリキッチリなんてことは起こらないので, 許容範囲エリアを想定して,その範囲内エリアに入ったとき何かを実行させます。 もしくは MovieClip.hitTest などでムービークリップどうしの当たり判定を取ります。 どちらにしてもある程度の許容範囲エリアが存在します。 許容範囲が 20±5 のときの例 ----------------------------------------------- // 1フレーム進む時間毎に随時実行 _root.onEnterFrame = function() { // my_mc の _x が 15 以上 なおかつ 25 以下 なおかつ // _y が 15 以上 なおかつ 25 以下 のとき if (_root.my_mc._x>=15 && _root.my_mc._x<=25 && _root.my_mc._y>=15 && _root.my_mc._y<=25) { // _root のタイムラインを再生停止 _root.stop(); // この onEnterFrame イベントハンドラメソッドを削除 delete _root.onEnterFrame; } }; ----------------------------------------------- ※下に画像が見えない場合は OKWave からこのページにアクセスすると見えると思います。 http://okwave.jp/qa4507011.html ※添付画像のメモ アップロード前のファイル容量 29.6KB(30,404バイト) JPEG アップロード前の大きさ 横幅220px×高さ250px
その他の回答 (1)
- ryo2501
- ベストアンサー率46% (15/32)
AS2.0で記述します。 ムービークリップをスライドさせる場合(x座標) 操作したいムービークリップ名._x += (最終的に移動させたいx座標 - 操作したいムービークリップ._x) / 移動速度 (数値が0に近ければ近い程速く移動します) ムービークリップをスライドさせる場合(y座標) 操作したいムービークリップ名._y += (最終的に移動させたいy座標 - 操作したいムービークリップ._y) / 移動速度 (数値が0に近ければ近い程速く移動します) ※注意 このスクリプトを記述する場合ば[onEnterFrame]関数内に記述して下さい。 例 下記のスクリプトは[box]というムービークリップをクリックした場合、_x = 200 _y = 200にスライドするというスクリプトです。 box.onPress = function() { onEnterFrame = function() { box._x += (200 - box._x) / 5; box._y += (200 - box._y) / 5; } }
お礼
座標の書き方がいまいちわかっていなかったので、 大変参考になりました。 ありがとうございました。
お礼
できました!本当に詳しくありがとうございます。 この回答を元にさらに勉強していきたいと思います。