2016-11-12 77 views
1

我有一個包common.geometry與2個文件:calculateAnglenormalizeAngle。這些文件包含一個單一的功能,分別爲:爲什麼包中的函數文件無法識別?

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); 
} 
} 

和...

package common.geometry { 

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

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

    return angle; 
} 
} 

編輯
其他源文件,我導入common.geometry.*和我打電話calculateAngle的源代碼編譯。但是,在調用normalizeAngle時,出現編譯器錯誤:調用可能未定義的方法normalizeAngle

我已經嘗試明確導入common.geometry.normalizeAngle,但這似乎不起作用。我需要做什麼以便我可以將全局函數組合到一起?

+0

你知道嗎!它不可能出現錯誤!如果你有打電話calculateAngle沒有問題,並calculateAngle具有相同的位置normalizeAngle。 –

回答

0

問題是對Hexagon類的引用。我相信這引起了一個循環引用。由於它是Hexagon的center屬性,我改變了參數,取而代之的是Point對象,它正在工作。

0

與這對我來說沒有任何問題:

import common.geometry.calculateAngle; 
calculateAngle(); 

爲normalizeAngle和calculateAngle位於同一位置,而我們只能從出包調用calculateAngle,無需輸入normalizeAngle

編輯

爲了清晰起見,我修改了原始函數,刪除了參數並用簡單的trace命令替換了主體。 normalizeAngle正確調用calculateAngle正文

+1

此代碼甚至不應該編譯,因爲它沒有經過什麼功能的強制參數。 – null

+0

@null是的,但其snippet.just去除參數自行更快地測試,並只使用內部normalizeAngle簡單'trace'和calculateAngle稱之爲如上只是爲了檢查其罰款和工作 –

+0

我還沒有肯定這是如何回答我的問題。 – IAbstract

相關問題