【问题标题】:Creating a scrollview创建滚动视图
【发布时间】:2013-03-19 13:46:42
【问题描述】:

这是我目前的情况: 我创建了一个名为 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 了,但对我来说都不够好。 我的方式可能更简单,但它没有按计划工作。 提前致谢! ^_^

【问题讨论】:

  • 请包含必要的代码

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-03
      相关资源
      最近更新 更多