AS3:在影片剪辑中添加形状时未定义术语

Posted

技术标签:

【中文标题】AS3:在影片剪辑中添加形状时未定义术语【英文标题】:AS3: A term is undefined when adding a shape inside a movieclip 【发布时间】:2014-06-20 14:48:53 【问题描述】:

我有一个看起来很简单的问题。我需要创建一个形状并将其添加到另一个影片剪辑中的影片剪辑中。

我目前使用的代码如下:

var enemy_beacon:Shape = new Shape();
fullmenu_mc.menu_map_mc.addChild(enemy_beacon);

fullmenu_mc.menu_map_mc.enemy_beacon.graphics.lineStyle(1, 0xFF0000, 1);
fullmenu_mc.menu_map_mc.enemy_beacon.graphics.beginFill(0xFFBB00,1);                            
fullmenu_mc.menu_map_mc.enemy_beacon.graphics.drawCircle(50, 50, 25);                                   
fullmenu_mc.menu_map_mc.enemy_beacon.graphics.endFill();

但是,此代码会引发 Error #1010: A term is undefined and has no properties.

它似乎可以很好地创建形状,但是添加形状(通过 addChild)或访问它的任何属性会使一切变得混乱。

我已经检查了影片剪辑的实例名称,所有内容都拼写正确并且嵌套正确。

有什么想法吗?

【问题讨论】:

fullmenu_mcmenu_map_mc 都是无效引用。 fullmenu_mc.menu_map_mc.enemy_beacon.graphics 更改为 enemy_beacon.graphics 谢谢大家!两个答案都有效......安德烈,我喜欢你的解决方案,因为它让我能够按名字回忆孩子。 Karolis 和 null.point,您的解决方案不需要命名并且效果很好。除了删除它们之外,我不需要访问孩子,所以这对我的目的来说是完美的。不过,我有点困惑为什么这行得通……实例不总是需要通过它们的父级来引用吗? 【参考方案1】:

问题是你没有给你的形状命名。

fullmenu_mc.menu_map_mc 不知道名为 enemy_beacon 的变量与您添加到它的子变量中的变量相同。

以这样的方式定位孩子意味着您正在使用他们的实例名称。所以fullmenu_mc.menu_map_mc.enemy_beacon 意味着你在menu_map_mc 中搜索一个名为enemy_beacon 的孩子。在前两行中,您刚刚向该菜单项添加了 some 子项,但没有指定名称。

实例名称与您的变量不同。看看这个:

var myShape:Shape = new Shape();
myShape.name = 'otherShape';
this.addChild(myShape); // you add specific item, name doesn't matter

trace (this.getChildByName('otherShape') == myShape); // you get child by NAME
// and because the child is the same as you've added, this will output: TRUE

【讨论】:

【参考方案2】:

既然你有enemy_bacon实例,你可以直接访问它:

var enemy_beacon:Shape = new Shape();
fullmenu_mc.menu_map_mc.addChild(enemy_beacon);

enemy_beacon.graphics.lineStyle(1, 0xFF0000, 1);
enemy_beacon.graphics.beginFill(0xFFBB00,1);                            
enemy_beacon.graphics.drawCircle(50, 50, 25);                                   
enemy_beacon.graphics.endFill();

【讨论】:

以上是关于AS3:在影片剪辑中添加形状时未定义术语的主要内容,如果未能解决你的问题,请参考以下文章

访问链接属性未定义的影片剪辑

调整影片剪辑 AS3 的大小

用flash as3语言如何将影片剪辑存入一个数组以及如何访问?

在 AS3 中向子影片剪辑添加/删除事件侦听器

我动态添加的影片剪辑的名称为“instance XX”

AS3 多个(影片剪辑按钮)为一个影片剪辑设置动画