- ベストアンサー
AS3初心者のためのマウス移動と回転するスクリプト
- AS3初心者のためのマウス移動と回転するスクリプトについて説明します。
- マウスを左右に動かすとムービークリップ(mc)が回転しますが、現在は右回転しかしません。
- マウス右移動では右回転に、マウス左移動では左回転になるようにしたいですが、どうすればよいでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
前置きとして msg.text = String(event.delta); とは何でしょうか??? なぜそこにそんなもの(delta)がそこ登場するのかわからないので とりあえず上の1行は無かったものとして無視します。 > マウス右移動では、右回転に。 > マウス左移動では、左回転にしたいのですが・・・。 そう書かれましても 具体的にどのように動かしたいかによって 考え方やスクリプトは変わりますよ。。。 例えば次のような感じにしたいということでしょうか? //---スクリプト全文例---------------------- //過去のマウスの座標を保存する変数を用意 var old_mouseX:Number = stage.mouseX; //マウスが動いたときに以下の function を実行 stage.addEventListener(MouseEvent.MOUSE_MOVE, function(event:MouseEvent){ //現在のマウスの座標を取得 var new_mouseX:Number = stage.mouseX; //現在と過去のマウスの座標の差に適当な定数を掛けた値を取得 var rot_speed:Number = (new_mouseX - old_mouseX)*1.5; //「mc」の回転をその角度だけ加算 mc.rotation += rot_speed; //現在のマウスの座標を過去のマウスの座標として保存 old_mouseX = new_mouseX; }); //----------------------------------------- ※注 mc.addEventListener(Event.ENTER_FRAME, function(event){…}); の部分を書いていないのは, 省略しているわけではなくて,不要なので削除しています。 === === === === === === === === または, わざわざ mc.addEventListener(Event.ENTER_FRAME, function(event){…}); を用意されたのは 本当は回転する動きに重石を付けたかったからでしょうか? つまり 例えば次のような感じにしたかったのでしょうか? //---スクリプト全文例---------------------- //過去のマウスの座標を保存する変数を用意 var old_mouseX:Number = stage.mouseX; //回転の目標角度を入れる変数を用意 var target_rotation:Number = mc.rotation; //ダミーの角度を入れる変数を用意 var dummy_rotation:Number = mc.rotation; //マウスが動いたときに以下の function を実行 stage.addEventListener(MouseEvent.MOUSE_MOVE, function(event:MouseEvent){ //現在のマウスの座標を取得 var new_mouseX:Number = stage.mouseX; //現在と過去のマウスの座標の差に適当な定数を掛けた値を取得 var rot_speed:Number = (new_mouseX - old_mouseX)*1.5 ; //回転の目標角度をその角度だけ加算 target_rotation += rot_speed; //現在のマウスの座標を過去のマウスの座標として保存 old_mouseX = new_mouseX; }); //1フレーム進む時間ごとに毎回以下の function を実行 mc.addEventListener(Event.ENTER_FRAME, function(event){ //ダミーの角度を目標角度に 1/8 ずつ近づける dummy_rotation += (target_rotation-dummy_rotation)/8; //「mc」の回転をその角度にする mc.rotation = dummy_rotation; }); //----------------------------------------- ※注 rotation は -180~180 の間の角度になります。 したがって直接 mc.rotation を加算減算すると 回転する動きがおかしくなるので ダミーの角度を 加算減算 しておいた上で mc.rotation をそのダミーの角度にするようにしています。 以上, 具体的にどのように動かしたいかがわからなかったため 一応2つのスクリプト例を回答してみました。
お礼
BlurFiltan 様 動きました。 わざわざ2つもありがとうございます。上のスクリプトでOKです。 過去と今の座標を引き算するのですね。 勉強になります。 ありがとうございます。