![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
こんにちは
windows flash8を使用しています。
正円のMC(circle)をホイールマウスを1回まわすごとに
18度回るようにしたいとおもっています。また、何周でもできるようにしたいです。移動の際は、減速しながら移動させようと思います。
以下のスクリプトで大体狙った動きを表現することはできたのですが、
--------------------------------------
my_ls = new Object(); //リスナーオブジェクト
n=0; //ホイールの回ったメモリ数。初期値は0
my_ls.onMouseWheel = function(delta){
n += delta; //deltaはホイール1メモリで3(-3)です。
}
_root.circle.onEnterFrame = function(){
R_pos = 6*n
R_dif = Math.round((R_pos - this._rotation)*0.5);
this._rotation += R_dif;
if(Math.abs(this._rotation - R_pos)<2){
this._rotation =R_pos;
}
}
_root.circle.onRollOver = function(){
Mouse.addListener(my_ls);
}
_root.circle.onRollOut = function(){
Mouse.removeListener(my_ls);
}
-------------------------------------
なぜか、回転が半分(180度)を超えるとくるくると回り続けてとまらなくなります。
まだactionscript初心者で調べながらやっているんですが、
どうしても原因がわかりません(><)
どうかよろしくお願いします!
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
なるほど,180度を超えるとクルクル回り出しますね。
原因はこれです↓。
Flashドキュメンテーション
_rotation (MovieClip._rotation プロパティ)
http://livedocs.macromedia.com/flash/8_jp/main/0 …
--- Fumio Nonaka 氏 の訂正を含めて引用 ---
> 時計回りに回転させる場合は 0 ~ 180 の値を指定します。
> 反時計回りに回転させる場合は 0 ~ -180 の値を指定します。
> この範囲を超える値は、360の倍数を加算または減算され、
> 範囲内に収まる値が取得されます。
180度までは良いんですけど,
例えば181度になったとすると(実際にはなりませんが),
181度 = -179度 となるわけです。
すると,
書かれているスクリプトだと onEnterFrame で逆回転に 1周し始めようとしだすのです。
クルクル回り出すのではなくて,逆方向に暴走しだすのです。
180度や-180度を超えると再計算されるのですから,
this._rotation で自分自身を基準にすると,ダメなのです。
this._rotation の変わりに,変数を作り,
その変数を加算減算して,その結果を,
this._rotation に持っていけば,再計算されても問題はなくなります。
----------------------------------------
my_ls = new Object(); //リスナーオブジェクト
n=0; //ホイールの回ったメモリ数。初期値は0
// ↓★この変数追加
circle_rotat = 0;
my_ls.onMouseWheel = function(delta){
n += delta; //deltaはホイール1メモリで3(-3)です。
}
_root.circle.onEnterFrame = function(){
R_pos = 6*n
// ↓★この行変更
R_dif = Math.round((R_pos - circle_rotat)*0.5);
// ↓★この行変更
circle_rotat += R_dif;
// ↓★この行変更
this._rotation = circle_rotat;
// ↓★この行変更
if(Math.abs(circle_rotat - R_pos)<2){
// ↓★この行変更
circle_rotat =R_pos;
// ↓★この行変更
this._rotation = circle_rotat;
}
}
_root.circle.onRollOver = function(){
Mouse.addListener(my_ls);
}
_root.circle.onRollOut = function(){
Mouse.removeListener(my_ls);
}
----------------------------------------
これで行けるでしょう↑。
書かれてある内容自体は一切変えていません。
ダイレクトに this._rotation を動かすのではなく,
変数 circle_rotat を動かして,その値を this._rotation に代入しているだけです。
sassakunさんありがとうございます!
ソースの直しまで・・・ほんとたすかりました^^
原因の内容がわかるとなるほどってかんじでした、
早速がんばって勉強します!
ほんとありがとうございました^^
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- JavaScript 変数のスコープの問題? 3 2022/06/23 09:32
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- JavaScript jQueryでのレスポンシブが綺麗に動かない 3 2022/06/21 11:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Flashで、ナビゲーションがマウ...
-
FLASHで文字入力て判定させる
-
2分木を中順でなぞりたいので...
-
else if文の順序を変えることに...
-
DirectXでの読み込みについて
-
アセンブリ言語のcasl2について...
-
テキストボックスの中身をリセ...
-
photoshopで書いた四角の枠の中...
-
【ExcelVBA】ファイル名をセル...
-
【VB.NET】別Formのボタンが押...
-
外国の幸福のシンボル
-
VB6.0 でメニューを作りたいん...
-
場面が移り変わるときかっこよ...
-
RPG(AS400)の本、サイトってあ...
-
vbs 割算のあまり
-
ウインドウハンドルとインスタ...
-
ボタンのカウント数でムービー...
-
ムービークリップの中のボタン...
-
accessの検索について質問です...
-
AS2でカスタムカーサーを使って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python ボタンを押すと複数の関...
-
四乗根を英語で言うと・・・
-
else if文の順序を変えることに...
-
pythonの画像の貼り付けについて
-
SNMPの標準MIBについて
-
Pythonのtkinterについて
-
Flashで、ナビゲーションがマウ...
-
FLASHで「かるた」を作りたいの...
-
2分木を中順でなぞりたいので...
-
クリックされたインスタンス以...
-
Excel VBAで読み込んだテキスト...
-
apache2でerror403について。
-
ホイールマウスで動かす
-
node* ってなんなのでしょうか?
-
StandardMLの二分木に関する問...
-
AS3 MC内ボタンクリックでシー...
-
PythonでSetWindowPosを使うに...
-
for & duplicateMovieClip & fu...
-
【as3】クリックでインスタンス...
-
on(press)などで変数nを変える方法
おすすめ情報