Lua Corona - 如何在滑动过程中侦听widget.newScrollView侦听器
问题描述:
我的widget.newScrollView组件后面有一个背景图像。 我想以我的newScrollView速度的一半移动我的背景图像。 这工作正常,当我拖动我的滚动视图,但当我释放鼠标滚动视图保持滑动,但我的背景停止移动。请告诉我如何捕捉滑动事件。 非常感谢Lua Corona - 如何在滑动过程中侦听widget.newScrollView侦听器
下面是我的一些代码:
local function scrollListener(event)
local phase = event.phase
if (phase == "began") then print("Scroll view was touched")
elseif (phase == "moved") then print("Scroll view was moved")
nebulaeBgnd.x = event.x/2;
elseif (phase == "ended") then print("Scroll view was released")
end
end
local a1 = display.newImage("planetHexs/001.png", _topLeft_x, _topLeft_y);
local scrollView = widget.newScrollView(
{
top = 0,
left = 0,
width = display.actualContentWidth,
height = display.actualContentHeight,
scrollWidth = 0,
scrollHeight = 0,
listener = scrollListener,
backgroundColor = { 0, 0, 0},
verticalScrollDisabled=true;
}
scrollView:insert(a1)
答
您可以用运行enterFrame
听众做到这一点。我们有时会在游戏中做到这一点,并且效果很好。例如:
Runtime:addEventListener("enterFrame", function()
local scrollX, scrollY = scrollView:getContentPosition()
nebulaeBgnd.x = scrollX * 0.5 -- Tip: multiplication is faster than division
end)
这将不断地倾听你的滚动视图的位置,无论它被触摸或不。您可能需要通过添加或减去屏幕宽度的一半来补偿x,具体取决于您的滚动视图位置设置。你可以阅读约getContentPosition here。
一个非常重要音符上运行事件侦听器:
运行事件侦听器,而另一方面,必须当你使用完取出。否则,他们将继续运行,因为运行时事件是全局的。这不仅会导致内存泄漏,而且如果运行系统中执行的任何函数尝试引用不再存在的对象,程序将会崩溃。有关更多信息,请参阅下面的删除事件监听器。
感谢巴西利奥,那太好了 –
不客气! –