AS3 - 奇怪的错误1010发生

时间:2012-10-04 02:26:53

标签: actionscript-3 typeerror

我收到错误:

TypeError: Error #1010: A term is undefined and has no properties.

它所指的术语是一个创建的动画片段。创建代码如下:

var Cursor = new CursorImg();
GameMenu.addChild(Cursor);

以下是访问它的地方:

GameMenu.Cursor.gotoAndStop(1);

我不知道这有什么问题,但是当这被触发时,我得到了那个错误。我将它与其他有效的代码进行了比较,除了movieclip及其父代的命名外,它完全相同。

有谁知道造成这种情况的原因是什么?

3 个答案:

答案 0 :(得分:0)

很难知道发布的信息数量有限,但看起来Cursor不是GameMenu的财产,只是一个孩子。

试试这个:

var cursor = new CursorImg();
gameMenu.addChild(cursor);
cursor.name = "cursor";

gameMenu.getChildByName("cursor").gotoAndStop(1);

这不是实现你想要的最好的方法,但其他方法取决于我不知道的代码结构。

另请注意,变量名称的AS3编码约定是使用camelCase(第一个字首字母小写,第一个字母的下一个单词大写)。

答案 1 :(得分:0)

您已经按cursor定义了变量new CursorImg(),然后将其添加到gameMenu并尝试访问gameMenu.cursor但实际上该电影中没有对象{{ 1}}名称为gameMenu。但是,您只需使用您定义的变量cursor访问附加的影片。

cursor

在AS3中,您不能像我们在AS2中所做的那样使用它的名称来访问动态添加的动画片段。您只能借助cursor.gotoAndStop(1); 类的getChildByName()功能来访问电影。因此,您也可以访问像

这样的动画片段
MovieClip

然后在var cursor = new CursorImg(); gameMenu.addChild(cursor); cursor.name = "cursor"; 中的任意位置访问

class

仅供参考:添加到舞台的任何内容通常打包在var cursor:MovieClip = gameMenu.getChildByName("cursor") as MovieClip; cursor.gotoAndStop(1); 下,因此我们需要对其进行类型转换才能获得正确的类型。

使用 camelCase 样式来命名DisplayObject名称可能更好,因为标准方式是 camelCase 用于vaiables,而且只用于Class的每个单词的第一个字母应 CAPITAL

答案 2 :(得分:0)

鉴于你的代码片段,Cursor变量是函数本地的,因为它在某个函数中定义而不是在任何函数之外定义,这样它就是类的属性。因此,将var cursor:MovieClip;cursor=new CursorImg();分开并将前者置于任何函数之外,然后再次测试。我想你需要经常引用那个'光标',这样getChildByName调用会以某种方式降低性能。