Roku Scenegraph SGDEX - заменить переменную HDPosterURL - PullRequest
0 голосов
/ 11 октября 2019

Я использую вид клиента, и мне нужно добавить фотографию из сетки, а не миниатюру. Я не могу понять, как это сделать, не меняя миниатюру. Есть ли способ сохранить миниатюру без изменений и добавить отдельную фотографию для CustomView? Ниже приведен код. Хотел бы заменить миниатюру другим изображением. Опять же, мое приложение представляет собой базовый Roku SGDEX (расширения разработчика сценограммы) Custom + Screen

'''

'''parse from GridHandler
''' DetialsPosterUrl would be my custom image to replace the the thumbnail in the CustomView
function ParseMediaItemToNode(mediaItem as Object, mediaType as String) as Object
    itemNode = Utils_AAToContentNode({
        "id": mediaItem.id
        "title": mediaItem.title
        "hdPosterUrl": mediaItem.thumbnail
        "detailsPosterURL": mediaItem.detailsPoster
        "Description": mediaItem.shortDescription
        "Categories": mediaItem.genres[0]
    })


''' CustomView
sub ShowCustomView(hdPosterUrl as String)
    m.customView = CreateObject("roSGNode", "custom")
    m.customView.picPath = hdPosterUrl
    m.top.ComponentController.CallFunc("show", {
    view: m.customView
    })
end sub

'''deails view
sub OnDetailsContentSet(event as Object)
details = event.GetRoSGNode()
currentItem = event.GetData()
if currentItem <> invalid
    buttonsToCreate = []

    if currentItem.url <> invalid and currentItem.url <> ""
        buttonsToCreate.Push({ title: "Play", id: "play" })
    else if details.content.TITLE = "series" 
        buttonsToCreate.Push({ title: "Episodes", id: "episodes" })
    else if details.content.TITLE = "SERIES"
        buttonsToCreate.Push({ title: "Episodes", id: "episodes" })
    end if

    buttonsToCreate.Push({ title: "Details", id: "thumbnail" })   
'''
''' (more code irrevelant to topic)
'''
    else if selectedButton.id = "thumbnail"
    if details.currentItem.hdPosterUrl <> invalid then
        ShowCustomView(details.currentItem.hdPosterUrl)
    end if

''' 

custom.xml

 ''''
 <?xml version="1.0" encoding="utf-8" ?>
  <component name="custom" extends="Group" >
    <interface>
      <field id="picPath" type="string" alias="thumbnail.uri" />
    </interface>
    <children>
     <Poster id="thumbnail" translation="[0,0]" width="1280" height="720" />
    </children>
 </component>
 ''''

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Поскольку ваше утверждение противоречиво (т. Е. Неясно, хотите ли вы изменить миниатюру или хотите добавить новый узел для отображения изображения), не знайте, что вам больше по душе. Но оба возможны. Сначала вам нужно вернуться к вашему пользовательскому компоненту. После этого, если вы хотите изменить миниатюру, чтобы показать требуемое изображение, измените этот узел в соответствии с вашими потребностями. Если вы хотите добавить новый узел, просто добавьте его везде, где когда-либо добавляли миниатюры. Надеюсь, это поможет.

0 голосов
/ 12 октября 2019

В вашей функции «ShowCustomView» я вижу, вы устанавливаете «picPath» как «hdPosterUrl», верно? Но что это значит? Пожалуйста, проверьте, есть ли у вас поле "picPath", настроенное внутри "custom" .xml файла? Убедитесь, что для «AlwaysNotify» установлено значение true. Используется ли «picPath» внутри функции «Показать» ComponentController для установки URL-адреса какого-либо плаката для «пользовательского» компонента? Проверьте, как вы передаете данные из ComponentController в пользовательское представление. Надеюсь, что это поможет.

РЕДАКТИРОВАТЬ: Можете ли вы добавить другое поле itemNode, как это:

Utils_AAToContentNode({
        "id": mediaItem.id
        "title": mediaItem.title
        "hdPosterUrl": mediaItem.thumbnail
        "detailsPosterURL": mediaItem.detailsPoster
        "Description": mediaItem.shortDescription
        "Categories": mediaItem.genres[0]
        "ShortDescriptionLine1" : yourImageUrl
    })

Затем используйте "ShortDescriptionLine1" вместо hdPosterUrl. Я использовал ShortDescriptionLine1, так как я предполагаю, что Вы конвертируете это в обычный, нестандартный узел контента. В этом случае Вы можете использовать поля из этого: Метаданные контента или Вы можете добавить пользовательские поля с помощью функции Update () и не использовать поля из Метаданных контента.

...