- 本帖最后由 般若sod蜜 于 2012-5-17 11:56 编辑 *
大家好,我是cocos2d-x的初学者,我遇到了这样的问题:我利用这里的CCScrollLayer类创建了一个滑动菜单,http://www.cocos2d-x.org/boards/18/topics/1090 ,并将原来的数组类型CCLayer* 改为了CCSprite*
static CCScrollLayer* layerWithLayers(CCMutableArray<CCSprite*> *layers,int widthOffset);
bool initWithLayers(CCMutableArray<CCSprite*> *layers,int widthOffset);
之后又在自己的场景中添加了以下代码:
for(int i = 0; i <= 7; ++i)
{
stringstream thumbPng;
thumbPng << i << "_thumb.png";
CCSprite* pSprite = CCSprite::spriteWithFile(thumbPng.str().c_str());
pSprite->setUserData((void*)i);
//CCLog("%d",(int)pSprite->getUserData());
cars.addObject(pSprite);
//CCLog("cars%d",(int)cars.getObjectAtIndex(i)->getUserData());
}
//使用CCScrollLayer类,实现滑动效果
CCScrollLayer* slideMenu = CCScrollLayer::layerWithLayers(&cars, 0);
slideMenu->setPosition ( CCPointZero );
this->addChild(slideMenu);
我想在ccTouchEnded事件中判定所选的是哪个精灵,我是这么写的:
for(int i = 0; i < cars.count(); ++i)
{
if( CCRect::CCRectContainsPoint(cars.getObjectAtIndex(i)->boundingBox(),CCPoint::CCPoint(location.x, location.y)))
{
int id = (int)cars.getObjectAtIndex(i)->getUserData();
CCLog("%d",id);
return;
}
}
问题在于,我拖动滑动菜单,点击摆放在最后的精灵,ccTouchEnded事件中的CCLog("%d",id);只能输出:0,做了一下测试,输出的id最大只能是当前屏幕显示精灵总数减去1,这样就起不到判断选择的是哪一个的作用了。
谢谢大家的解答。