2010-09-12 113 views
0

我有一個應用程序的想法,這將需要我實現這些小精靈,需要基本的物理特性,如重力,加速等......所以自然我看着iPhone的遊戲循環,這裏有很多線索,但我想要了解的是我想能夠創建這些精靈並讓它們使用遊戲循環自然行爲,但仍然具有完整的「標準」iPhone交互,即觸摸,捏,核心動畫,核心數據等...iPhone遊戲循環混合

這就像在後臺線程上實現遊戲循環一樣簡單,並更新該線程上的精靈,然後在主UI線程上執行標準操作(當然明顯的後臺任務)?

我想這種類型的事情的一般概述,如果可能的話。

回答

1

我想要的是同樣的東西,但iPhone SDK的全部是關於異步和回調,最好是與框架一起滾動而不是與之對抗。如果Cocos2d不能滿足你,你可以考慮掛鉤到NSRunLoop。對於CADisplayLink:在使用OpenGL ES的CADisplayLink(您聲明您沒有使用,因此我不再詳述)時,我注意到性能下降(三角形吞吐量減少)。

+0

你最終使用Cocos2d? – Mark 2010-09-13 04:29:15

+0

更好的回答(不能編輯舊版本):不。我沒有製作遊戲,但我已經使用了Cocos-2d作爲參考。我的應用程序不是具有一堆對象的「遊戲」 - 它是一個高吞吐量的繪圖應用程序。 Cocos-2d適用於操縱對象並重新渲染它們。至於線程:iOS SDK努力推動使用回調的異步任務,並與之合作。唯一一次我會使用一個線程來執行CPU任務,如果我想有一個更快的主運行循環(所以我的應用程序不會被看門狗殺死)。而且,目前的iOS設備只有一個單線程單核ARM。 – MrAnonymous 2010-09-13 15:51:26

+0

我看,所以你只是用它作爲參考代碼?有趣的是,我也在考慮這樣做,也許我應該打開源代碼並觀察一下。在這一天結束時,我只對運行動畫精靈感興趣,我仍然認爲實施整個cocos2d框架是過度的 – Mark 2010-09-13 22:50:58

1

在Xcode中嘗試創建一個iPhone OpenGL ES項目。只需構建並使用默認代碼運行即可。你應該看到一個盒子上下移動。這個簡單的例子應該讓您深入瞭解動畫對象以及設備操作系統版本的重要性。 OpenGL視圖基於一個普通視圖,您可以附加手勢觀察者。

+0

opengl是不是我熟悉的區域,所以我想避免它..雖然我應該可能進入它的某個時候,我只是沒有真正的時間學習曲線 – Mark 2010-09-12 23:51:51

+0

我知道這種痛苦。但它確實顯示瞭如何爲iOS 3.2使用CADisplayLink,但在創建動畫循環之前需要爲3.2之前的任何內容恢復NSTimer。我還沒有嘗試過,但是你可以在沒有OpenGL的普通UIView上使用它。 – 2010-09-13 00:15:50

+0

有趣的是,我實際上認爲3.2(iPad)可能是這裏的一種方式,CADisplayLink看起來像是一種非常類似於WPF實現循環方法(我非常熟悉)的方法。理論上,你可以掛鉤到標準的UIViews – Mark 2010-09-13 00:46:28

0

查看可用的遊戲物理引擎之一。 Cocos2D是一個開始的好地方:http://www.cocos2d-iphone.org/ - 免費和大量資源開始使用。

+0

我已經看了一下這個框架,你認爲這可以用於這種類型的東西?文檔不是很精彩(維基只是不爲我做...),從我可以告訴它主要集中在遊戲,但我想它應該做的伎倆...... – Mark 2010-09-13 00:43:18