2016-09-30 7 views
1

私は、私のwidget.newScrollViewコンポーネントの背後に背景イメージを持っています。 newScrollViewの半分のスピードで背景画像を移動したい。 私はスクロールビューをドラッグしている間、この動作はOKですが、マウスを離すとスクロールビューはスライドし続けますが、バックグラウンドは動かなくなります。スライドイベントをトラップする方法を教えてください。Luaコロナ - スライド中に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について読むことができます。ランタイムイベントリスナーの

本当に重要注:あなたがそれらを使用して終了したら

ランタイムイベントリスナー、一方で、削除する必要があります。それ以外の場合は、Runtimeイベントがグローバルであるため実行され続けます。これによりメモリリークが発生するだけでなく、実行時に実行される関数が存在しなくなったオブジェクトを参照しようとすると、プログラムがクラッシュします。詳細については、以下のイベントリスナーの削除を参照してください。

Here is the documentation about removing event listeners

+0

ありがとうBasilio、それは素晴らしいです –

+0

あなたはようこそ! –

関連する問題