2016-06-01 39 views
2

我想做一個功能,我將一些種子放入一個桶中,然後刪除種子,但是該功能只是種子與桶相碰撞。需要刪除一個孩子使用命中測試對象功能

我有這兩個對象作爲影片剪輯,並有一個基本的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); 
    } 
    } 
+0

和'stage.contains(feed_mc)'是'true'?嘗試'stage.removeChild(feed_mc)'如果是的話 – www0z0k

+0

我在舞臺上有feed_mc,所以我想它是真的,因爲舞臺包含它。 stage.removeChild(feed_mc)不起作用,仍然只是越過它 – vectorfox

+0

'trace(feed_mc.parent);'將顯示父'DisplayObjectContainer'。 – www0z0k

回答

1

好像

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

應該幫助 - 如果你不小號URE是什麼DisplayObjectContainerparent
編輯
我認爲這應該工作

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檢查,以減少函數調用次數

+0

我似乎已經使用actionscript 3添加了在運行遊戲之前在舞臺上添加動畫片段時刪除了影片剪輯。但它只會刪除1個特定的影片剪輯,這裏是我的代碼。 var必要性:Array = new Array(Seed,shelter,water); (var i:int = 0; i <10; i ++) var長度)]; \t var對象:MovieClip = new pickObjects(); \t addChild(Objects); \t \t Objects.x = Math.random()+ 600; \t Objects.y = Math.random()* stage.stageHeight; \t } – vectorfox

+0

我試了一下代碼,但是我的一些文本被刪除了,對象似乎在上面產生,大部分都在屏幕之外,以及我得到這些錯誤。 TypeError:錯誤#1006:push不是函數。 \t在littleredhen_fla :: MainTimeline /幀2() \t在flash.display使用::影片剪輯/ gotoAndStop() \t在littleredhen_fla :: MainTimeline/GOGO() – vectorfox

+0

@vectorfox更新,有一個錯字 – www0z0k