Cocos2d-x - 了解屏幕上的定位精灵

时间:2013-05-24 00:29:23

标签: c++ cocos2d-iphone cocos2d-x

任何人都可以提供一些关于在屏幕上放置CCSprites的基本指示吗?

示例:

CCSize s = CCDirector::sharedDirector()->getWinSize();

使用s,说我想从0开始在屏幕的最底部放置一个精灵,想想像草一样的东西。

如果我的运行速度为1024 x 768,则中间为:

setPosition( ccp(s.width/2, s.height/2) );

所以从左边和中间开始一直是:

setPosition( ccp(0, s.height/2) );

那我怎么走得更远呢?

setPosition( 0, s.height) );

这让我从左上方开始并沿着屏幕顶部停留。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:4)

位置相对于精灵的parent及其anchorPoint

对于每个坐标,

anchorPoint的范围通常为0到1,默认值为0.5。我说“一般”因为它可以是任何值,但是0-1之外的范围会使你超出精灵的范围。

例如,anchorPoint的{​​{1}}位置相对于左下角。 (0,0)位于右下方,(1,0)位于左上方,(0,1)位于右上方。 (1,1)是精灵的中心,这是默认的。

基本上你只需用宽度乘以宽度来获得相对位置。

如果你想在屏幕的最底部放置一个精灵(左下角与屏幕的左下角对齐),你可以采用多种方式,仅基于(0.5,0.5)

使用anchorPoint的默认anchorPoint,其排名为(0.5,0.5)

如果您将(sprite.contentSize.width/2, sprite.contentSize.height/2)设置为anchorPoint,则只需(0,0)即可获得相同的位置。

如果你想将精灵移动到屏幕的正中心(精灵中心正中间),(0,0)anchorpoint,则位置为{{1 }}

这是假设您要向父级添加一个精灵,它是屏幕的大小,这是定位的第二部分所在的位置。

位置也与精灵的父级相关 - 可以是任何其他(0.5, 0.5)(s.width/2, s.height/2),另一个CCNode等。

想到这一点的方式与添加全屏节点没什么不同 - 除了考虑父母的大小和位置,而不是屏幕。

答案 1 :(得分:0)

另外,只需添加一些内容,所有按钮都会从屏幕中间开始,然后您可以从那里移动它们。如果你想按(0,0):

按钮
CCLabelTTF *label1 = [CCLabelTTF labelWithString:@"Press Me!" fontName:@"Marker Felt" fontSize:20];
CCMenuItemLabel *button1 = [CCMenuItemLabel itemWithLabel:label1 block:^(id sender) {    NSLog(@"button1 pressed"); }];

button1.position = ccp(-(s.width/2) , -(s.height/2)); // <---