AS3将一种类型转换为另一种类型

时间:2012-03-12 00:16:43

标签: actionscript-3 flash

我有一个名为Room的基类和一个名为Attic的子类,另一个名为Basement

我有一个控制器类,它有一个名为CurrentLocation的属性,类型为Room。我的想法是希望能够将AtticBasement放在该属性中并将其恢复,然后将其转换为任何类型。

因此,如果在控制器上内容属于Attic类型,我正试图弄清楚如何显式地转换它。我以为我知道但它不起作用......这就是我认为的,借用Java:

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

这给我一个语法错误:

  

1086:语法错误:在实例之前期待分号。

那么你如何隐含地投射?或者你呢?我可以发誓我之前已经做过这样的事情。

1 个答案:

答案 0 :(得分:25)

以下是在ActionScript 3中进行投射的选项:

  1. 使用as

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

    如果演员失败,这会将null分配给myAttic

  2. 换入Type()

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

    如果演员表失败,则会抛出TypeError