我有一个名为Room
的基类和一个名为Attic
的子类,另一个名为Basement
。
我有一个控制器类,它有一个名为CurrentLocation
的属性,类型为Room
。我的想法是希望能够将Attic
或Basement
放在该属性中并将其恢复,然后将其转换为任何类型。
因此,如果在控制器上内容属于Attic
类型,我正试图弄清楚如何显式地转换它。我以为我知道但它不起作用......这就是我认为的,借用Java:
var myAttic:Attic = (Attic) Controller.CurrentLocation;
这给我一个语法错误:
1086:语法错误:在实例之前期待分号。
那么你如何隐含地投射?或者你呢?我可以发誓我之前已经做过这样的事情。
答案 0 :(得分:25)
以下是在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
。