центрирование спрайта в центре экрана convertToWorldSpace / NodeSpace - PullRequest
0 голосов
/ 14 декабря 2011

Я провел много-много дней на эту проблему, я не очень понимаю, что делает convertToWorldSpace, convertToNodeSpace ...

У меня есть 2 слоя (CCNode), который я могу масштабировать, один для панорамирования экрана, поэтому я всегда масштабирую то, что отображается, делая центр масштабирования середины экрана:

scaleLayer=[CCNode node];
scaleLayer.position= ccp( size.width /2 , size.height/2 );
[self addChild:scaleLayer z:-2000];

panLayer=[CCNode node];
panLayer.position= ccp( -size.width /2 , -size.height/2 );
[scaleLayer addChild:panLayer z:-2000];

Теперь я добавляю спрайты в панель управления: [panLayer addChild: mysprite z: 2];

Мне бы хотелось иметь кнопку, которая при нажатии перемещает панель, чтобы спрайт оказался посередине экрана. я написал это, но работает, только если scaleLayer.scale = 1

CGPoint p;
p=[panLayer convertToWorldSpace:mysprite.position];
p.x=(panLayer.position.x+(240-p.x));
p.y=(panLayer.position.y+(160-p.y));
[panLayer runAction:[CCMoveTo actionWithDuration:0.5 position:p]];

как сделать так, чтобы спрайт был в центре экрана с разными масштабами? спасибо

1 Ответ

0 голосов
/ 18 декабря 2011

Я не уверен, что делает ваш существующий код, но вы можете найти свойство mysprite.boundingBox полезным.Он даст вам CGRect с шириной и высотой спрайта и положением его нижнего левого угла, и он будет отражать любой масштаб, который вы применили к спрайту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...