【问题标题】:Accessing Subclass Properties After Passing as The Superclass (as3)作为超类传递后访问子类属性 (as3)
【发布时间】:2014-11-08 13:16:04
【问题描述】:

我一直在寻找这个问题的答案,但我发现很难找到此类特定问题的答案。可能是我没有正确理解某些东西,但无论如何,我希望你能提供帮助! :)

我有一个名为 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

【问题讨论】:

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


    【解决方案1】:

    访问 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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2013-03-24
      • 2011-10-16
      • 2010-12-28
      • 2014-05-15
      • 2012-08-05
      • 2013-12-12
      相关资源
      最近更新 更多