2015-04-21 5 views
0

Хорошо, ребята, вот сделка.Невозможно добавить детский спрайт на масштабируемый объект

aboutBackground = Sprite::create("fadeBack.png"); 
aboutBackground->setScale(winSize.width, winSize.height); 
aboutBackground->setPosition(winSize.width*0.5, winSize.height*0.5); 
this->addChild(aboutBackground); 

Sprite *sprAboutPanel = Sprite::create("aboutPanel.png"); 
sprAboutPanel->setPosition(aboutBackground->getBoundingBox().size.width*0.5, aboutBackground->getBoundingBox().size.height*0.5); 
aboutBackground->addChild(sprAboutPanel); 

Перед масштабированием aboutBackground спрайта он прекрасно работает. Но так как aboutBackground - это просто угасающий фон, я решил пойти с изображением 1px и масштабировать его до полного экрана. Но сейчас sprAboutPanel не появляется на экране. Я действительно удивляюсь, почему? Thx для ваших ответов!

+0

Вы знаете, 'позиционирование sprAboutPanel' будет относительно' позиции aboutBackground' в? Попробуйте масштабировать 'aboutBackground' половину' winsize' и отсылайте свои наблюдения. – Emadpres

ответ

1

Один трюк, который вы можете использовать в этом случае, - это не добавлять панель о себе в качестве дочернего элемента фона, а скорее вместо сцены. Масштабирование родителя делает сложным позиционирование детей, поскольку позиции масштабируются. Вероятно, вы обнаружите, что в своем коде, если вы установите положение aboutPanel на (0,5,0,5), он, вероятно, будет работать так, как ожидалось.

Я бы вместо того, чтобы изменить:

aboutBackground->addChild(sprAboutPanel); 

к этому:

this->addChild(sprAboutPanel); 
Смежные вопросы