1

我在这里为我的 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),但只有 SlideCharacter2 可以滚动

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;
}
4

1 回答 1

0

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

于 2014-04-29T06:43:20.080 回答