如何控制CCScrollView的大小?

时间:2014-08-01 20:15:42

标签: cocos2d-iphone ccscrollview

使用CCScrollView时,我希望能够将可视区域限制为某个边界框。如何实现这一目标?

设置内容大小不会影响可视区域。

1 个答案:

答案 0 :(得分:0)

所以我发现这似乎是一种合理的方法。 cocos2d论坛上有一些代码用于使用GL_SCISSOR剪切区域:

http://forum.cocos2d-swift.org/t/cocos2d-3-1-beta-gl-scissor-test/13608/4

-(void)visit:(CCRenderer *)renderer parentTransform:(const GLKMatrix4 *)parentTransform
{
    CGPoint positionInWorldCoords = [self convertToWorldSpace:ccp(0, 0)];
    CGFloat contentScaleFactor = [[CCDirector sharedDirector] contentScaleFactor];

    positionInWorldCoords = ccpMult(positionInWorldCoords, contentScaleFactor);


    [renderer enqueueBlock:^{
        glEnable(GL_SCISSOR_TEST);
        glScissor(positionInWorldCoords.x, positionInWorldCoords.y, self.contentSize.width * contentScaleFactor, self.contentSize.height * contentScaleFactor);
} globalSortOrder:0 debugLabel:nil threadSafe:YES];

    [super visit:renderer parentTransform:parentTransform];

    [renderer enqueueBlock:^{
        glDisable(GL_SCISSOR_TEST);
    } globalSortOrder:0 debugLabel:nil threadSafe:YES];
}

所以我将CCScrollView子类化并添加了此方法。我最终不得不稍微调整坐标以获得精确的剪切区域。看起来像一个笨重的答案,所以我希望有人有更好的答案。