如何将 Roku Scenegraph GridView 转换为小写
How to convert Roku Scenegraph GridView to lower case
我正在开发场景图 GridView 应用程序。所有的行项目都是小写的。
我想将它们转换为大写。
我正在使用 Roku Scenegraph Developer Extensions。 (SGDex)
我试过在 RowAA 上使用 UCase。这确实将标题更改为大写,但它破坏了脚本。
即...
标题:UCase(fieldInJsonAA)
if fieldInJsonAA = "movies" or fieldInJsonAA = "series"
mediaItemsArray = jsonAA[fieldInJsonAA]
itemsNodeArray = []
for each mediaItem in mediaItemsArray
itemNode = ParseMediaItemToNode(mediaItem, fieldInJsonAA)
itemsNodeArray.Push(itemNode)
end for
rowAA = {
'title: fieldInJsonAA
title: UCase(fieldInJsonAA)
children: itemsNodeArray
}
我在示例中尝试的方法确实将行标题更改为大写。但是,它破坏了脚本。
你能试试这样吗:
rowAA = {}
rowAA.title = UCase(fieldInJsonAA)
rowAA.children = itemsNodeArray
或
rowAA = {}
rowAA["title"] = UCase(fieldInJsonAA)
rowAA["children"] = itemsNodeArray
编辑:
我最初了解到脚本无法编译。
我注意到,在您的 ParseMediaItemNode 方法中,您传递的是不带大写字母的 fieldInJsonAA,然后在它之后的 rowAA 中传递的是相同的 fieldInJsonAA,但使用的是大写字母。也尝试在 ParseMediaItemNode 中以大写形式传递它并检查会发生什么。这是一个大胆的猜测,因为我对您正在使用的脚本了解不多。
我明白了。默认情况下,DetailsView 期望行标题为小写,因此在我更改它时它省略了 'play' 或 'episode' 按钮。
通过如下更改详细信息视图,这允许脚本 运行 使用大写或小写。
详情查看...
`''' Default Code'''
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" })
end if
''''''''
''' Updated Code that works with lower or upper case'''
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
''''''''`
我正在开发场景图 GridView 应用程序。所有的行项目都是小写的。
我想将它们转换为大写。
我正在使用 Roku Scenegraph Developer Extensions。 (SGDex)
我试过在 RowAA 上使用 UCase。这确实将标题更改为大写,但它破坏了脚本。
即...
标题:UCase(fieldInJsonAA)
if fieldInJsonAA = "movies" or fieldInJsonAA = "series"
mediaItemsArray = jsonAA[fieldInJsonAA]
itemsNodeArray = []
for each mediaItem in mediaItemsArray
itemNode = ParseMediaItemToNode(mediaItem, fieldInJsonAA)
itemsNodeArray.Push(itemNode)
end for
rowAA = {
'title: fieldInJsonAA
title: UCase(fieldInJsonAA)
children: itemsNodeArray
}
我在示例中尝试的方法确实将行标题更改为大写。但是,它破坏了脚本。
你能试试这样吗:
rowAA = {}
rowAA.title = UCase(fieldInJsonAA)
rowAA.children = itemsNodeArray
或
rowAA = {}
rowAA["title"] = UCase(fieldInJsonAA)
rowAA["children"] = itemsNodeArray
编辑: 我最初了解到脚本无法编译。
我注意到,在您的 ParseMediaItemNode 方法中,您传递的是不带大写字母的 fieldInJsonAA,然后在它之后的 rowAA 中传递的是相同的 fieldInJsonAA,但使用的是大写字母。也尝试在 ParseMediaItemNode 中以大写形式传递它并检查会发生什么。这是一个大胆的猜测,因为我对您正在使用的脚本了解不多。
我明白了。默认情况下,DetailsView 期望行标题为小写,因此在我更改它时它省略了 'play' 或 'episode' 按钮。
通过如下更改详细信息视图,这允许脚本 运行 使用大写或小写。
详情查看...
`''' Default Code'''
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" })
end if
''''''''
''' Updated Code that works with lower or upper case'''
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
''''''''`