2012-02-22 30 views
2

這是我已經能夠重現問題的最小片段。Roku應用在第二個roMessagePort上退出時沒有錯誤等待

Sub Main() 
    u = getStringFromKeyboard("Enter username") 
    p = getStringFromKeyboard("Enter password") 
End Sub 

Function getStringFromKeyboard(message = "" As String) As String 
    result = "" 
    port = CreateObject("roMessagePort") 
    screen = CreateObject("roKeyboardScreen") 
    screen.SetMessagePort(port) 
    screen.SetDisplayText(message) 
    screen.AddButton(1, "OK") 
    screen.Show() 
    while true 
     print "waiting..." 
     msg = wait(0, port) 
     print "done waiting" 
     if type(msg) = "roKeyboardScreenEvent" then 
      if msg.GetIndex() = 1 then 
       result = screen.GetText() 
       exit while 
      end if 
     end if 
    end while 
    screen.Close() 
    return result 
End Function 

Roku會正確提示用戶名,但會在提示輸入密碼之前退出主菜單。調試輸出指示應用程序是borking第二調用wait():

waiting... 
done waiting 
waiting... 

這是SDK V4.1和OS v4.2.1006。

任何人有一個想法是怎麼回事?從上Roku公司開發者論壇用戶gonzotek

+0

關於Roku或它們的BrightScript語言,SO上還沒有其他問題。你可能會更好[發表在他們的開發論壇](http://forums.roku.com/viewforum.php?f=34) – Charles 2012-02-22 03:05:35

+2

嘿耶我也這樣做了,但我想每個標籤都必須從某處開始...... :) – 2012-02-22 14:23:05

回答

5

答:

創建一個門面屏幕。在 最後一個屏幕關閉後,roku會立即退出應用程序。您創建第一個鍵盤屏幕,並且還會在getStringFromKeyboard函數中關閉它,並且由於當時沒有其他屏幕打開 ,這就是Roku殺死該應用程序的時間。 查看RokuKevin在這裏的解釋:viewtopic.php?p = 162550#p162550 (注意:他指的是'屏幕閃爍',這可能是他在 上寫的,但是現在需要總是有一個屏幕 卡住打開你的應用程序的生命週期的背面: viewtopic.php?p = 321402#p321402)。