Как объединить расширения разработчика Scenegraph (SGDEX)

Новые расширения для разработчиков графов сцен Roku кажутся довольно полезными. У меня есть два полезных мне представления SGDEX. Однако мне нужно их объединить, и я не вижу документации о том, как это сделать.

Пример Custom + Scene - это то, над чем я работаю. Просто я бы добавил, чтобы добавить в этот скрипт функцию searchView.

Я пробовал добавить SearchView в качестве компонента. Однако пример searchview - это собственная рабочая страница, я хотел бы добавить ее как узел. Я попытался добавить его как выступ, а также попытался добавить его как кнопку на главной странице. И то, и другое мне не удалось.

Пожалуйста, ознакомьтесь с расширениями разработчика графа сцен.

Мне просто нужно добавить функцию SearchView в пример Custom + Scene в SGDEX. Приведите пример, как это сделать, если вы знакомы. Спасибо.


person MarlonC    schedule 04.08.2019    source источник


Ответы (1)


Обновлено

Похоже, что мы хотели открыть searchView из основной сцены примера custom + screen.

Я обновил файл feed.json проекта и добавил новый объект после объекта "series".

 ...
 ...
 "search": [
        {
            "id": "search",
            "title": "Search",
            "releaseDate": "2015-06-11",
            "shortDescription": "Will open search view.",
            "thumbnail": "http://level2creative.com/wp-content/uploads/2017/08/image-search-ss-1920-800x450.gif",
            "genres": [
                "search"
            ],
            "tags": [
                "search"
            ],
            "content": {
                "dateAdded": "2015-06-11T14:14:54.431Z",
                "captions": [],
                "videos": [
                    {
                        "url": "http://roku.content.video.llnw.net/smedia/59021fabe3b645968e382ac726cd6c7b/Gb/siCt-V7LOSU08W_Ve1ByJY5N9emKZeXZvnrH2Yb9c/117_segment
if fieldInJsonAA = "movies" or fieldInJsonAA = "series" or fieldInJsonAA = "search"
twitch__nw_060515.mp4", "quality": "HD", "videoType": "MP4" } ], "duration": 53 } } ]

В вашем GridHandler.brs измените функцию ParseJsonToNodeArray, позволяет изменить условие if в строке 27, чтобы оно выглядело так:

if fieldInJsonAA = "movies" or fieldInJsonAA = "series" or fieldInJsonAA = "search"

Затем в mainscene.brs перейдите к методу OnGridItemSelected и измените его на что-то вроде этого:

rowContent = grid.content.GetChild(selectedIndex[0])
if rowContent.title = "search"
    searchView = CreateObject("roSGNode", "SearchView")
    searchView.hintText = "Search for something"
    m.top.ComponentController.CallFunc("show", {
        view: searchView
    })
else
    detailsView = ShowDetailsView(rowContent, selectedIndex[1])
    detailsView.ObserveField("wasClosed", "OnDetailsWasClosed")
end if

Это должно открыть searchView, и если вы нажмете назад, это должно закрыть searchView и вернуть пользователя обратно в gridView.

Документы

person Roger Ramirez    schedule 07.08.2019
comment
Привет, брат, еще раз то же самое. Я знаю функцию Show, используемую для roSGScreen. Но в main.brs, который я называю уже сейчас, я успешно создал один файл со сценой с мудрой панелью, а затем создал еще один комбинированный файл, расширенный с помощью группы, а компонент - keyboarddialog. Теперь я остаюсь Wisepanel, а затем нажимаю любую клавишу, чтобы перейти к диалогу с клавиатурой. Я пытаюсь сделать вышеперечисленное, но выдала ошибку. Как вызвать функцию show в init или в любом другом файле. - person Nikunj Chaklasiya; 07.08.2019
comment
Спасибо за ответ. Похоже, что в вашем примере вы добавили пользовательское представление в качестве компонента и SearvhView в качестве главной страницы. Мне нужно сделать наоборот. Пользовательский + просмотр и добавление SearchView в качестве компонента. Мне не нужны они оба на одной странице одновременно. Просто ссылка на домашней странице, которая приведет меня к SearchView. - person MarlonC; 07.08.2019
comment
@MarlonC Только что обновил ответ. Если я правильно понял вопрос, вы хотите открыть searchView из gridView, в этом случае просто следуйте разделу обновления моего ответа. - person Roger Ramirez; 08.08.2019
comment
Привет, @NikunjChaklasiya, без проблем, может быть, ты можешь открыть другой вопрос и дать немного больше контекста, чтобы я мог тебе помочь, я хотел бы увидеть, что ты пробовал до сих пор. - person Roger Ramirez; 08.08.2019
comment
Спасибо, Роджер. Похоже, это то, что мне нужно. Позвольте мне попробовать и посмотреть, смогу ли я заставить это работать. - person MarlonC; 08.08.2019
comment
Потрясающие! пожалуйста, вы, вероятно, не хотите сравнивать с rowcontent.title, но для целей тестирования он должен работать. @MarlonC - person Roger Ramirez; 08.08.2019
comment
@RogerRamirez Я использовал 4 способа упомянуть этот вопрос. Но я просто хочу сказать, что на первом экране успешно я пишу логику на главном экране. Первый экран использовал два файла. PanelSet.brs и PanelSet.XML. здесь имя компонента - WisePanel. Теперь я пишу логику для функции ключевого события, чтобы открыть новый экран. Я использовал второе имя файла - keyboarddialog.XML. Здесь я использовал как код brs, так и единственный файл xml, здесь имя компонента - keyboarddialog и расширяется с помощью Group. Я пишу логику для файла panelSet.brs для keyevent, но это ошибка. Укажите в строке ComponentController. - person Nikunj Chaklasiya; 08.08.2019
comment
Здесь я применяю логику stackoverflow.com/questions/57374718/ - person Nikunj Chaklasiya; 08.08.2019
comment
@RogerRamirez, все идет хорошо. Вопрос. Есть ли возможность заказать категорию? На данный момент поиск автоматически ставится на первое место. - person MarlonC; 10.08.2019