
AS3初心者です。
マウス移動するとムービークリップ(mc)が回転するスクリプトです。
下記では、マウスを左右どちらに動かしても右回転しかしません。
マウス右移動では、右回転に。マウス左移動では、左回転にしたいのですが・・・。
var rot_speed:Number = 0;
stage.addEventListener(MouseEvent.MOUSE_MOVE, function(event:MouseEvent){
rot_speed += event.stageX * 0.1;
msg.text = String(event.delta);
});
mc.addEventListener(Event.ENTER_FRAME, function(event){
rot_speed *= 0.3;
mc.rotation += rot_speed;
});
No.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です。
過去と今の座標を引き算するのですね。
勉強になります。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
potplayerについて質問です
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
uwscでExcelに自動記入
-
PHPの変数をAS3に渡す方法
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
Flashplayerの運用について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字(テキスト)の潰れ・にじ...
-
物体の衝突判定について教えて...
-
VBAユーザーホームテキストボッ...
-
変数に256文字以上のテキストを...
-
VB6.0で、フォームから、別のフ...
-
四乗根を英語で言うと・・・
-
photoshopで書いた四角の枠の中...
-
python ボタンを押すと複数の関...
-
テキストボックスの中身をリセ...
-
【VB.NET】別Formのボタンが押...
-
マウス自体の移動量の取得
-
VBAで改行の入ったデータの正規...
-
UWSCのBTN関数について。
-
テキストボックスにセルの値を...
-
FLASHで脱出ゲームを作る時の、...
-
テキストエリア内の文字列にリ...
-
VBScriptでMsgBoxのYesNoボック...
-
arduino プログラムについて
-
ZWCAD CUIXとLISPの関係について
-
DataTableの件数を取得したい
おすすめ情報