2013-09-07 4 views
0

Я хочу повернуть CCLabelTTF вокруг его центра.Повернуть вокруг центра CCLabelTTF как точка achnor

Но это не похоже на это. Это больше похоже на поворот в нижней части CCLabelTTF.

Код:

CCLabelTTF *aLabel ... init/addChild and so on 

CCRotateBy *rotateLabelA = [[CCRotateBy alloc] initWithDuration:0.5f angle:-60.0f]; 

aLabel.string = @"0"; 
aLabel.anchorPoint = ccp(0.5f, 0.5f); 
[aLabel runAction:rotateLabelA]; 

Как повернуть письмо вокруг своего видимого центра, если это CCLabelTTF?

я был в состоянии сделать граничную коробку с CCLabelTTF видимыми:

cclabelttfboundingbox

Как видно на изображении, ограничивающий прямоугольник намного больше. Но нет формулы для определения середины буквы.

+0

Может показать нам, как вы создаете свои действия CCRotate? –

+0

Да, конечно, спасибо. – Binarian

ответ

0

Я узнал, как найти среднюю точку в CCLabelTTF:

float fontSize = bLabel.fontSize; // actual Font size in pixels 
    float labelHeight = bLabel.contentSize.height; // actual label height (the same as boundingBox.size.height) 
    float offset = labelHeight - fontSize; // the free room under the font 
    float halfFontSize = fontSize/2; 
    float percentMiddleOfFont = (halfFontSize + offset)/labelHeight; 

    bLabel.anchorPoint = ccp(0.5f, percentMiddleOfFont); 
1

Если вы установили anchorPoint = cpp(0.5f,0.5f) в некоторый объект ccNode, он будет вращаться вокруг своего центра, который вычисляется с использованием свойства boundingBox.

Проблема заключается в том, что ограничение boundBox.size.height метки отличается от фактической высоты. Вот почему он вращается не вокруг центра.

Я не уверен в таком решении для руководства, но он работал для меня когда-нибудь.

CCLabelTTF *label = [CCLabelTTF labelWithString:@"0" fontName:@"Marker Felt"fontSize:24]; 
    label.position = ccp(winSize.width /2.0f, winSize.height/2.0f); 

    float fontSize = label.fontSize; // actual Font size 
    float labelHeight = label.contentSize.height; // actual label height (the same as boundingBox.size.height 
    float offset = (labelHeight - fontSize - (labelHeight - fontSize)/2.0f)/labelHeight/2.0f; 
    label.anchorPoint = ccp(0.5f, 0.5f + offset); 

    [layer addChild:label]; 
    [label runAction:[CCRotateBy actionWithDuration:10.0f angle:-360]]; 
+0

Он выглядит лучше, чем anchorPoint 0.5, 0.5, но это не центр. Я постараюсь понять, что вы сделали, может быть, я смогу узнать, что мне нужно. – Binarian

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