我是Cocos2d的新手,我“真的”在调整CCTableView的大小。我所指的是如何控制它的高度,以便我在顶部和底部有空间。
我的桌面视图正常运行,我试图用精灵在视觉上包裹顶部和底部,以提供框架的外观和感觉。但是当我触摸桌面视图滚动时 它向上或向下,它垂直占据屏幕的大部分。我开始搞乱contentSize,认为这会改变每个单元格出现的位置,并从顶部和底部消失。但这没有效果。
关于Google的问题,我正在读到我必须使用带有模板的剪切节点?来自UIkit,这看起来有点像faff。有没有人喜欢在一个教程中使用一个简单的CCTableView表示的代码,坐在每个单元格出现的场景中间并在内容框架下消失?
答案 0 :(得分:1)
您应该查看cocos2d扩展包中的CCCropNode:
https://github.com/cocos2d/cocos2d-swift-ext/tree/master/Extensions/CCCropNode
CCCropNode使用glScissor将绘图剪辑到指定区域:比CCClippingNode(使用模板缓冲区)简单得多。
此论坛帖子也可以提供帮助:
http://forum.cocos2d-swift.org/t/ccclippingnode-woes/14752
你仍然会遇到触及目标区域之外触摸滚动/表格区域的问题(我发现CCCropNode触摸剪辑不起作用 - 需要调查它,因为它导致我的问题)
答案 1 :(得分:1)
我遇到了同样的问题,我设法通过向CCScrollView.m添加代码来解决表区域外的问题,如下所示: -
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(CCTouch *)touch
{
// Added by Season
//*************************************************************
CGPoint lcgpTouch = [touch locationInWorld];
if (!(lcgpTouch.x >= [self position].x && lcgpTouch.x <= [self position].x + [self contentSize].width &&
lcgpTouch.y >= [self position].y && lcgpTouch.y <= [self position].y + [self contentSize].height)) {
return NO;
}
//*************************************************************
if (!_contentNode) return NO;
if (!self.visible) return NO;
if (!self.userInteractionEnabled) return NO;
并且您需要将SetContentSize设置为CCTableView才能使这段代码正确地获得大小。
其他信息: 我在外部目标区域之上有一些CCSprite,假设在上面的编码之后对touchBegan的响应失败,那么我将所有CCSprite更改为CCButton,它就像一个魅力。你不需要做我在这里做的事情,你可以修改编码以允许CCSprite轻松响应touchBegan。
希望上面的编码可以帮助你们所有人。