Fondamentalement, j'ai deux routines: L'une est une vérification de collision CDK, et l'autre est une vérification générique d'un tableau. Ils sont tous deux dans le même événement de minuterie. Il y a deux tableaux - collisionList et MasterArray, et l'objet est dans les deux.Impossible de "removeChild" après avoir référencé l'objet précédemment
Tout d'abord, la routine de collision:
var collisions:Array = collisionList.checkCollisions();
for(var i:uint = 0; i < collisions.length; i++)
{var firstShape: Sprite = collisions [i] .object1; If (firstShape.name == "Obj1") {
collisions [i] .object1.x = -20; collisionList.removeItem (collisions [i] .object1); }}
Ensuite, je dois:
for each(var i in MasterArray) {
Shape1:Sprite = MasterArray[i];
si (i.x < 0) { removeChild (Shape1); MasterArray.splice (this, 1); }
}
Mais cela ne fonctionne pas. Cela me donne un énorme accident. Si je ne change pas l'objet x dans la routine de collision, au moment où il est sorti de l'écran par une autre fonction, il disparaît et tout va bien. Cependant, même si je viens de le toucher avec la routine de collision (par exemple, si je déclare que je veux que son x soit à 20), la prochaine fois que quelque chose se passe et le déplace à < 0, j'obtiens le même crash .
Si je ne fais rien sur la vérification de MasterArray et que je fais un removeChild lors de la vérification de collision, cela fonctionne bien aussi.
C'est l'erreur que je reçois dans les deux cas:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
à flash.display :: DisplayObjectContainer/removeChild() à game2_Scene1_fla :: MainTimeline/Contrôlehoraire() à flash.utils :: minuterie/_timerDispatch() at flash.utils :: Minuteur/tick()
Merci!
En fait, que removeChild (Shape1) est juste cela, ignorez le collisionList avant - c'est la saleté de quand je nettoyais. Cela ne fonctionne pas malgré tout. – Carlo
@Carlo: alors, à quoi ressemble votre code problème maintenant? – www0z0k