问题:我收到一个恼人的错误:
我尝试在下面的actionscript代码中使用类型大小。
但我总是得到这个错误:
1046:未找到类型或不是编译时常量:大小。
但无论我尝试什么,当我添加时它似乎都会破裂
public function get Size():Size
不知怎的,它不喜欢返回类型Size,但是我做错了什么?
package BaseTypes
{
public class StockData
{
private var size:Size;
public function get Size():Size
{
return this.size;
}
public function set Size(value:Size):void
{
this.size = value;
}
} // End Class
}// End Package
我在文件夹BaseTypes中有以下代码,它在AS3类路径中。
package BaseTypes
{
public class Size
{
private var width:Number;
private var height:Number;
public function Size(width:Number, height:Number)
{
this.width = width;
this.height = height;
}
public function get Width():Number
{
return this.width;
}
public function set Width(value:Number):void
{
this.width = value;
}
public function get Height():Number
{
return this.height;
}
public function set Height(value:Number):void
{
this.height = value;
}
public function toString():String
{
return "{width: " +this.width.toString()+ " height: " +this.height.toString() + "}";
}
} // End Class
} // End package
答案 0 :(得分:5)
您已将getter函数命名为与导入的类相同,我认为这是您错误的来源。
在您的StockData类中,您有定义
public function get Size():Size
您应该将“尺寸”重命名为“尺寸”或与您导入的类名称不同的名称。
答案 1 :(得分:2)
class StockData
{
private var _size:Size;
public function get size():Size { return _size; }
public function set size(value:Size):void {
_size = value;
}
}
与C#中的PascalCase用于所有事情不同,按照惯例,在AS3中,人们使用UpperCamelCase用于类和接口,而使用lowerCamelCase用于其他所有内容(ALL_CAPS用于全局常量,under_scores用于包名称)。如您所见,AS3编译器无法解决Size
的重复含义。这显然是一个编译器漏洞,但我不会等到Adobe修复它。但是,使用所述约定,您可以消除这种歧义。另外:private / internal / protected vars通常以_
或$
为前缀,以避免与访问者发生冲突。
如果您正在使用FlashDevelop,我建议您使用Ctrl + M跳转到匹配的大括号(无需标记// End Class
)。如果你不是,我强烈建议,你试一试/
答案 2 :(得分:0)
将以下内容添加到您的StockData导入中,因为Size属于不同的包
import BaseTypes.Size;
如果您使用的是Flash IDE,请将包含BaseType包的目录添加到ClassPath。