AS3 Литье одного типа в другое

У меня есть базовый класс под названием Room и подкласс, называемый Attic, а другой - Basement.

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

Итак, если на контроллере содержимое имеет тип Attic, я пытаюсь выяснить, как его явно использовать. Я думал, что знаю, но его не работает... Вот что я думал, что это будет, заимствуя у Java:

var myAttic:Attic = (Attic) Controller.CurrentLocation;

Это дает мне синтаксическую ошибку:

1086: Синтаксическая ошибка: ожидающая точка с запятой перед экземпляром.

Итак, как вы делаете неявно? Или вы можете? Я мог бы поклясться, что сделал это раньше, как3.

Ответы

Ответ 1

Вот ваши варианты для кастинга в ActionScript 3:

  • Используйте as.

    var myAttic:Attic = Controller.CurrentLocation as Attic; // Assignment.
    (Controller.CurrentLocation as Attic).propertyOrMethod(); // In-line use.
    

    Это приведет к тому, что null до myAttic произойдет сбой.

  • Оберните Type().

    var myAttic:Attic = Attic(Controller.CurrentLocation); // Assignment.
    Attic(Controller.CurrentLocation).propertyOrMethod(); // In-line use.
    

    Это приводит к отказу TypeError.