AS3覆盖常量

时间:2010-03-16 20:22:13

标签: actionscript-3 override constants

我正在尝试执行以下操作:

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;

2 个答案:

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

如果您愿意,可以将常数设为整数