作为超类(as3)传递后访问子类属性

时间:2014-09-15 04:26:16

标签: actionscript-3 class parameter-passing subclass superclass

我一直在寻找答案,但我发现很难找到像这样的具体问题的答案。可能是因为我没有正确理解某些东西,但不管它是什么,我希望你能提供帮助! :)

我有一个名为Panda的类,它扩展了一个名为Player的类。 我还有一个名为Enemy的类,它接受一个Player作为参数。 Enemy类实际上需要访问Panda类的属性,但由于我想创建多个扩展Player类的类并将传递给Enemy类,因此Enemy接受了Player类的参数。

但是,当我尝试访问属于Panda类而不是Player类的任何内容时,它会给我1119错误:访问可能未定义的属性...

为什么这样,我如何设置我的代码,以便我可以传递扩展Player类的各种类,并访问它们的属性,而不会得到这个1119错误?

(嗯。子类和超类......我正在使用这些术语,对吗?)


这些链接帮助我理解下面的答案。谢谢你的帮助!

常数变量:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f87.html

类型转换:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f87.html

1 个答案:

答案 0 :(得分:0)

访问Panda类的属性时,必须输入cast:

private var _player:Player;

public Enemy(player:Player) {
  _player = player;
  const panda:Panda = _player as Panda;
  if (panda) {
    setPlayerIsPanda(panda);
  }
}

private function setPlayerIsPanda(panda:Panda):void {
  // do panda stuff
}