AS3 Override const - PullRequest
       9

AS3 Override const

1 голос
/ 16 марта 2010

Я пытаюсь сделать следующее:

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

Но компилятор выдает:

Ошибка: существует конфликт с унаследованным определением dieEngine: entity.type в общедоступном пространстве имен. открытый тип const: int = CHARACTER;

Ответы [ 2 ]

3 голосов
/ 16 марта 2010

ну, константы - это константы, независимо от того, наследуются они или нет, и их не следует переопределять, представьте себе, что это полный класс, который в два раза определяет требуемую константу.

Если вы действительно хотите переопределить его, вам следует установить var вместо const

Использование:

public var type:int = INVALID;

вместо:

public const type:int = INVALID;
0 голосов
/ 20 июля 2012

Помогает ли это вообще? Вы можете сделать свойство 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);
        }
    }
}

Вы можете сделать константу целым числом, если хотите

...