2015-02-10 43 views
-1

好吧,我幾乎全新的lua和computercraft,但我有很多的創造力。我試圖編寫代碼,每秒都會重新打印一個變量。這裏是我到目前爲止有:
電子計算機lua改變價值後

display = "Loading..." 
While true do 
sleep(1) 
term.clear() 
term.setCursorPos(1,1) 
print (display) 
end 
sleep(3) 
display = "hello" 

我想用它來渲染2D遊戲,「顯示」變量會爲什麼我希望它可以每秒更新頻繁,從而改變。

當我運行代碼時,它確實每秒刷新一次,但由於某種原因,我似乎無法在3秒後更改「顯示」變量以測試它。

我在做什麼錯?

+0

可能與[這太問題(http://stackoverflow.com/questions/11926440/asynchronous-delay-in-lua-like-javascript-settimeout) – 2015-02-11 09:47:00

回答

0

我不是在Lua經歷,但是這可能是一個解決辦法:answer on SO

在UI線程,運行:

while ((status=lua_resume(L_coroutine, 0)) == LUA_YIELD) { 
    semaphore_wait(); /* whatever the appropriate C# call is */ 
} 

「等待迴應」 應該是這個樣子:

while not results[my_result] do 
    coroutine.yield() 
end 

「傳入消息」函數應該看起來像Lua中的以下內容:

results[cur_result]=parsed_message 
+0

我認爲這應該是一個評論 – 2015-02-11 11:43:50

+0

@BartekBanachewicz評論並沒有提供解釋這個深度的答案的空間。但是,這不是一個標準答案,但可能正是OP需要解決他的問題。 – 2015-02-11 21:35:16

+0

謝謝你的回答。但在目前我所處的位置,你鏈接的帖子有點超過我的頭。我仍然會將其標記爲正確,因爲它可以幫助比我更有經驗的其他觀衆。 – 2015-02-15 03:49:43

1

while true是一個無限循環。該腳本永遠不會到達sleep(3)。可能要替換while truefor i=1,3

+0

但問題是,我想要循環運行整個時間,最終我想用它來渲染2D遊戲,「顯示」變量會經常變化,因此我希望它每秒更新一次。 – 2015-02-11 01:03:53