我正在为我的应用制作更改日志,并在display.newText
中插入了大量文字。 display.newText
可以采用的字符数量是否有限制,或者ScrollView中存在问题?我的代码:
local widget = require( "widget" )
scrollView = widget.newScrollView
{
hideBackground = true,
hideScrollBar = true,
left = 0,
top = 170,
width = display.contentWidth,
height = contH - 300,
topPadding = 150,
bottomPadding = 20,
horizontalScrollDisabled = true,
verticalScrollDisabled = false,
}
ChangeLogText = [[ ...a bunch of text here... ]]
ChangeLog = display.newText(ChangeLogText, contW / 2, 4730, contW - 100, 0, "Fonts/visitor1.ttf", 40)
scrollView:insert(ChangeLog)
我可以看到约164行文字,但它只是停在那里......有没有办法让它变得无限?
答案 0 :(得分:0)
我最近遇到了同样的问题 - 太糟糕了,这些限制在API中没有详细说明。
我从this github repository开始,包含Corona SDK的完整小部件库(它不再开发AFAIK),但却找不到任何内容。
我最终确定的解决方法是,只从插入文本显示对象的文本的第一部分开始,然后在达到上限/下限时使用scrollView scrollListener重新加载文本。
scrollListener的一部分(event.direction == "up"
基本上就是这个的镜像):
elseif ( event.direction == "down" ) then
--check if limit is reached or close to it, y is from scrollView:getContentPosition(), -800 is arbitrary
if ( event.limitReached ) or y > - 800 then print( "Reached top limit" )
--firstS stores number of first visible sign of a string
if chat.firstS > 1 then
--copy string
local shownText = stringText
--update display object
chat.text = shownText
local firstS, lastS
--do while display object is too high - I found that scrollView stops scrolling ~25000 height
while (chat.height) > 24000 do
--basically cut the text in half
firstS = chat.firstS - #shownText/4
if firstS < 1 then firstS = 1 end
lastS = firstS + #shownText/2
shownText = string.sub( stringText, firstS, lastS)
chat.text = shownText
end
chat.firstS = firstS
chat.lastS = lastS
--scroll to halfway position in no time for seamless transition
mainView:scrollToPosition({y = -(chat.height)/2, time = 0})
end
end
end
这是一个早期版本,需要一些改进,但我希望它有所帮助。如果你发现更好的东西,请告诉我。另外,我从底部显示文本,因此您可能需要相应地调整它。