AS3:在动画片段中添加形状时,术语未定义

时间:2014-05-04 06:09:14

标签: actionscript-3 flash actionscript movieclip addchild

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

我目前使用的代码如下:

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)或访问其任何属性会使一切变得混乱。

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

问题是你没有给你的Shape命名。

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

针对这样的孩子意味着您正在使用他们的实例名称。因此,fullmenu_mc.menu_map_mc.enemy_beacon表示您正在enemy_beacon内搜索名为menu_map_mc的儿童。在前两行中,您刚刚将某些子项添加到该菜单项,但未指定名称。

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

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

答案 1 :(得分:0)

由于你有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();