在一层中添加2个CCScrollLayer时无法滚动

Can not scroll when add 2 CCScrollLayer in a layer

本文关键字:CCScrollLayer 2个 滚动 添加 一层      更新时间:2023-10-16

我在这里为我的cocos2d-x项目(2.2.2版)使用CCScrollLayer文件。

我对它们进行了调整,使其可以垂直滚动。我遇到了一个问题:当我在一个层中添加两个CCScrollLayer时,我只能滚动最后添加的CCScrollLayer。

这是我的代码:

我在场景中添加了一个包含两个CCScrollLayer的层

void ChooseMapScene::addSlidingLayers()
{
  mChooseCharacterLayer = createChooseCharaterLayer();
  mChooseCharacterLayer->setPosition(CCPointZero);
  mChooseCharacterLayer->setTouchEnabled(true);      
  this->addChild(mChooseCharacterLayer, GR_FOREGROUND);
}

我在一个层中添加SlideCharacter1和SlideCharacter2(选择CharacterLayer),但只有SlideCharacter 2可以滚动

CCLayer* ChooseMapScene::createChooseCharaterLayer()
{
  CCLayer* chooseCharacterLayer = CCLayer::create();
  CCArray* characterArr1 = createCharactersArray(CHARACTER_LEFT_LAYER_POS);
  CCArray* characterArr2 = createCharactersArray(CHARACTER_RIGHT_LAYER_POS);
  mSlideCharacter1 = CCScrollLayerVertical::nodeWithLayers(characterArr1, 0);
  chooseCharacterLayer->addChild(mSlideCharacter1, GR_FOREGROUND);
  mSlideCharacter2 = CCScrollLayerVertical::nodeWithLayers(characterArr2, 0);
  chooseCharacterLayer->addChild(mSlideCharacter2, GR_FOREGROUND);
  // I add SlideCharacter1 and SlideCharacter2 in a layer (chooseCharacterLayer) but just the SlideCharacter2 can scroll
  return chooseCharacterLayer;
}

CCArray* ChooseMapScene::createCharactersArray(CCPoint pPos)
{
  CCArray* characterArr = CCArray::createWithCapacity(NUMBER_CHARACTERS);
  for (int i = 1; i <= NUMBER_CHARACTERS; ++i)
  {
    CCLayer* characterLayer = CCLayer::create();
    CCSprite* character = CCSprite::create(CCString::createWithFormat("Images/Game/Object/c%i.png", i)->getCString());
    character->setPosition(pPos);
    characterLayer->addChild(character, GR_FOREGROUND, i);
    characterArr->addObject(characterLayer);
  }
  return characterArr;
}

您可以从SlideCharacter2的触摸方法手动调用SlideCharacter1的触摸方法(开始、取消、移动、结束)来模拟触摸