2011-11-25 51 views
1

當我做LUA時,我曾經運行dofile("...");加載其他lua文件等。後來發現這是一個非常糟糕的做法,可能導致應用程序中斷。什麼是改變場景的正確方法?

現在,我正在開發WebOs應用程序,我希望確保自己正確地改變場景,然後再選擇糟糕的編程習慣。

目前,這是我使用:

label2Tap: function(inSender, event) { 
    Mojo.Controller.stageController.popScene(); 
    Mojo.Controller.stageController.swapScene("LogicAndArithmetic"); 
}, 

偉大的工程要到我LogicAndArithmetic的場景,這是最好的做法,這樣做? 謝謝。

回答

2

webOS的Mojo框架中的場景模型像堆棧一樣工作。當應用程序啓動時,請致電pushScene以顯示您的主場景。通常情況下,您可以通過額外的pushScene調用來將場景添加到堆棧頂部,然後當您完成這些調用時,它們會彈出,通常是在用戶執行「後退手勢」時,將前一個場景重新帶回。最終你會回到你的主要場景。

swapScene呼叫等同於呼叫popScene,然後pushScene用於不同的場景。在你的情況下,你打電話popScene然後swapScene,所以這相當於從堆棧彈出兩個場景,然後推回一個。這可能是有效的,因爲你只有一個場景,但是如果你有更多,它將無法正常工作。

順便說一句,你爲什麼與Mojo而不是Enyo一起工作?

+0

我甚至不知道Enyo。我一直在閱讀Mojo教程。感謝您的明確解釋。我會再看看Enyo。 –

2

雖然這在技術上是正確的,但它很可能不是用戶期望您的應用程序的行爲方式。正如米格爾所說,一般情況下,當用戶按下一個打開新場景的按鈕時,它將被放置在堆棧上。用戶將期望能夠回到場景並從堆棧中彈出。這是自動發生的,你不需要聽這個輸入。您可以通過調用Mojo.Controller.pushScene(「sceneName」);來完成此操作。雖然有些應用程序在swapScene中有意義,但您的應用程序可能會被概念化爲一堆場景,並帶有邏輯「後退」場景。

我會推薦玩一些現有的應用程序,以瞭解他們的行爲。此外,雖然米格爾建議轉向Enyo,但值得注意的是,Enyo應用程序並非正式應用於webOS 2設備(手機),而只能在觸摸板上使用。可以在webOS 2設備上運行它們,但我確信它們會被應用程序目錄拒絕。

+0

最後一段很好知道。我在11月份創建了這個項目後堅持了Mojo,並在1月份成功推出了2個應用程序。我想我會堅持使用Mojo,因爲它首先學到了什麼,然後隨着時間的推移進入Enyo,我很高興現在知道它最適合手機了。 –

相關問題