2012-02-22 25 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)。