2011-09-26 54 views
0

第一種情況:如何正確地從C++引擎回調回調到obj-c程序?

在Objective C程序中實現了C++編寫的引擎。 iPhone xcode要精確。它使用OpenGL繪製一切。它具有每幀調用的「renderFrame」方法(每秒約50次)。用戶有許多按鈕可導航到其他Objective C視圖。這些按鈕也是在C++引擎中繪製和處理的。當用戶按下其中一個按鈕時,C++引擎將回調發送到按下按鈕的程序(因此程序可以更改視圖)。

我使這項工作的方式:

既然有「renderFrame」的方法,我做它每次返回整數值。大多數時候它是0.但是當它返回別的東西時,它就有意義。例如,如果「renderFrame」返回2,則表示按下了第二個按鈕。爲了處理所有這些返回值,我必須構建相當大的IF。

所以我的問題:

因爲我是一個新鮮的程序員,我想知道這是否是一個好方法,或者是它的東西只有初中可以拿出。這個引擎將被移植到包括android甚至PC在內的許多其他系統,所以我不知道我是否可以以及是否應該實現其他類型的回調系統。我也想知道這是否會給我帶來性能問題,以及更專業的方法。

P.S.目前我已經實現了20多個這樣的回調,一切正常。我可以即時準確地反應每一幀。

謝謝您的建議。

+0

如果這個問題不好,至少給我原因。 – avuthless

回答

1

由於多種原因,這是一個糟糕的設計。首先,如果發生多個事件會發生什麼?兩次按鈕點擊一次?你送2 + 3嗎?你忽略了一個,希望它不重要?

當你需要發送的不只是一個單一的二進制事實時會發生什麼?如果您想發送點擊按鈕以及發生了什麼,該怎麼辦?或者你需要傳送一個數字或字符?

你應該有一個回調類,像MyGraphicsCallbacks類似於Button1Clicked(int locationX,int locationY)的函數,然後在它們各自的事件發生時調用這些函數。

+0

謝謝你的回答。儘管此時多點觸控已禁用,但稍後可能會啓用。較小時更改風格較好。我現在要走向正確的方向。 – avuthless