2016-09-30 165 views
1

我的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) 

回答

0

您可以用運行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

不客氣! –