滚动组中的触控功能
我正在尝试将触摸事件侦听器添加到放置在滚动组中的对象。滚动部分工作正常,但触摸功能的“结束”部分从未注册。
我已经看到其他人遇到过这个问题,但他们的解决方案从未解决我的问题 - 我还没有看到任何使用表。在我下面的代码中,它实现了解决其他人问题的代码。
我曾尝试以不同的顺序重新组织所有内容,但这似乎并没有改变任何东西。
local widget = require("widget")
local scrollView = widget.newScrollView
{
left = 100,
top = 200,
width = 900,
height = 500,
maskFile = "white.png"
scrollWidth = 2000,
scrollHeight = 400,
hideBackground = true,
friction = 0.9 --0 is slowest
}
scrollView.x = 0
scrollView.y = H/2 - scrollView.height/2
上面的滚动屏幕工作正常...
local page = {}
page[1] = {exists = true}
page[2] = {exists = true}
page[3] = {exists = true}
page[4] = {exists = true}
page[5] = {exists = true}
page[6] = {exists = true}
page[7] = {exists = true}
page[8] = {exists = true}
page[9] = {exists = false}
page[10] = {exists = false}
上面我创建了一个表。
for i = 1,#page do
if page[i].exists == true then
page[i].img = display.newImage("images/"..myScene..i..".png") --makes the different page link images
else
page[i].img = display.newImage("images/coming.png")
end
page[i].img:setReferencePoint( display.CenterReferencePoint)
page[i].img.x = (W+(i*2*W))/9 - 2*W/8 + 50
page[i].img.y = scrollView.height/4+20
if i > #page/2 then
page[i].img.x = (W+((i-#page/2)*2*W))/9 - 2*W/8 + 50
page[i].img.y = page[i].img.y + scrollView.height/2-20
end
local img = page[i].img
我将其重命名为局部变量,因为触摸功能不喜欢 [ ]
scrollView:insert(img)
group:insert(scrollView)
function img:touch(e)
if e.phase == "began" then
display.getCurrentStage():setFocus( img )
img.isFocus = true
elseif e.phase == "moved" then
local dx = math.abs( e.x - e.xStart )
local dy = math.abs( e.y - e.yStart )
if dx > 10 or dy > 10 then
scrollView:takeFocus( event )
end
上面的部分据说可以为其他人解决这个问题。它检查 x 或 y 转换是否超过 10 将焦点放在我的滚动视图上
elseif e.phase == "ended" then --it never gets to this part...
if page[i].exists == true then
storyboard.gotoScene(myScene..i)
else
audio.play(soon)
end
end
end
img:addEventListener("touch")
end