ScrollView或NewText不是无限的

时间:2016-03-11 18:58:17

标签: lua corona

我正在为我的应用制作更改日志,并在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行文字,但它只是停在那里......有没有办法让它变得无限?

1 个答案:

答案 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

这是一个早期版本,需要一些改进,但我希望它有所帮助。如果你发现更好的东西,请告诉我。另外,我从底部显示文本,因此您可能需要相应地调整它。