2016-04-29 5 views
0

J'ai besoin d'aide pour quelque chose avec ActionScript pour l'école. C'est un jeu d'attrape simple. Il continue à dire que mon objet affiché doit être un appelant de l'enfant ce qu'il devrait être et ça fonctionne mais je ne sais pas comment résoudre le problème où mon objet lapin tombe à travers mon personnage ponctuel et me donne une erreur quand il entre en collision avec le caractère de point et quand il frappe le sol quand il n'est pas pris. L'enfant devrait exister mais je suppose que non. Je ne sais pas quoi faire. Les choses commentées étaient des choses que j'avais testées sur un autre fichier et transférées pour voir ce qu'elles feraient.Erreur # 2025: Le DisplayObject fourni doit être un enfant de l'appelant

//Block = Asuka 
//Ball = Bunny 
//Ballz = Bunz 
//Bunny is linked in library 
import flash.events.Event; 

var intervalBunny = setInterval(addBunny, 1000); 

var bunz: Array = []; 

function addBunny() { 
    var bunny: Bunny = new Bunny(); 
    bunny.x = Math.ceil(Math.random() * 500); 
    bunny.y = -50; 
    addChild(bunny); 
    bunz.push(bunny); 
    bunny.addEventListener(Event.ENTER_FRAME, dropBunny); 
} 

function dropBunny(e: Event) { 
    var b: Bunny = Bunny(e.target); 
    b.y += 10; 
    if (b.y > 400) { 
     eliminatebunz(b); 
    } 
} 

stage.addEventListener(Event.ENTER_FRAME, moveAsuka); 

function moveAsuka(e: Event) { 
    Asuka.x = mouseX; 
    for (var i: int = 0; i < bunz.length; i++) { 
     trace(i); 
     if (Asuka.hitTestObject(bunz[i])) { 
      eliminatebunz(bunz[i]); 
      //points 
     } 
    } 
} 

function eliminatebunz(p) { 

    p.removeEventListener(Event.ENTER_FRAME, dropBunny); 
    removeChild(p); 
} 

Voici le code Toute aide sur la façon de réparer serait grandement apprécié, d'autant plus que je ne suis pas un grand codeur et je suis plus d'un artiste/illustrateur

+0

Le problème se situe dans la ligne removeChild(). D'une certaine manière, vous retirez le lapin deux fois. Il semble probable que votre moveAsuka détecte un coup après que dropBunny appelle eliminBunz. –

+0

Que ferais-je pour que ça ne fasse pas ça? Ai-je comme un parent.Removechild ou quelque chose vers la fin? si vous voulez un visuel de ce qu'il se passe quand je joue au jeu, j'ai un lien https://twitter.com/RyuGoomba/status/726095888402268160 –

Répondre

0

Il suffit de faire ceci:

function eliminatebunz(p) 
{ 
    if(p) 
    { 
     p.removeEventListener(Event.ENTER_FRAME, dropBunny); 
     if(p.parent) 
     { 
      removeChild(p); 
     } 
    }   
} 
+0

Oh mon dieu, merci beaucoup, la seule chose qui vexe légèrement est les points que j'ai ajoutés, mais merci, il fonctionne comme il se doit –