Перенаправить на домашнюю страницу после нажатия кнопки Сохранить с помощью яркого скрипта? - PullRequest
10 голосов
/ 25 июня 2019
  1. Я создал Экран входа в систему и настроил Экран URL-адреса ярким шрифтом с учетными данными, именем пользователя, паролем в Экране входа в систему и установил URL-адрес в настройке Экран URL с двумя кнопками сохранения и настройки.

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

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

    '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''» '' ''

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

    Пароль: TextBox2

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

    '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''» '' ''

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

  • Экран URL

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

    URL: TextBox3

    Сохранить

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

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

Ожидаемый результат: согласно шагам ниже.

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

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

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

1 Ответ

0 голосов
/ 08 июля 2019

отметьте это Getting-Start-with-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, …] 

‘Мы также можем помещать ссылки на функции в массив reference0 ‘Вызвать 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

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

...