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
.