ScrollView 不工作 - 电晕,lua
ScrollView doesn't work - corona, lua
我正在尝试向 ScrollView
添加对象,结果是这样的:
ERROR:Table expected. if this is a function call, you might have used '.' instead of ':
那是什么?
代码:
此代码有效:
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
它起作用了...
您可能正在调用 object.method() 之类的方法,而不是 object:method()
区别在于 : 语法自动使用 this 作为对调用者对象的引用,而 .语法,您必须将其显式键入为第一个参数
错误总是因为Andoloon指出的原因而发生。
但它似乎不在您的 ******* 代码中。 ***** 部分的问题可能是您的 'coin' var 不是列表,但它是在循环中定义和插入的。尝试将其移出循环并记住在声明之前使用 local 。
我猜 coin.png 不存在,或者可能不是完全匹配的文件名(如果您在设备上执行此操作)。在您的控制台日志中查找有关丢失图像的警告。
我正在尝试向 ScrollView
添加对象,结果是这样的:
ERROR:Table expected. if this is a function call, you might have used '.' instead of ':
那是什么?
代码: 此代码有效:
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
它起作用了...
您可能正在调用 object.method() 之类的方法,而不是 object:method() 区别在于 : 语法自动使用 this 作为对调用者对象的引用,而 .语法,您必须将其显式键入为第一个参数
错误总是因为Andoloon指出的原因而发生。
但它似乎不在您的 ******* 代码中。 ***** 部分的问题可能是您的 'coin' var 不是列表,但它是在循环中定义和插入的。尝试将其移出循环并记住在声明之前使用 local 。
我猜 coin.png 不存在,或者可能不是完全匹配的文件名(如果您在设备上执行此操作)。在您的控制台日志中查找有关丢失图像的警告。