2012-04-04 5 views
0

私は、三角法を使ってダイナミックテキストボックスで距離と度を計算して表示するゲームを作成しています。私はムービークリップの中心からカーソルの距離を計算しています。そして、そのムービークリップの中心を使用して、swfの周りをカーソルが移動するときに360度を計算して表示しようとしています。私はゲームの距離の部分が動作しているが、度を表示する部分が正しく動作していない。ダイナミックテキストボックスは、90ºから270ºまでしか表示されません。 270度から360度/ 0度から90度を過ぎるのではなく、270度から90度に戻っ​​てカウントします。以下は私のアクションスクリプトです。私は大いに助けや提案を感謝します。ありがとう! atan2Actionscript 2とTrigonometryを使用して360度のフルを表示するにはどうすればよいですか?

//Mouse and Dynamic Text Boxes------------------------- 

Mouse.hide(); 

onMouseMove = function() { 
feedback.text = "You are moving your mouse"; 
cursor._x = _xmouse; 
cursor._y = _ymouse; 
updateAfterEvent(); 
xmouse_value.text = Math.atan2((a), (b)); 
ymouse_value.text = Math.round(radians*180/Math.PI) 
updateAfterEvent(); 
}; 

Mouse.addListener(myListener); 


//distance (RANGE) 
_root.onEnterFrame = function() { 
xmid = Stage.width/2; 
ymid = Stage.height/2; 

a = _root._ymouse-ymid; 
b = _root._xmouse-xmid; 
c = Math.sqrt(Math.pow(a, 2)+Math.pow(b, 2)); 
feedbacka.text = Math.round(a); 
feedbackb.text = Math.round(b); 
feedbackc.text = Math.round(c/30.4); 

updateAfterEvent(); 

var radians:Number; 
var degrees:Number; 

//Calculcate Radians 
//Radians specify an angle by measuring the length around the path of the circle. 
radians = Math.atan2((c), (b)) 

//calculate degrees 
//the angle the circle is in relation to the center point 
//update text box inside circle 
radians_txt = Math.round(radians*360/Math.PI); 
degrees_txt = Math.round(radians*180/Math.PI); 

updateAfterEvent(); 

//getting past 270 degrees 

radians2_txt = Math.round(radians/Math.PI); 
radians2_txt = Math.floor(radians + -270); 

} 

答えて

0

パラメータは、二点間のデルタYおよびデルタXでなければならないが、次の2つの点とデルタXとの間の距離を通過しています。代わりにこれを試してください:

radians = Math.atan2(a, b); 

次の問題は、ラジアンを度に変換することです。

degrees_txt = radians * 180/Math.PI; 

Math.PI/2から-Math.PI/2間からatan2戻っている:ラジアンを度に変換するには、これを行うことができます。度に変換すると、この範囲は-180〜180になります。0〜360に変換するには、結果が負の場合は360を加算します。

if(degrees_txt < 0) degrees_txt += 360; 
関連する問題