【问题标题】:Cocos2d-x - Understanding positioning sprites on screenCocos2d-x - 了解屏幕上的定位精灵
【发布时间】:2013-05-24 00:29:22
【问题描述】:

谁能提供一些关于在屏幕上放置 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) );

这让我从左上角开始,一直停留在屏幕顶部。

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    位置相对于精灵的parent,以及它的anchorPoint

    anchorPoint 每个坐标的范围一般为 0 到 1,默认为 0.5。我说“一般”是因为它实际上可以是任何值,但 0-1 之外的范围会使您超出精灵的范围。

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

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

    如果您想将精灵放置在屏幕的最底部(左下角与屏幕的左下角对齐),您可以通过多种方式进行操作,仅基于anchorPoint

    使用(0.5,0.5) 的默认anchorPoint,位置将是(sprite.contentSize.width/2, sprite.contentSize.height/2)

    如果将anchorPoint设置为(0,0),则只需(0,0)即可获得相同的位置。

    如果您想将该精灵移动到屏幕的最中心(精灵的中心在中间),anchorpoint(0.5, 0.5),则位置将是 (s.width/2, s.height/2)

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

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

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

    【讨论】:

    • 我想我明白了,尝试了一些实验!
    • 我还是有点挣扎,有没有在左下角设置一些东西,然后在右下角设置一些东西的例子? setAnchor(0,0) 似乎在左下角,但 (0,1) 似乎不在右下角,或者某些东西可能被移出屏幕。试图弄清楚。
    • SetAnchor(0,1) 不会将精灵移动到屏幕的右下角,它会使其位置相对于精灵的右下角。所以如果你setAnchor(0,1),并且想把它放在屏幕的右下角,它的位置就是ccp(winSize.width, 0);
    【解决方案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)); // <---
    

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多