【问题标题】:ScrollView doesn't work - corona, luaScrollView 不起作用 - 电晕,lua
【发布时间】:2015-08-31 13:24:30
【问题描述】:

我正在尝试将对象添加到 ScrollView,这就是发生的情况:

错误:应为表。如果这是一个函数调用,您可能使用了 '.'而不是 ':

那是什么?

代码: 此代码有效:

    scrollView = widget.newScrollView  
        {                              -- ScrollView settings
            width = _W,
            height = 1760,
            horizontalScrollDisabled = true,
            hideBackground = true,
            friction = 0.988,
            x = display.contentCenterX,
            y = _H*0.55,
            isBounceEnabled = false,
            bottomPadding = 260,
            hideScrollBar = true
        }

for i = 1, #allballs do
            Frames[i] = display.newImage( "Frame.png" )
            Frames[i].height = 0.12*_H
            Frames[i].width = 0.38*_W
            Frames[i].ballImage = allballs[i].Image
            Frames[i].Purchased = allballs[i].Purchased
            Frames[i].Price = allballs[i].Price
            Frames[i].Place = i

            if (i%2==0) then
            Frames[i].y=(i-1)*140
            Frames[i].x = 0.27*_W
            PositionY = (i-1)*140
            PositionX = 0.27*_W
            else
            Frames[i].y=i*140
            Frames[i].x = 0.73*_W
            PositionY = i*140
            PositionX = 0.73*_W
            end

            if (allballs[i].Purchased) then
            balls[i] = display.newImage( allballs[i].Image )
            balls[i].height = 0.15*_W
            balls[i].width = 0.15*_W 
            balls[i].x = PositionX
            balls[i].y = PositionY  
            else
            local txtoptions = 
            {
            text = allballs[i].Price,     
            x = PositionX+0.055*_W,
            y = PositionY,
            width = 0.23*_W,  
            font = native.systemFontBold,   
            fontSize = _W*0.1,
            align = "left" 
            }
            balls[i] = display.newText( txtoptions ) 
            end      
            Frames[i]:setFillColor( 1, 1, 0.4 )
            Frames[i]:addEventListener( "tap", sellectball )
            scrollView:insert( Frames[i] )
            scrollView:insert( balls[i] )

     end

一切都很完美。但是当我添加这个(在***之间)时:

for i = 1, #allballs do
            Frames[i] = display.newImage( "Frame.png" )
            Frames[i].height = 0.12*_H
            Frames[i].width = 0.38*_W
            Frames[i].ballImage = allballs[i].Image
            Frames[i].Purchased = allballs[i].Purchased
            Frames[i].Price = allballs[i].Price
            Frames[i].Place = i

            if (i%2==0) then
            Frames[i].y=(i-1)*140
            Frames[i].x = 0.27*_W
            PositionY = (i-1)*140
            PositionX = 0.27*_W
            else
            Frames[i].y=i*140
            Frames[i].x = 0.73*_W
            PositionY = i*140
            PositionX = 0.73*_W
            end

            if (allballs[i].Purchased) then
            balls[i] = display.newImage( allballs[i].Image )
            balls[i].height = 0.15*_W
            balls[i].width = 0.15*_W 
            balls[i].x = PositionX
            balls[i].y = PositionY  
            else
            local txtoptions = 
            {
            text = allballs[i].Price,     
            x = PositionX+0.055*_W,
            y = PositionY,
            width = 0.23*_W,  
            font = native.systemFontBold,   
            fontSize = _W*0.1,
            align = "left" 
            }
            balls[i] = display.newText( txtoptions ) 
      ***** coin = display.newImage( "coin.png", PositionX-0.07*_W, PositionY)
            coin.width = _W*0.05
            coin.height = _H*0.05 *******
            end      
            Frames[i]:setFillColor( 1, 1, 0.4 )
            Frames[i]:addEventListener( "tap", sellectball )
            scrollView:insert( Frames[i] )
            scrollView:insert( balls[i] )
   *******  scrollView:insert( coin ) ********

     end

没用……

【问题讨论】:

  • 能否请您显示一些代码并澄清 Corona SDK 的版本,您正在使用?它接缝,您以错误的方式访问 ScrollView 对象。

标签: lua scrollview coronasdk


【解决方案1】:

您可能正在调用 object.method() 之类的方法,而不是 object:method() 区别在于:语法自动使用 this 作为对调用者对象的引用,使用 .语法,你必须明确输入它作为第一个参数

【讨论】:

  • 好的,我知道问题出在哪里了。您在条件“if (allballs[i].Purchased) then”中定义变量 coin 更具体地是在可能永远不会发生的“else”语句中。另一件事是您正在定义全局变量,该变量总是重写自己的参数,如果 else 语句在下一个周期中不会激活,您将插入与前一个周期完全相同的副本。只需在 else 分支中放一些 print() 语句并检查是否处理了这个语句,否则不会定义硬币
  • 非常感谢。这就是问题所在:“你在条件内定义变量 coin ” if (allballs[i].Purchased) then 更具体地是在“else”语句中,这可能永远不会发生。”
  • 现在我有另一个问题:硬币在框架下面,所以看不到。我认为这是因为我在框架之前将硬币插入到滚动视图中。我该怎么办?
  • 好的,我在框架上使用了:object:toBack() - Frame[i].toback
【解决方案2】:

错误总是像 Andoloon 指出的那样发生。

但它似乎不在您的 ******* 代码中。 ***** 部分的问题可能是您的 'coin' var 不是列表,但它是在循环中定义并插入的。尝试将其移出循环,并记住在清除之前使用本地。

【讨论】:

  • 我在本地尝试过,但它不起作用。奇怪的是,如果我在 if/else 之外写 **** 部分,它就可以工作......
【解决方案3】:

我猜 coin.png 不存在,或者可能不是完全匹配的文件名(如果您在设备上执行此操作)。在控制台日志中查找有关丢失图像的警告。

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 2015-12-23
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多