Перенаправить на главную страницу после нажатия кнопки «Сохранить» с помощью яркого скрипта?

  1. Я создал экран входа в систему и установил экран URL-адреса в ярком сценарии с учетным именем пользователя, паролем на экране входа в систему и настройкой URL-адреса в настройке экрана URL-адреса с помощью двух кнопок сохранения и настройки.

Вот просто мой экран входа в систему:

  • Экран входа в систему

    '''''''''''''''''''''''''''''''''''''''''''''''''''

    Имя пользователя: TextBox1

    Пароль: TextBox2

    Сохранить настройку

    '''''''''''''''''''''''''''''''''''''''''''''''''''

Я нажимаю кнопку настройки, чтобы открыть экран настройки URL-адреса, он находится здесь:

  • Экран URL

    ''''''''''''''''''''''''''''''''''''''

    URL: TextBox3

    Сохранить

    ''''''''''''''''''''''''''''''''''''''

Я пишу URL-адрес настройки в настройке экрана URL-адреса и после этого нажимаю кнопку «Сохранить». now После сохранения URL-адреса настройки я снова хочу вернуться к экрану входа в систему. Я сохраняю все три учетных данных в roRegistrySection, это успешно. Но навигация между экраном входа в систему и экраном настройки URL не работает должным образом. Когда я нажимаю кнопку «Сохранить», открывается главный экран. кто-нибудь знает, как перемещаться между двумя экранами.

Ожидаемый результат: выполните следующие действия.

  1. Сначала я нажимаю кнопку настройки, чтобы ввести URL-адрес в текстовое поле. После повторного нажатия кнопки сохранения вернитесь к экрану входа в систему.

  2. На экране входа в систему у меня есть два текстовых поля. После ввода имени пользователя и пароля я нажимаю кнопку сохранения, а затем перенаправляю на домашнюю страницу с хранилищем трех значений в roRegistrySection.

Кто-нибудь знает проблему.


person Nikunj Chaklasiya    schedule 25.06.2019    source источник
comment
действительно непонятно, о чем вы спрашиваете.   -  person Joe T    schedule 25.06.2019
comment
@JoeT Raxit Pandya Отредактируйте мой пост, пожалуйста, проверьте.   -  person Nikunj Chaklasiya    schedule 27.06.2019
comment
Мне нужно увидеть ваш код, но я уверен, что смогу вам с этим помочь. Можете ли вы поделиться проектом на github или он проприетарный?   -  person Joe T    schedule 30.06.2019


Ответы (1)


проверьте это начало работы с- brightscript-screen-navigation

Реализация простого меню навигации На снимке экрана ниже показана целевая страница, типичная для многих каналов Roku. Компонент экрана списка - это распространенный способ реализации простых меню, управляющих перемещением по содержимому канала. Каждый элемент списка может представлять жанр видео, музыкальный стиль, группу настроек или любую другую категорию контента, которую вы хотите сгруппировать в своем канале. В обычном канале, когда выбран элемент списка, канал переходит на новый экран. В нашем примере экран со списком позволяет пользователю просматривать меню завтрака и обеда в гипотетической закусочной. При выборе одного из элементов отображается подробный список предложений для данной категории блюд.

Ключом к переходу к новому экрану при выборе элемента списка является обработка события isListItemSelected экрана списка. Индекс, возвращаемый msg.GetIndex (), содержит отсчитываемый от нуля индекс выбранного элемента списка. Ваш канал может сопоставить каждый индекс элемента списка с уникальным экраном и перейти на этот экран в ответ на событие isListItemSelected. Есть несколько способов добиться этого. Самый простой - просто использовать подход оператора if в цикле событий вызывающего экрана, который проверяет выбранный индекс и вызывает нужную функцию:

while (true)
    msg = wait(0, port)
    if (type(msg) = "roListScreenEvent")
      if (msg.isListItemSelected())
        index = msg.GetIndex()
        if (index = 0)
          ShowBreakfastMenu()
        else if (index = 1)
          ShowLunchMenu()
          …
        endif
      endif
    endif
end while

Другой более сложный, но более чистый способ сделать это - создать массив ссылок на функции.

menuFunctions = [ShowBreakfastMenu, ShowLunchMenu,…]
while (true)
    msg = wait(0, port)
    if (type(msg) = "roListScreenEvent")
      if (msg.isListItemSelected())
        menuFunctions[msg.GetIndex()]() ‘Call function based on index
      endif
    endif
end while

Ключ к пониманию того, как работает этот код, лежит в концепции справочника функций BrightScript. Ссылка на функцию - это просто имя данной функции. Ссылки на функции можно назначать переменным, использовать в качестве элементов массива и даже передавать другим функциям. Функция, соответствующая ссылке на функцию, может быть вызвана с помощью оператора вызова функции «()». Вот несколько примеров вызова функции doSomething по ссылке:

Function doSomething() as void
    ...
End Function
doSomethingReference = doSomething
‘Call doSomething by reference
doSomethingReference()
references = [doSomething, …] 

«Мы также можем поместить ссылки на функции в массив ссылок0» Вызов doSomething через ссылку на функцию элемента массива. Помня об этом, давайте вернемся ко второму подходу к реализации меню на экране просмотра списка. В массиве menuFunctions содержится название каждой из функций создания экрана канала. Они расположены в том же порядке, что и элементы списка, которым они соответствуют на соответствующем экране списка. Затем, когда событие isListItemSelected обрабатывается в цикле событий экрана списка, мы берем соответствующее имя функции из массива menuFunctions. Затем функция вызывается по ссылке с использованием оператора «()» для правильного элемента массива:

menuFunctions[msg.GetIndex()]() ‘Вызов функции на основе индекса В примере канала мы используем подход ссылки на функцию. Чтобы увидеть, что на самом деле делают пункты меню, щелкните пункт меню «Завтрак», и вы увидите подробное меню завтрака, отображаемое на простом экране плаката:

При щелчке по пункту меню «Обед» отображается подробное меню обеда, которое реализовано в виде сетки:

Более глубокая навигация. До сих пор мы рассматривали, как использовать экран со списком для создания простой навигации по категориям в канале. Так же легко перейти с экранов, таких как экраны плаката или сетки выше, на другие экраны вашего канала. Просто обработайте событие isListItemSelected в цикле событий экрана, чтобы определить, когда элемент выбран, и отреагировать соответствующим образом.

В образце канала вы можете щелкнуть любой элемент на экране плаката меню завтрака, чтобы отобразить экран сведений с дополнительной информацией о выбранном элементе. Пример этого экрана (также называемого экраном «трамплин») показан ниже:

Две кнопки в правой части экрана демонстрируют другую технику навигации BrightScript. При выборе одной из этих кнопок на экране сведений появляется событие isButtonPressed. Сообщение, отправленное с событием, содержит индекс выбранной кнопки. Как и в случае с указателями элементов экрана списка, плаката и сетки, этот указатель кнопок можно использовать для управления действиями канала в ответ на нажатие кнопки, включая переход к новым экранам, открытие диалоговых окон и другие действия.

while (true)
    msg = wait(0, port)
    if (type(msg) = "roSpringboardScreenEvent")
      if (msg.isButtonPressed())
        buttonIndex = msg.GetIndex()
        'Open a new screen corresponding to the button index
        …
      endif
  endif
end while

Чтобы попытаться минимизировать размер загрузки образца канала, только элементы экрана списка завтрака и обеда открывают экраны плаката или сетки. Кроме того, можно щелкнуть только элементы экрана плаката меню завтрака, чтобы открыть экраны сведений. Вы можете легко использовать эти две категории в качестве руководства для самостоятельного создания канала. Или вы можете просто использовать код как есть, чтобы начать навигацию по своим каналам. Удачного кодирования!

person Chanaka Weerasinghe    schedule 08.07.2019
comment
Спасибо за ваш ответ. Я пробовал использовать оба способа. Первый способ не работает, потому что я использовал только один roSGScreen и один узел Scene. Второй способ - это один раз, когда я нажимаю кнопку «Сохранить», чтобы работать идеально, но на экране перенаправления URL-адреса на экран входа в систему его не обрабатывают. - person Nikunj Chaklasiya; 08.07.2019