首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CCSprite的相对定位

CCSprite的相对定位
EN

Stack Overflow用户
提问于 2013-11-14 01:32:57
回答 1查看 93关注 0票数 0

因此,我在Windows Phone的cocos2dx版本中有一款游戏。有一个背景( CCLayerColor ),在它的中间我放置了另一个CCLayerColor。问题是,当移动一个中间层内有精灵的层时,移动是相对于整个屏幕进行的,而不是相对于中间的层。在屏幕中间创建此CClayerColor的代码为:

代码语言:javascript
复制
mWheelMachine = WheelMachineView::create(symbolMap, path);
mWheelMachine->setContentSize(CCSize(WHEEL_MACHINE_WIDTH , WHEEL_MACHINE_HEIGHT));//values equaling one third of screen size
mWheelMachine->setPosition(ItemManager::sharedItemManager()->getItemPosition(WHEEL_MACHINE_TAG
addChild(mWheelMachine, THEME_WHEEL_MACHINE_ORDER);//position in the middle of the screen

"WheelMachineView“是" CCLayerColor”的子类,而create只是覆盖了CCLayerColor的对应对象。在这个类中,我有另一个层,它随内部绘制的CCSprite对象一起移动。

代码语言:javascript
复制
unsigned short o;

for (unsigned short i = 0; i < NUMBER_OF_WHEELS; i++)
{
WheelView* wheelLayer = WheelView::create();
wheelLayer->setIsRelativeAnchorPoint(true);
wheelLayer->setAnchorPoint(ccp(0,0));
wheelLayer->setPosition(i * WHEEL_WIDTH, -100 );
wheelLayer->setContentSize(CCSize(WHEEL_WIDTH, WHEEL_HEIGHT)); //large height value, to have room for making an animation with moving symbols

addChild(wheelLayer);
mWheels.push_back(wheelLayer);

/* Get the wheel symbols */
list<Symbol*> wheelSymbols = mWheelModel->getWheelSymbols(i);

/* Index */
o = 0;
for (list<Symbol*>::reverse_iterator it = wheelSymbols.rbegin(); it != wheelSymbols.rend(); it++)
{
  CCSprite* symbol = CCSprite::spriteWithSpriteFrameName((*it)->getName().c_str());
  symbol->setPosition(ccp(WHEEL_WIDTH / 2, SYMBOL_HEIGHT/2 + (o++ * SYMBOL_HEIGHT) - SYMBOL_HEIGHT));
  symbol->setAnchorPoint(ccp(0.5f, 0.5f));
  symbol->setScale(SYMBOL_SCALE_FACTOR);
  wheelLayer->addChild(symbol, 10, o);     
}

}

因此,当将'wheelLayer‘移动到'mWheelMachine’内容大小之外的位置时,它将在整个屏幕上移动,从而在中间指定区域(mWheelMachine)之外绘制符号。由于它的大小比它的父级大,所以它在父级之外绘制符号。为什么会发生这种情况?如何才能只使用mWheelMachine的内容大小?

EN

回答 1

Stack Overflow用户

发布于 2013-11-14 10:27:34

你可以想象cclayer是一个节点,它没有大小和锚点的概念,并且设置它的内容大小对显示的内容没有作用,它只会影响控制区。

我认为你应该只希望在一个区域中展示一些图片。使用口罩将是一个很好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19960500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档