2016-11-12 3 views
1

私はパッケージcommon.geometrycalculateAnglenormalizeAngleの2つのファイルを持っています。パッケージ内の機能ファイルが認識されないのはなぜですか?

package common.geometry { 
import Graphics.Hexagon; 

public function calculateAngle(hex1:Hexagon, hex2:Hexagon):Number { 
    var diffY:Number = hex2.center.y - hex1.center.y; 
    var diffX:Number = hex2.center.x - hex1.center.x; 
    var radians:Number = Math.atan2(diffY, diffX); 

    return normalizeAngle(radians * 180/Math.PI); 
} 
} 

と...私はcommon.geometry.*をインポートし、私はソースがコンパイルcalculateAngleを呼び出すのソースファイルで

package common.geometry { 

public function normalizeAngle(angle:Number):Number { 
    if (angle < 0) { 
     angle += 360; 
    } 

    if (angle > 360) { 
     angle = angle % 360; 
    } 

    return angle; 
} 
} 

編集
:これらのファイルは、それぞれ単一の機能が含まれています。しかし、normalizeAngleが呼び出されると、コンパイラエラーが発生します。おそらく定義されていないメソッドnormalizeAngleを呼び出します。

私は明示的にcommon.geometry.normalizeAngleをインポートしようとしましたが、これはうまくいかないようです。グローバル関数をパッケージにまとめるには何をする必要がありますか?

+0

あなたは知っています!そのエラーを得ることはできません!問題なくcalculateAngleを呼び出していれば、calculateAngleはnormalizeAngleと同じ場所にあります。 –

答えて

0

問題がHexagonクラスへの参照ですcalculateAngle体から呼び出されました。私は信じている循環参照を引き起こしていた。これはHexagonのcenterプロパティなので、代わりにPointオブジェクトを取得するようにパラメータを変更しました。

0

これで私にとっては問題なし:

import common.geometry.calculateAngle; 
calculateAngle(); 
normalizeAngleと同じ場所に位置calculateAngleとして

、と我々は唯一のパッケージのうちからcalculateAngleを呼び出し、不要

編集 normalizeAngle

をインポートします

わかりやすくするために元の関数を修正し、引数を取り除き、単純なtraceコマンドでボディを置き換えました。 normalizeAngleが正しく

+1

このコードは、関数の必須パラメータに何も渡していないので、コンパイルすべきではありません。 – null

+0

@nullそうですが、そのsnippet.justはselfによって引数を取り除き、より速くテストし、normalizeAngle内で単純な 'trace'を使用し、calculateAngleでこれを呼び出すだけで、その細かいことを確認します。 –

+0

私はまだありませんこれがどのように私の質問に答えるか。 – IAbstract

関連する問題