使用CCScrollView时,我希望能够将可查看区域限制为某个边界框。如何才能做到这一点?
设置内容大小不影响可视区域。
所以我找到了一种合理的方法来做到这一点。在cocos2d论坛上有一些使用GL_SCISSOR
剪切区域的代码:
-(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
并添加了这个方法。我最终不得不稍微调整一下坐标来获得准确的剪切区域。似乎是一个笨拙的答案,所以我希望有人有一个更好的答案。