0

我一直在到处寻找和询问,到目前为止无济于事。我有一个游戏,我正在将 OpenFeint 放入其中,并且我在 OpenFeint 的仪表板中遇到了滚动视图的问题。排行榜和成就(以及其他当前不相关的)有滚动视图,在它们中的每一个中,都可以滚动,但就好像它永远不会获得任何触摸结束事件。当你放手时,内容会保持原样,即使它在视图之外 - 它不会反弹。当您再次触摸时,它会立即跳回,并且可以再次滚动。

但是,由此引起的更大问题是,您通常无法在滚动视图中选择任何内容(我猜它们是通过触摸结束事件选择的)。我可以用两根手指和大量敲击的组合来选择东西,但实际上它不起作用。而且我知道这是我的应用程序的错,因为它在示例应用程序中运行良好。

相关细节:该应用程序使用 SDL(来自 1.3 的 git 快照,我必须自己编译并且可以提供任何相关源)、OpenGL,并且几乎完全是 C++。我正在使用 OpenFeint 2.10(最新)、XCode 4.0.2(最新)和 iOS 4.3.2(在模拟器中;在我的实际设备上版本稍旧)。我想我做到了,所以游戏在 OF 仪表板启动时不会检查事件,以防万一出现问题,但要么我失败了,要么没有效果。

这是模拟器中卡住的滚动视图的屏幕截图:( 来源:happyspork.com

4

2 回答 2

1

尽管本教程用于将 Cocos2D 与 Openfeint 集成,但它解决了 OpenFeint 仪表板输入出现乱码的类似问题:

特别注意dashboardDidAppear 和dashboardDidDisappear 方法。您会看到我们暂时暂停了 Cocos2D 导向器,然后在仪表板消失后重新启用它。这是一个关键步骤,否则在显示仪表板时输入可能会不一致甚至无法捕获。但是通过暂停导演,我们确保所有用户输入都被仪表板捕获。

我不知道 SDL 是否有类似的“暂停”功能,但以类似的方式调用它可能会解决您的问题。

以下是该示例中的相关代码:

- (void)dashboardDidAppear
   {
    [[Director sharedDirector] pause];
    [[Director sharedDirector] stopAnimation];
   }
- (void)dashboardDidDisappear
   {
    [[Director sharedDirector] resume];
    [[Director sharedDirector] startAnimation];
   }
于 2011-06-03T22:07:02.310 回答
0

如果其他人有这个问题,这个链接基本上为我修复了它: http://forums.libsdl.org/viewtopic.php?t=5678& sid=99aa9531656e0aa398ce35a7c348fe88

到目前为止,它还没有解决滚动问题,但它确实解决了选择问题,这是主要问题。也许另一个可以通过一些摆弄来修复。

于 2011-04-20T23:59:54.983 回答