需要使用命中测试对象功能删除子项

时间:2016-06-01 06:47:54

标签: actionscript-3

我正在尝试制作一个功能,我将一些种子放入桶中,种子被移除但是该功能只是与桶碰撞的种子。

我将两个对象都作为动画片段,并且有一个基本的hitTestObject条件语句,我不知道为什么不会删除feed_mc。

    if(bucket_mc.hitTestObject(feed_mc))
    {
    if(stage.contains(feed_mc))
    removeChild(feed_mc);
    }

提前谢谢

抱歉应该在这里编辑

我的代码

   var Necessities:Array = new Array (Seed, shelter, water);

   for(var i:int = 0; i< 10; i++)
   {
   var pickObjects = Necessities[int(Math.random()* Necessities.length)];
   var Objects:MovieClip = new pickObjects();
   addChild(Objects);

   Objects.x = Math.random() + 600;
   Objects.y = Math.random() * stage.stageHeight;

   }


   stage.addEventListener(Event.ENTER_FRAME, feedHen);


   function feedHen(e:Event):void {

   if(hen_mc.hitTestObject(Objects))

   {
    if (Objects.parent)
   Objects.parent.removeChild(Objects);
   }
   }

1 个答案:

答案 0 :(得分:1)

似乎是

if(feed_mc.parent){
    feed_mc.parent.removeChild(feed_mc);
}

应该有帮助 - 如果您不确定DisplayObjectContainer是什么parent
修改
我认为这应该有效

    var Necessities:Array = new Array (Seed, shelter, water);
    //store Objects here
    var objectsVector:Vector.<MovieClip> = new Vector.<MovieClip>();
    for(var i:int = 0; i< 10; i++){
        var pickObjects = Necessities[int(Math.random()* Necessities.length)];
        var Objects:MovieClip = new pickObjects();
        addChild(Objects);      
        objectsVector.push(Objects);//add to Vector
        Objects.x = Math.random() + 600;
        Objects.y = Math.random() * stage.stageHeight;
    }

   stage.addEventListener(Event.ENTER_FRAME, feedHen);

    function feedHen(e:Event):void {
        for(var i: int = objectsVector.length - 1; i >= 0; i--){//loop through stored objects
            if(hen_mc.hitTestObject(objectsVector[i])){
                if (objectsVector[i].parent){
                    objectsVector[i].parent.removeChild(objectsVector[i]);
                    objectsVector.splice(i, 1);//remove from storage
                }
            }
        }   
    }

但是我建议检查一些鼠标事件而不是ENTER_FRAME以减少函数调用次数