2012-02-22 6 views
2

Это самый маленький фрагмент, который я смог получить, чтобы воспроизвести проблему.Приложение Roku выходит без ошибок во второй roMessagePort wait

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 на второй вызов ждать():

waiting... 
done waiting 
waiting... 

Это SDK v4.1 и OS v4.2.1006.

У кого-нибудь есть идея, что происходит?

+0

Есть вопросы, касающиеся SO о Roku или их языке BrightScript. Вам, вероятно, будет лучше [размещать на своих форумах разработчиков] (http://forums.roku.com/viewforum.php?f=34) – Charles

+2

Хе-хе, я тоже это сделал, но я решил, что каждый тег должен начать где-то ... :) –

ответ

5

Ответ от пользователя gonzotek на форуме разработчиков Roku:

Создание экрана фасада. Року выйдет из приложения сразу после закрытия последнего экрана . Вы создаете первый экран клавиатуры, а также закрываете его в функции getStringFromKeyboard, и так как нет , в этот момент откроются другие экраны, вот когда Roku убьет приложение. См. Объяснение РокуКевина здесь: viewtopic.php? P = 162550 # p162550 (примечание: он ссылается на «мерцание экрана», что, возможно, было верно, когда он написал его, но в настоящее время это требование всегда иметь экран откройте в конце вашего стека всю жизнь вашего приложения: viewtopic.php? p = 321402 # p321402).