创建滚动视图

时间:2012-04-18 18:10:41

标签: ios objective-c cocos2d-iphone ccsprite ccscrolllayer

这是我目前的情况: 我创建了一个名为StoreScene的CCScene。 在那个场景中,我初始化了一个CCLayer,并将其命名为Store layer。

现在,我想要一个包含用户可以触摸的内容的可滚动图层。 为此,我创建了另一个名为Store Container的CCLayer。 我创建了这个图层的一个实例,并将其作为子项添加到StoreScene。

在StoreContainer中,我添加了多个精灵,每个精灵都有一个唯一的标签。 滚动在StoreScene中完成,触摸将向上或向下移动整个Storecontainer层。

我在滚动图层(商店容器)中添加了4个精灵 原来, 精灵1位于0,10 精灵2位于0,20 精灵3位于0,30 精灵4位于0,40

显然,随着整个商店容器层的移动,精灵位置也会发生变化。 然而, 当我在TouchesEnded方法中执行此操作时:     if(CGRectContainsPoint(sprite1.boundingBox,touchpoint)){         的NSLog(@ “TouchedSprite1”);     } ...等等每个精灵

每个精灵的触摸位置保持在同一个地方! 在视觉上,精灵正在上下移动。 但接收触摸时的位置保持不变.. 是否有一个原因? 接近滚动图层的任何其他方式? 我已经看过UIKit的scrollview了,我看过CCScrollLayer,对我来说都不够好。 我的方式可能更简单,但它不能按计划运作。 提前致谢! ^ _ ^

2 个答案:

答案 0 :(得分:0)

我猜你已经在touchesEnded中实施了StoreContainer。在这种情况下,触摸的坐标将相对于该层,这解释了为什么它们的坐标系跟随屏幕周围的层。您可以在场景中实现touchesEnded,或者将StoreContainer实例放在一个新的且不可移动的图层中,其目的只是处理触摸。

另外,您可以保留当前设置并使用this question的答案来获取世界上的触摸坐标......:)

答案 1 :(得分:0)

查看CCKit,其中包含一个不错的CCScrollLayer实现。