【问题标题】:AS3 Extended classesAS3 扩展类
【发布时间】:2012-03-03 01:22:49
【问题描述】:

假设我有一个基本类“Code.as” 而且我还有扩展“Code.as”的类“Code2.as”

在“Code.as”中,我有一行“public static var code2:Code = new Code2();”

我不断收到此错误: “TypeError:错误 #1009:无法访问空对象引用的属性或方法”

在“Code2.as”的类声明中。

为什么?我想不通。 如果“Code2.as”扩展了“Code.as”,我认为也可以将其称为“Code”......

【问题讨论】:

  • code2:Code 中使用Codetype 就可以了。然而,这个错误听起来更像是new Code2(); 的问题。你试过用调试器运行你的代码吗?
  • 没有更多细节,我怀疑有人能回答你。
  • 叫我疯了,但你试图做的(假设你摆脱了你遇到的任何问题)不会导致堆栈溢出吗?创建 Code2 的一个实例会创建另一个 Code2 的实例,而后者又会创建另一个 Code2 的实例,等等。

标签: actionscript-3 class extends


【解决方案1】:

正确的行应该是:

public static var code2:Code2 = new Code2();

还要确保导入“Code2”:

import Code2;

【讨论】:

  • Code2 扩展了 Code,因此 Code 类型的变量可以包含 Code2 的对象。空对象引用错误必须在一段未发布的代码中。
  • 我试图避免这样做,因此我以后可以将其作为“代码”引用,以避免必须先检查类型(会有多个条目)。我知道你可以在 java 中做到这一点,但不知道你不能在 AS3 中做到这一点。 @OmerHassan 它在“Code2”的公共类行给出了错误,我一直在引用 Code.code2。
  • @NathanWride,您需要发布更多代码并启用调试器,以便您确切知道错误发生在哪一行。该错误表明您正在尝试访问未初始化对象的属性。您发布的行完全不相关。
  • 在允许调试的情况下,出现问题的那一行确实是 Code2 的类声明。我一直在为 Code.code2 设置数组索引,例如 myArray[i] = Code.code2;这会以某种方式导致错误吗?
  • 我很难理解你想要做什么。因此,在您的 Code 类中,您有一个 Code 类型的静态变量,它实际上是 Code2 的一个实例; Code2 本身扩展了 Code?这些都不能(甚至应该)起作用。您需要检查代码的结构并减少两个类之间的依赖关系。也许让 Code 和 Code2 扩展同一个基类?
猜你喜欢
  • 2013-01-18
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
相关资源
最近更新 更多