【问题标题】:Not getting proper scrollview in Corona SDK在 Corona SDK 中没有获得正确的滚动视图
【发布时间】:2014-03-28 12:26:42
【问题描述】:

我在查看记分牌时遇到问题。我正在为我的滚动视图和滚动视图中的内容提供初始值。最初我打开记分板时,内容显示在正确的位置,但是当我向下然后向上滚动时,它没有得到它的初始位置。 请查看随附的记分牌视图截图。谁能告诉我在这种情况下该怎么办?

提前致谢。

local function scrollListener( event )
    local phase = event.phase
    if phase == "began" then 
        print( "Scroll view was touched" )
        for key,value in pairs(event) do 
            print("pranav",key,value) 
        end

    elseif phase == "moved" then 
        --print( "Scroll view was moved" )
        print("over",event.x)

        if(event.x>414)then
            event.x=358
        end

    elseif phase == "ended" then
        print( "Scroll view was released" )
        print("ended",event.x)
    end

    -- In the event a scroll limit is reached...
    if event.limitReached then
        if event.direction == "up" then 
            print "Reached top limit" 
        elseif event.direction == "down" then 
            print "Reached bottom limit" 
        elseif event.direction == "left" then 
            print "Reached left limit"
        elseif event.direction == "right" then 
            print "Reached right limit" 
        end
    end

    return true
end

scrollView = widget.newScrollView
{
    top = 200,
    left = 250,
    width = 500,
    height = 400, 

    scrollWidth = 500,
    scrollHeight = 10,

    topPadding = 0,
    bottomPadding = 0,
    leftPadding = 0,
    rightPadding = 0,

    friction = .972 , -- how fast the scroll view moves.  default is .972

    hideBackground = true, -- if true it wont show the background color.
    horizontalScrollDisabled = true,
    verticalScrollDisabled = false,          

    listener = scrollListener,
}

【问题讨论】:

  • 代码太多。请删除所有不直接相关的代码(删除后不会解决问题的代码)。
  • 我已经删除了其他不相关的代码行。请立即检查。
  • 好吧,这好多了,但你删除的有点太多了:) 以上不足以重现问题:你需要向视图添加内容。我在回答中对您如何做到这一点做出了假设。

标签: lua scrollview coronasdk


【解决方案1】:

缺少显示内容添加的代码,即仅使用问题中的代码无法重现问题。发布代码的一个问题是height vs scrollHeight

您的滚动文本height 应该是屏幕上的高度;它的scrollHeight 应该是“虚拟高度”,即如果它不可滚动,小部件将占据的总高度。因此scrollHeight 必须足够大以显示您插入其中的所有显示对象,而height 只是您要显示的“窗口”(部分)。 widthscrollWidth 也是如此,但你没有使用水平滚动,所以现在不用担心。

我也找不到任何对填充属性(topPadding 等)的引用,但拥有它们并没有给我带来任何问题。

我在您的代码后添加了以下内容:

local function createText(text, y)
    local scrollText = display.newText {
        text=text, y=y, font=native.systemFont, fontSize=20 }
    scrollText.anchorX = 0
    return scrollText
end
scrollView:insert(createText("Hi",    10))
scrollView:insert(createText("Bye",   30))
scrollView:insert(createText("Hello", 50))
scrollView:insert(createText("Hi",    70))
scrollView:insert(createText("Bye",   90))
scrollView:insert(createText("Hello", 110))
scrollView:insert(createText("Hi",    130))
scrollView:insert(createText("Bye",   150))
scrollView:insert(createText("Hello", 170))

当用

创建时
scrollView = widget.newScrollView
{
    ...

    width = 200,
    height = 100, -- portion of scrollable area you want to see

    scrollWidth = 200,
    scrollHeight = 200, -- complete content area

    ...
}

(只是与您的代码有所不同)它工作得很好。即,交换 heightscrollHeight 值。

【讨论】:

  • 我按照您的建议尝试了,但仍然出现同样的问题。当我给滚动视图中的内容提供“topvalue”时,向下滚动然后向上滚动后,滚动视图没有获得相同的值。
  • @Akshada-Systematix 然后,您唯一的选择是创建一个独立的示例:扩展您发布的代码,并在滚动视图中添加一些演示问题的内容,以便我可以将其复制到我的电晕中并测试它。注意:更新您的问题,不要发布指向键盘或其他任何内容的链接。
猜你喜欢
  • 2015-09-19
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多