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_mc
或 menu_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:在影片剪辑中添加形状时未定义术语的主要内容,如果未能解决你的问题,请参考以下文章