removeChild不要删除对象的子级

时间:2018-12-11 19:03:54

标签: actionscript-3 actionscript

我有一个由blue_robot调用的影片剪辑,该影片剪辑有一个由right_hand调用的子级,我想删除此right_hand子级,但是删除Child时不要删除它。 这是我的动作脚本代码:

var robot:blue_robot=new blue_robot();
addChild(robot);
removeChild(robot.right_hand);

我尝试这样做,但给我错误类型错误:错误#2007:参数子级必须为非空。

2 个答案:

答案 0 :(得分:1)

由于right_handrobot的子代,因此您必须使用漫游器的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();

↑要将右手从机器人父级上移开。