我正在尝试执行以下操作:
public class character extends entity {
public const type:int = CHARACTER;
}
public class entity extends Sprite {
public const type:int = INVALID;
public const INVALID:int = -1;
public const CHARACTER:int = 1;
}
但编译器抛出:
错误:名称空间public中的继承定义dieEngine:entity.type存在冲突。 public const type:int = CHARACTER;
答案 0 :(得分:3)
好吧,常量是常量,无论它们是否被继承,都不应该被覆盖,可以将它想象成一个完整的类,它定义了所需常量的两倍。
如果你真的想覆盖它,你应该设置var
而不是const
使用:
public var type:int = INVALID;
而不是:
public const type:int = INVALID;
答案 1 :(得分:0)
这有帮助吗?您可以使MovieClip的属性成为可以更改的常量:
package
{
import flash.display.*;
public class Controller extends MovieClip
{
public const IS_VALID:Boolean = true;
public var type:MovieClip = new MovieClip;
public function Controller()
{
extendedController();
}
protected function extendedController():void
{
}
}
}
然后在你的扩展课程中
package
{
public class ControllerExtended extends Controller
{
public function ControllerExtended()
{
}
override protected function extendedController():void
{
type.IS_VALID = false;
trace(type.IS_VALID);
type.IS_VALID = true;
trace(type.IS_VALID);
}
}
}
如果您愿意,可以将常数设为整数