2011-12-21 3 views
0

Что-то очень странно в моем приложении. Должно быть, я просмотрел эту линию бесчисленное количество раз, и я клянусь, что не вижу в этом ничего плохого. В значительной степени нажатием кнопки этот код будет выполнен, а спрайт A должен сидеть на вершине спрайта B.(Cocos2D) Спрайт не отлично сидит поверх другого спрайта?

Нет. Я не могу просто сделать setPosition на место, так как спрайт A будет перемещаться вместе со спрайтом B поверх нее во время анимации.

Так что происходит здесь, это то, что спрайт А заканчивается как 30 пикселей слишком высоко над вершиной спрайта Б. Я не знаю, почему это так. Это мой код, чтобы сделать это:

spriteA.position = ccp(cgpoint.x , spriteB.position.y + spriteB.boundingBox.size.height/2 + spriteA.contentSize.height/2); 

Так что же происходит здесь я устанавливаю положение X Sprite элементов а к CGPoint, что не относится к этому вопросу, но я могу установить Y позицию в текущей позиции spriteB в, то я добавляю половину высоты spriteB, чтобы учесть проблему с якорной точкой, а затем, наконец, добавляю половину высоты spriteA, чтобы она сидела на вершине spriteB во время анимации.

Есть ли причина, по которой это не работает, как я хочу?

Спасибо!

ответ

1

используется BoundingBox для одного спрайта и contentSize для других:

spriteB.boundingBox.size.height/2 + spriteA.contentSize.height/2 

Ваш spriteA уменьшено любым шанс?

+0

Да, это была моя проблема! Не могу поверить, что я этого раньше не видел! :) –

1

Если вы хотите установить верхнюю часть спрайта B, вы должны позаботиться о заказе спрайта z. если A имеет больше z значение A будет вершиной B, когда A и B имеют одинаковое положение и опорную точку.

Вы можете установить значение Z при добавлении ребенка Как это:

[self addChild:spriteA z:1 tag:<tagValue int>]; 
[self addChild:spriteB z:0 tag:<tagValue int>]; 
+0

Значение Z не является проблемой. Это связано с позиционированием спрайтов. Это должно выглядеть так, как спрайт B находится поверх спрайта A. –

+0

Вы выполняете какое-то действие на B Sprite .. если да, остановитесь, прежде чем позиционировать его. – Haroon

Смежные вопросы