Lua Corona - 如何在滑动过程中侦听widget.newScrollView侦听器

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

一个非常重要音符上运行事件侦听器:

运行事件侦听器,而另一方面,必须当你使用完取出。否则,他们将继续运行,因为运行时事件是全局的。这不仅会导致内存泄漏,而且如果运行系统中执行的任何函数尝试引用不再存在的对象,程序将会崩溃。有关更多信息,请参阅下面的删除事件监听器。

Here is the documentation about removing event listeners

+0

感谢巴西利奥,那太好了 –

+0

不客气! –