2016-06-01 13 views
2

Ich versuche, eine Funktion zu machen, wo ich einige Samen in einen Eimer fallen lassen und die Samen werden entfernt, aber die Funktion wird nur die Samen kollidieren mit dem Eimer.Notwendigkeit, ein Kind mit Hit-Test-Objekt-Funktion zu entfernen

Ich habe beide Objekte als movieclips und habe eine grundlegende hitTestObject bedingte Anweisung, ich habe keine Ahnung, warum die feed_mc nicht entfernt wird.

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

danken Ihnen im Voraus

Leider hier bearbeitet haben

sollte

meinen Code

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

und 'stage.contains (feed_mc)' ist 'true'? versuche 'stage.removeChild (feed_mc)' wenn ja – www0z0k

+0

Ich habe feed_mc auf der Bühne, also denke ich, dass es wahr ist, da die Bühne es enthält. Das stage.removeChild (feed_mc) hat nicht funktioniert, es passiert es immer noch – vectorfox

+0

'trace (feed_mc.parent);' zeigt das übergeordnete 'DisplayObjectContainer' an. – www0z0k

Antwort

1

Scheint, wie

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

helfen sollte - wenn Sie nicht sind s ure, was DisplayObjectContainerparent
ist bearbeiten
Ich denke, das

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 
       } 
      } 
     } 
    } 

Jedoch habe ich von ENTER_FRAME stattdessen auf einige Mausereignisse würde vorschlagen, dass die Überprüfung funktionieren sollte Anzahl der Funktion zu reduzieren ruft

+0

Ich habe scheinen, um Filmclips gelöscht werden, wenn mit ActionScript 3 über sie auf der Bühne vor dem Ausführen des Spiels hinzugefügt hinzugefügt. Es wird jedoch nur einen bestimmten Videoclip entfernt, hier ist mein Code. var Notwendigkeiten: Array = neues Array (Seed, Shelter, Wasser); für (var i: int = 0; i <10; i ++) { \t var pickObjects = Notwendigkeiten [int (Math.random() * Notwendigkeiten.Länge)]; \t var Objekte: MovieClip = new pickObjects(); \t addChild (Objekte); \t \t Objects.x = Math.random() + 600; \t Objects.y = Math.random() * stage.stageHeight; \t } – vectorfox

+0

Ich habe versucht, den Code jedoch einige meiner Texte gelöscht werden die Objekte scheinen an der Spitze und vor allem aus dem Bildschirm laichen und ich bekomme diese Fehler. TypeError: Fehler # 1006: Push ist keine Funktion. \t bei littleredhen_fla :: MainTimeline/frame2() \t bei flash.display :: MovieClip-/gotoAndStop() \t bei littleredhen_fla :: MainTimeline/gogo() – vectorfox

+0

@vectorfox aktualisiert, gibt es einen Tippfehler – www0z0k

Verwandte Themen