Flash:回転するMC
2010.04.15
こういう感じのものです。(マウスオーバーで回転)

MCをスクリプトで回転させるくらいは普通にやってましたが、
上のように一定量回転したら止まるものを作ろうとしたら
思いのほか苦労したという話です(笑)

( 現在の角度 ) + ( 350° ) = ( 目標の角度 )
というようにしてまず目標地点を決めるのですが、何かおかしい数字が出ます。

もちろん現在の角度に問題があるわけですが・・
試しに20°ずつ増やして数値を見ると、

0°, 20°, 40°, 60°, 80°, 100°, 120°, 140°, 160°, 180°, -160°, -140°, -120°, -100°, -80°・・

というようになっています。
180°以上のときに数値を取得するとマイナスになってしまうので、
つまり例えば 200°のときには
( 200° + 350° = 550° )
となってほしいのが、
( -160° + 350° = 190° )
となってしまうので、挙動がおかしくなってしまうのでした。

ので、

nowR = 0;
targetR = nowR + 350;

onEnterFrame = function(){
this._rotation = nowR+= (targetR - nowR) / 20;
}

というように nowR という代わりの変数を用意して、
計算の中では _rotation で取得をしないようにすることで解決できました。
| コメント(0) | トラックバック(0)

コメントする

トラックバック(0)

この記事を参照しているブログ: Flash:回転するMC

トラックバックURL: http://www.gravity-works.jp/cmt/mt-tb.cgi/2007