0

我收到错误:

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

它所指的术语是创建的影片剪辑。创建代码如下:

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

这是访问它的地方:

GameMenu.Cursor.gotoAndStop(1);

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

有谁知道这可能是什么原因造成的?

4

3 回答 3

0

您已经定义了变量cursornew CursorImg()然后将其添加到gameMenu并尝试访问gameMenu.cursor,但实际上该电影中没有gameMenu名称为 的对象cursor。但是,您可以使用您定义的变量简单地访问附加的电影cursor

cursor.gotoAndStop(1);

在 AS3 中,您不能像我们在 AS2 中那样通过名称访问动态添加的影片剪辑。您只能借助类getChildByName()功能访问电影MovieClip。因此,您还可以访问该影片剪辑,例如

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

然后在您class喜欢的任何地方访问它

var cursor:MovieClip = gameMenu.getChildByName("cursor") as MovieClip;
cursor.gotoAndStop(1);

仅供参考:添加到 stage 的任何东西通常都打包在 下DisplayObject,因此我们需要对其进行类型转换以获得正确的类型。

命名名称可能更好地练习驼峰variable式风格,因为标准方式是用于变量的驼峰式,并且仅对于 Class,每个单词的第一个字母应该是CAPITAL

于 2012-10-04T04:52:39.570 回答
0

发布的信息数量有限,很难知道发生了什么,但看起来 Cursor 不是 GameMenu 的属性,只是一个孩子。

尝试这个:

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

和:

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

这并不是真正实现您想要的最佳方式,但其他方法取决于我不知道的代码结构。

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

于 2012-10-04T04:02:41.537 回答
0

给定您的代码片段,该Cursor变量是函数本地的,因为它是在某个函数内部定义的,而不是在任何函数外部定义的,这样它将成为一个类的属性。因此,将前者分离var cursor:MovieClip;cursor=new CursorImg();放在任何功能之外,并再次测试。我想你需要经常引用那个“光标”,这样getChildByName调用会以某种方式降低性能。

于 2012-10-04T05:57:38.950 回答