Установите порядок CCNode z

#objective-c #xcode #cocos2d-iphone #spritebuilder

#цель-c #xcode #cocos2d-iphone #spritebuilder

Вопрос:

Я хочу установить порядок z для одного CCNode, но я пробовал эти три варианта, и это не работает:

 myNode.zOrder = 10;

myNode.physicsNode.zOrder = 10;

[myScene reorderChild:myNode z:10];
 

Также myNode.physicsNode.zOrder устанавливает порядок всех CCNodes, которые находятся внутри CCPhysicsNode, независимо от того, какой узел является myNode.

Спасибо за все!

Ответ №1:

Установки zOrder свойства должно быть достаточно. Помните, что узлы с более высоким zOrder значением отображаются впереди.

Я только что успешно протестировал это:

     CCSprite *sprite1 = [CCSprite spriteWithImageNamed:@"image1.png"];
    sprite1.position = ccp(100, 100);
    [self addChild:sprite1];

    CCSprite *sprite2 = [CCSprite spriteWithImageNamed:@"image2.png"];
    sprite2.position = ccp(110, 110);
    [self addChild:sprite2];

    sprite2.zOrder = -10; // second sprite goes behind
 

Комментарии:

1. Это верно, но моя проблема не в визуализации. Сложность заключается в том, когда я перетаскиваю спрайты. Я могу поставить один перед другим, но когда я попытался перетащить:

2. Это верно, но моя проблема не в визуализации. Сложность заключается в том, когда я перетаскиваю спрайты. Я могу поместить один перед другим, например, sprite1 находится в z = 2, а sprite2 — в z = 1, а с помощью .zOrder я меняю его на sprite1 в z = 1 и sprite2 в z = 2. Но когда я пытаюсь перетащить sprite2, он теперь находится впереди из sprite1 я не могу, вместо этого я перетаскиваю sprite1, и я должен убрать его, чтобы перетащить sprite2, независимо от того, находится ли он спереди.