0

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

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

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

我在滚动层(存储容器)中添加了 4 个精灵 最初,精灵 1 位于 0,10 精灵 2 位于 0,20 精灵 3 位于 0,30 精灵 4 位于 0,40

显然,随着整个 storecontainer 层的移动,精灵的位置也会移动。但是,当我在 TouchesEnded 方法中执行此操作时: if (CGRectContainsPoint(sprite1.boundingBox, touchpoint)){ NSLog(@"TouchedSprite1"); } ...等每个精灵

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

4

2 回答 2

0

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

或者,您可以保留当前设置并使用您对这个问题的回答来获取世界上的触摸坐标...... :)

于 2012-04-18T21:53:16.320 回答
0

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

于 2012-04-19T01:04:33.900 回答