2013-10-04 5 views
7

Dodaję duszkiem do rodzica i pojawia się on na ekranie. Jednak pomimo mojego parametru zPosition, dziecko znajduje się na jego rodzica. Muszę go uzyskać zgodnie z definicją w zPosition.Czy mogę umieścić dziecięcy duszek poniżej jego rodzica za pomocą zPosition

Zostanie on umieszczony poprawnie, jeśli dodasz ikonkę do siebie, ale nie jako dziecka do "hjNode".

Obecny wynik jest taki, że d5Node, element potomny, jest umieszczony nad węzłem hjNode (rodzic).

ZPozycja działa wśród dodanych dzieci podczas dodawania dodatkowego dziecka.

Podczas czytania przewodnika po programowaniu odczuwam, chyba że coś przeoczyłem, że może to być problem.

Czy ktoś wie, czy jest to możliwe?

-(id)initWithSize:(CGSize)size {  
if (self = [super initWithSize:size]) { 


    self.userInteractionEnabled = YES; 

    SKSpriteNode *hjNode = [SKSpriteNode spriteNodeWithImageNamed:@"Hj"]; 
    hjNode.position = CGPointMake(150, 300); 
    hjNode.zPosition = 100; 
    hjNode.name = @"hjNode"; 
    [self addChild:hjNode]; 

    SKSpriteNode *d5Node = [SKSpriteNode spriteNodeWithImageNamed:@"D5"]; 
    //d5Node.position = CGPointMake(170, 320); 
    d5Node.position = CGPointMake(-10, -20); 
    d5Node.zPosition = 1; 
    d5Node.name = @"d5Node"; 
    [hjNode addChild:d5Node]; 
} 
return self; 
} 

Odpowiedz

9

Powinno być możliwe, ale nawet jeśli nie istnieje lepsze rozwiązanie, które daje większą elastyczność w dłuższej perspektywie.

Zamiast dodawać dwa sprite podrzędne do węzła sprite, utwórz zwykły SKNode i dodaj wszystkie trzy sprite jako dzieci. W ten sposób możesz je dowolnie rozmieszczać w dowolny sposób, podczas gdy wszystkie trzy będą śledzić zmiany położenia ich węzła nadrzędnego.

+0

Świetne, dziękuję Steffenowi :-) – PeterK

25

Aby dodać do tego, jeśli chcesz to zrobić w oryginalny opisany sposób, dałbyś dzieciom ujemne zPosition.

Zgodnie z SpriteKit Programming Guide, zPosition dzieci są względne do wysokości rodziców. Z pytania, d5Node, faktycznie ma zPosition = 101 nie 1. Ustawienie zPosition = -1 spowoduje zPosition 99.

+4

To powinna być akceptowana odpowiedź, jest na temat i szybko. – Dvole

0

Dzieci są zawsze na wierzchu swoich rodziców (prawdziwe w życiu i Sprite!) .

Pozycja zPozwala się tylko na dzieci w tym samym węźle. Dlatego musisz dodać Hj i D5 do tego samego węzła, do którego dodajesz rodzica; aby włączyć zPosition obiektu nadrzędnego względem pozostałych dwóch węzłów.

Jako że LearnCocos2D zasugerował, że może być łatwiej wprowadzić dodatkowy węzeł (jednak LearnCocos2D sugerował, że oryginalny kod zadziała - nie będzie).

Powiązane problemy