2012-10-09 3 views
0

Avec le code ci-dessous ..AS3 « avec » et syntaxe « removeChild »

var testContainer = new Sprite(); 
addChild(testContainer); 

var testSprite = new Sprite(); 
testSprite.name = "sim": 
testContainer.addChild(testSprite); 

Je suis un peu confus quant à la raison pour laquelle l'appel suivant renvoie une erreur nul enfant:

testContainer.removeChild(getChildByName("sim")); 

Pourtant, le code suivant ne fonctionne pas et en fait fonctionne exactement comme prévu:

with(testContainer) 
{ 
    removeChild(getChildByName("sim")); 
} 

quelqu'un peut-il faire la lumière sur ce que je supposais quand vous n'êtes pas jeté En utilisant une référence en utilisant with, il préfixe simplement les appels de fonction que vous lui fournissez.

Répondre

3

Vous devez appeler removeChild à partir du conteneur comme ci-dessous. testContainer.removeChild(testContainer.getChildByName("sim"));

+0

Toutes mes excuses j'avais fait une faute de frappe dans ma question, vous avez encore frappé le clou sur la tête mais, je dois le préfixe 'getChildByName 'avec l'objet parent aussi. Merci beaucoup! –

1

Une mise en œuvre d'usage général, vous pouvez l'utiliser comme méthode de niveau supérieur:

function removeChildFromParent(d:DisplayObject):DisplayObject { 
    if (!d || !d.parent) return d; 

    return d.parent.removeChild(d); 
}