我有一个由blue_robot调用的影片剪辑,该影片剪辑有一个由right_hand调用的子级,我想删除此right_hand子级,但是删除Child时不要删除它。 这是我的动作脚本代码:
var robot:blue_robot=new blue_robot();
addChild(robot);
removeChild(robot.right_hand);
我尝试这样做,但给我错误类型错误:错误#2007:参数子级必须为非空。
答案 0 :(得分:1)
由于right_hand
是robot
的子代,因此您必须使用漫游器的remove子代方法:
robot.removeChild(robot.right_hand);
这告诉robot
实例删除一个robot.right_hand
中引用的对象(如果是子对象)。
之前,您要告诉父上下文(示例代码中的this
)删除right_hand
,但是right_hand
不是this
的子元素,它是robot
的孩子。
您发布的错误意味着引用robot.right_hand
不存在。
仔细检查您是否确实存在一个实例名称或属性right_hand
,该实例名称或属性存在并且在第一帧(如果创建了时间轴)或构造函数(如果创建了代码)上具有值。
答案 1 :(得分:0)
尝试一下:
robot.removeChild(robo.getChildByName("right_hand"));
但是最好从blue_robot类内部移走右手。您应该使用面向对象的功能。这意味着blue_robot必须自行完成与其自身相关的任何事情。所以结果应该像下面这样:
class blue_robot extends MovieClip{
private var myRightHand:MovieClip ;
public blue_robot()
{
super();
myRightHand = this.getChildByName("right_hand");
}
public function removeRightHand():void
{
this.removeChild(myRightHand);
}
}
↑对于blue_robot类和
var robot:blue_robot=new blue_robot();
addChild(robot);
robot.removeRightHand();
↑要将右手从机器人父级上移开。