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

C++ Cocos2d-x-了解屏幕上的精灵定位,c++,cocos2d-iphone,cocos2d-x,C++,Cocos2d Iphone,Cocos2d X,有人能提供一些关于在屏幕上放置ccsprite的基本提示吗 例如: CCSize s = CCDirector::sharedDirector()->getWinSize(); 对于s,假设我想在屏幕的最底部放置一个精灵,从0开始,想想草之类的东西 如果我以1024 x 768的速度运行,中间是: setPosition( ccp(s.width/2, s.height/2) ); 因此,从左到中开始将是: setPosition( ccp(0, s.height/2) ); 那么,

有人能提供一些关于在屏幕上放置ccsprite的基本提示吗

例如:

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) );
这让我从左上角开始,沿着屏幕的顶部


任何帮助都将不胜感激。

位置与精灵的父母以及主播有关

对于每个坐标,“锚点”的范围通常为0到1,默认值为0.5。我说一般是因为它实际上可以是任何值,但是0-1之外的范围将您置于精灵的边界之外

例如,0,0的锚点相对于左下角创建位置。1,0是右下角,0,1是左上角,1,1是右上角。0.5,0.5是精灵的正中心,这是默认值

基本上,只需将值乘以宽度即可得到相对位置

如果要将精灵放置在屏幕的最底部(左下角与屏幕的左下角对齐),可以通过多种方式,仅基于主播点

默认锚点为0.5,0.5时,位置将为sprite.contentSize.width/2,sprite.contentSize.height/2

如果将锚点设置为0,0,则只需0,0即可获得相同的位置

如果你想把精灵移动到屏幕中央,精灵的中心正好在中间,锚定点为0.5,0.5,位置为S.Withth/2,S.身高/ 2。 这都是假设您正在向屏幕大小的父对象添加精灵,这就是定位的第二部分

位置也是相对于精灵的父级-可以是任何其他CCNode CCLayer、另一个CCSprite等


考虑这一点的方式与添加全屏节点没有太大区别——除了考虑父节点的大小和位置,而不是屏幕。

位置是相对于精灵的父节点及其锚点的

对于每个坐标,“锚点”的范围通常为0到1,默认值为0.5。我说一般是因为它实际上可以是任何值,但是0-1之外的范围将您置于精灵的边界之外

例如,0,0的锚点相对于左下角创建位置。1,0是右下角,0,1是左上角,1,1是右上角。0.5,0.5是精灵的正中心,这是默认值

基本上,只需将值乘以宽度即可得到相对位置

如果要将精灵放置在屏幕的最底部(左下角与屏幕的左下角对齐),可以通过多种方式,仅基于主播点

默认锚点为0.5,0.5时,位置将为sprite.contentSize.width/2,sprite.contentSize.height/2

如果将锚点设置为0,0,则只需0,0即可获得相同的位置

如果你想把精灵移动到屏幕中央,精灵的中心正好在中间,锚定点为0.5,0.5,位置为S.Withth/2,S.身高/ 2。 这都是假设您正在向屏幕大小的父对象添加精灵,这就是定位的第二部分

位置也是相对于精灵的父级-可以是任何其他CCNode CCLayer、另一个CCSprite等


想这个方法和添加一个全屏节点没有什么不同——除了考虑父的大小和位置,而不是屏幕。

也只是添加一些东西,所有的按钮都在屏幕中间开始,然后你可以把它们移到那里。如果要将按钮设置为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)); // <---

也只是添加一些东西,所有的按钮都在屏幕中间开始,然后你可以把它们从那里移开。如果要将按钮设置为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)); // <---

我想我明白了,尝试了一些实验!我仍然有点挣扎,你有没有在左下角设置一些东西,然后在右下角设置一些东西的例子?setAnchor0,0似乎是左下角,但0,1似乎不是右下角,或者可能有东西被移出屏幕。试图找出答案。SetAnchor0,1不会将精灵移动到屏幕的右下角,它会使精灵的位置相对于精灵的右下角。因此,如果您设置Anchor0,1,并希望将其放置在屏幕的右下角,其位置将是ccpwinSize.width,0;我想我明白了,尝试了一些实验!我仍然有点挣扎,你有没有在左下角设置一些东西,然后在右下角设置一些东西的例子?setAnchor0,0似乎位于左下角,但0,1似乎不在左下角
右下角,否则可能会有东西从屏幕上移开。试图找出答案。SetAnchor0,1不会将精灵移动到屏幕的右下角,它会使精灵的位置相对于精灵的右下角。因此,如果您设置Anchor0,1,并希望将其放置在屏幕的右下角,其位置将是ccpwinSize.width,0;