【问题标题】:Cocos2d, CCMenuSprite, Scaling and Positioning IssueCocos2d、CCMenuSprite、缩放和定位问题
【发布时间】:2011-10-25 14:56:57
【问题描述】:

我不知道如何在场景中正确定位一些使用缩放精灵创建的菜单按钮。

如果我创建精灵、缩放它们并设置它们的位置,一切都会很好。

如果我创建精灵,缩放它们,设置它们的位置,然后使用它们来创建 CCMenuItemSprite,它们都会向左和向下移动。

如果我创建精灵,使用它们来创建 CCMenuItemSprite,缩放菜单项并设置菜单项位置,它们都向右和向上移动。

当然,所有这些设置都是使用相同的比例因子和中心点坐标完成的。

我错过了什么??

谢谢!

编辑:已解决!!

我明白了!!这完全取决于菜单坐标系的工作方式以及菜单缩放时的反应。

我现在不知道是不是我对问题采取了不正确的方法,这很有可能,或者整个系统的思考方式是否存在一些棘手的问题。

我会尽快深入研究并写一个小教程。

再次感谢:D

【问题讨论】:

    标签: ios cocos2d-iphone positioning scale


    【解决方案1】:

    我知道这是一个非常古老的问题,但我只是想在这里分享发生在我身上的事情(我希望它会有所帮助)。我刚刚遇到了这个问题中描述的同样的问题,正如@mokagio 上面所说的,问题在于菜单的坐标系统是如何工作的。

    首先我用它创建了一个 Sprite 和一个 MenuItemSprite,但我永远无法正确定位它们。然后我意识到我应该基于 MenuItemSprite 而不是在 Sprite 中进行所有缩放和定位,一切正常!

    我使用的代码是:

    CCPoint backButtonPosition;
    CCSprite *backButtonSprite = CCSprite::createWithSpriteFrameName("Back.png");
    CCMenuItemSprite *backButton = CCMenuItemSprite::create(backButtonSprite, backButtonSprite, this, menu_selector(MyMenuClass::buttonPressedCallback));
    
    // Do all the scaling and positioning using the CCMenuItemSprite and not the CCSprite
    backButton->setScale(0.5);
    backButtonPosition = ccp(backButton->boundingBox().size.width / 2, screenSize.height - backButton->boundingBox().size.height / 2);
    
    // Position the button, but first convert the world coordinates to the parent menu local coordinates
    backButton->setPosition(categorySelectMenu->convertToNodeSpace(backButtonPosition));
    categorySelectMenu->addChild(backButton);
    

    另外,请注意,根据菜单坐标系而不是世界坐标系设置按钮位置很重要。

    【讨论】:

      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多