【问题标题】:Iphone/ipad architecture suggestions for game look-and-feel app游戏外观应用的 Iphone/ipad 架构建议
【发布时间】:2011-06-03 12:08:10
【问题描述】:

各位 ios 架构师,请帮我为以下 iphone/ipad 应用选择架构/技术。

该应用本身是一款金融应用,但我们希望该应用具有更多的游戏外观,因此我们可能不想使用可可小部件的内置外观。屏幕上的元素可能是某种斑点状的图像。

该应用程序本质上将有五个“斑点”状区域,在屏幕上均匀分布。其中一个斑点将居中并且比其他斑点大。在每个 blob 中都会有可点击的区域,这些区域会弹出“详细信息”和菜单操作 blob。这些 blob 也是图形对象,不能占据整个屏幕。这些斑点在弹出时应该很好地动画化。图形元素将生成几行文本,因此覆盖文本本身不能成为静态背景图像的一部分。

主要的用户交互将是在中心 blob 内滑动,显示概念上包含在 blob 底层数据存储中的项目的摘要。有时,用户会将项目拖放到其他 blob 之一。拖动时,该项目应由一条线跟踪,而当拖放到另一个 blob 上时,该项目应进行动画处理,使其看起来像是被“吸入”该 blob。

现在,您会为这个应用推荐什么样的技术? Cocoa 适合这种场景吗?我应该使用像 Cocos2D 这样的游戏框架吗?欢迎各种建议,包括示例代码sn-ps。

我意识到这个问题可能不像 SO 上的一般问题那么简单明了,但我希望你的答案会被比我更多的人使用。谢谢!

编辑(我的解决方案): 我最终在 UIKit 中完成了所有事情,这比我预期的要容易得多。 简要描述了我使用具有自定义样式和图像背景的 UIButton,这使我可以完全控制“项目”的视觉外观。我还发现操纵我的许多其他 UIView 的底层 CALayer 非常有用。它通常比使用 Core Graphics 编程从头开始绘制更容易。

另一个有用的是 UIGestureRecognizer:s。我发现它们对于处理“真实”手势(如滑动、长按等)非常有用,而且对于处理不是 UIControl 子类的 UIView 类的正常“点击”也很有用。两个例子是 UIImage、UILabel 和 UIView 本身。这样我就可以处理这些简单类的水龙头。例如,我可以使用普通的 UIView,修改它的 CALayer 以完全改变它的外观并仍然处理水龙头。使用这种技术,我根本不必在我的应用程序中对任何视图进行子类化。

动画也很简单,尽管我必须使用非公开的方法来使用“suck”动画,所以我的应用永远不会通过 App Store 审核。反正它只是一个原型,所以我不在乎。

当这个应用程序真正实现时,我可能会用Phonegap 包装的HTML5/JavaScript 来实现它。这样做的原因主要是对现有移动 Web 服务的重用以及跨平台的代码重用。使用 web 应用程序时,连接到现有的安全解决方案可能也更容易。

【问题讨论】:

    标签: iphone objective-c ios ipad


    【解决方案1】:

    如果您需要快速移动元素,Cocos2d 非常棒,因为它是 OpenGLES 之上的一层。我认为从你所说的 UIKit 会很好,你会得到很好的动画支持,你可以用 UIScrollViews 做一些很好的事情来处理移动元素等等。

    如果您需要更详细的图形支持和大量移动元素、粒子效果等,那么请务必选择 Cocos2D,但请注意,在 Cocos2d 中,应用程序更多地使用预定更新方法,即每 1/60 收到通知一秒钟移动东西绘制东西等,而使用普通的 UIKit 方法它更多的是事件驱动,即我单击一个按钮并显示一个视图等。

    【讨论】:

    • 谢谢!我想我会尝试使用 Cocos2D。就个人而言,我发现 UIKit 令人困惑和限制。我经常遇到一些事情根本无法完成的死胡同,或者我无法弄清楚为什么会出错的情况。事实证明,我经常忘记覆盖某些晦涩的方法或单击 Interface Builder 中的某些设置,这从根本上改变了应用程序的行为。但是,这可能是由于我在 UIKit 知识上的巨大差距。我不明白的一切当然令人困惑;)
    • 我最终在 UIKit 中完成了所有工作,这比我预期的要容易得多。也许 UIKit 并没有我之前想象的那么混乱和局限(在我真正尝试学习它之前 :)
    • 好东西,顺便说一句,我有一个不错的 UIView+Layout 类别,可以帮助您进行定位、分层等,您可能会觉得有用,请从这里获取代码......locassa.com/index.php/2011/05/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多