2010-04-14 4 views
0

Im en utilisant le code suivant pour placer un objet dans un conteneur:AS3: objet enfant extérieur parent

testParent = new MovieClip(); 
testParent.graphics..beginFill(0x0000FF); 
testParent.graphics.drawRect(50, 50, 300, 300); 
testParent.graphics.endFill(); 
addChild(testParent); 

testChild = new MovieClip(); 
testChild.graphics..beginFill(0xFF0000); 
testChild.graphics.drawRect(0, 0, 100, 100); 
testChild.graphics.endFill(); 
testParent.addChild(testChild); 

cela donne l'objet testParent une marge de 50 de haut et à gauche. L'objet testChild doit avoir la même marge par rapport à la scène. Mais doesnt .. L'objet enfant est à 0,0 par rapport à la scène. Qu'est-ce qui cause cela? ...

Répondre

2

Vous ajoutez testChild à testParent, pas à l'objet rectangle qui se trouve dans testParent.

Par conséquent, le testChild sera à 0,0 par rapport à testParent (et non le rectangle, thats un objet distinct)

En d'autres termes, le dessin d'un rectangle à l'intérieur testParent ne donne pas « marges » en tant que telle .

Vous pouvez essayer d'avoir un troisième objet, pour représenter le rectangle, puis ajoutez testChild au rectangle (et ajouter le rectangle à la testParent)

Ou, vient de mettre en x et y de testChild de sorte que son dans la position que vous voulez.

NB: Je n'ai pas AS3 à portée de main en ce moment pour tester ceci, mais je pense que c'est ce qui se passe

0

Merci, na pas savoir. Maintenant, je comprends .. Pour avenir d'info, cela fonctionne:

testParent = new MovieClip(); 
testParent.graphics.beginFill(0x0000FF); 
testParent.graphics.drawRect(0, 0, 300, 300); 
testParent.graphics.endFill(); 
testParent.x = 50; 
testParent.y = 50; 
addChild(testParent); 

testChild = new MovieClip(); 
testChild.graphics.beginFill(0xFF0000); 
testChild.graphics.drawRect(0, 0, 100, 100); 
testChild.graphics.endFill(); 
testParent.addChild(testChild); 
0

en fait, techniquement, il devrait être

 
testParent = new MovieClip(); 
testParent.graphics.beginFill(0x0000FF); 
testParent.graphics.drawRect(50, 50, 300, 300); 
testParent.graphics.endFill(); 
addChild(testParent); 

testChild = new MovieClip(); 
testChild.graphics.beginFill(0xFF0000); 
testChild.graphics.drawRect(0, 0, 100, 100); 
testChild.graphics.endFill(); 
testChild.x = 50; 
testChild.y = 50; 
testParent.addChild(testChild);