4

我目前使用CCScrollLayer(在cocos2d扩展类)类来实现菜单系统。它工作的很好,但我希望在屏幕上有其他按钮,可滚动区域默认是整个屏幕。如何更改CCScrollLayer内容大小? (cocos2d扩展类)

我试图搞乱内容大小但没有骰子。在做了一些阅读后,我发现内容大小设置为每个CCLayers行为的屏幕大小。用户建议将其包装在CCNode中并缩放,但这没有帮助。

任何建议或示例代码?我不得不认为这应该是可能的。

回答

0

感谢大家的帮助,可惜的是,似乎你不能改变一个CCLayer的大小(或contentSize对触摸事件没有影响),而基本上重写很多代码。

但是,我发现了一个似乎正在工作的解决方法。在ccTouch事件开始并移动的时候,我在将我的UITouch转换为cocos2D空间后,检查了我想要的边界。如果他们不在我的范围内,我会返回,在移动的情况下我会手动调用TouchEnded。 TouchEnded还检查初始触摸点,如果它超出界限,则忽略它。

事情似乎按照需要工作。如果我找到它,我会发布更多信息。再次感谢大家。

0

CAScrollLayer是令人惊讶的简单,这可能会让人困惑。

只是内容层添加到它:

[_scrollLayer addSublayer:_contentLayer]; 

要设置你想上滚动层的屏幕设置界限或框架可见矩形:设置

[_scrollLayer setBounds:visibleBounds]; 

内容的大小。内容的大小可以更大或更小,没关系。

[_contentLayer setBounds:currentContextBounds]; 

如果其含量大,你要滚动到某一点使用滚动层的scrollToPoint:scrollToRect:方法。

如果需要,您需要实现自己的滚动指示器,条等。

+1

此问题特别针对CCScrollLayer(cocos2d扩展类)如果在cocos2d中没有严重的性能匹配,我会使用其中一个UIKit类。很抱歉,问题可能有点令人困惑。 – Arbel

+0

对不起。我没有注意到拼写。不幸的是,我无法帮助你使用cocos2d。 – Davyd

+0

不用担心。感谢您的回复。 – Arbel

0

尽管我使用表视图而不是滚动视图,但都共享相同的父级[滚动视图doh]。 您是否在设置内容大小后开启了clipToBounds功能?

我会建议使用此构造函数:

/** 
* Init this object with a given size to clip its content. 
* 
* @param size view size 
* @return initialized scroll view object 
*/ 
- (id)initWithViewSize:(CGSize)size; 
+0

嗯,我不能找到clipToBounds属性。 CCScrollViews父母是CCLayer,虽然它是CCNode的子代。 – Arbel

+0

粘贴头文件的一部分。 – Krystian

+0

也许我不使用相同的CCScrollView导致它没有那个构造函数。我正在使用第三方扩展程序中的一个。 https://github.com/cocos2d/cocos2d-iphone-extensions/tree/release-0。2我认为我在我的旧项目中使用了CCTableView,但真的必须破解很多东西在一起,这看起来很棒(分页支持,非常流畅),但我不能设置令人生气的内容大小。 – Arbel