2016-11-12 73 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

相关问题