3

私は1つの子(myrect)を持つスクロールビューウィジェットを持っています

「myrect」のタッチ終了イベントを検出したいのですが、現在は「開始」フェーズのみを検出しています!!

ここに完全なコードがあります

 --main.lua
 local widget = require "widget"

 local myscrollview = widget.newScrollView{}

 local myrect = display.newRect(0, 0, display.contentWidth, 68)                  
 myrect:setFillColor(255,100,100,255)
 myscrollview:insert(myrect)

 local function ontouch(event)

    if event.phase == "ended" then
            print("event ended")
    end
end
myrect:addEventListener( "touch", ontouch )

私が必要としているのは基本的な機能です。コロナがそれをサポートしていないか、何かが足りないのは奇妙です

どうもありがとう

4

2 に答える 2

4

SatheeshJM さんのコードに感謝します

しかし、最終的に私は誰かが興味を持っている場合に備えて解決策を持っています

ここにソリューションの拡張バージョンがあります

ダニーに感謝http://developer.anscamobile.com/forum/2012/05/15/scrollview-problem

この役立つ回避策については、Jonathan Beebe https://gist.github.com/1590908

local widget = require "widget"

local myscrollview = widget.newScrollView{}

local myrect = display.newRect(0, 0, display.contentWidth, 68)                  
myrect:setFillColor(255,100,100,255)
myscrollview:insert(myrect)

local function ontouch(event)

    if event.phase == "moved" then
        local dx = math.abs( event.x - event.xStart )
        local dy = math.abs( event.y - event.yStart )

        if dx > 5 or dy > 5 then
            myscrollview:takeFocus( event )
        end
    elseif event.phase == "ended" then
    display.getCurrentStage():setFocus(nil)
            print("event ended")
    end

    return true
end
myrect:addEventListener( "touch", ontouch )
于 2012-05-20T15:33:54.353 に答える
2

長方形に触れると、フェーズが「began」のタッチ イベントが発生します。

scrollview は scrollview に挿入されているため、touch イベントは scrollview に伝搬されます。したがって、スクロールビューは「開始」イベントと、対応する「移動」および「終了」フェーズを受け取ります。四角形は、これ以上タッチ イベントを受け取りません。

「終了」フェーズを本当に検出したい場合は、これを行うことができます

 local function ontouch(event)
        if event.phase == "began" then 
            return true
        elseif event.phase == "ended" then
            print("event ended")
        end
  end

しかし、落とし穴があります。長方形を押してスクロールすると、スクロールビューは機能しません。スクロールビューの空きスペースを押してスクロールする必要があります。

それが理にかなっていることを願っています!

編集:

わかりました、実際には方法があります!スクロールビュー リスナーから、イベント フォーカスを矩形オブジェクトに戻します。

 --main.lua
 local widget = require "widget"
 local myrect

 local function scrollviewListener(event)
    display.getCurrentStage():setFocus(myrect)
 end 
 local myscrollview = widget.newScrollView{listener = scrollviewListener}


 myrect = display.newRect(0, 0, display.contentWidth, 68)                  
 myrect:setFillColor(255,100,100,255)
 myscrollview:insert(myrect)


 local function ontouch(event)

    if event.phase == "ended" then
            print("event ended")
    end
end
myrect:addEventListener( "touch", ontouch )
于 2012-05-15T23:50:36.390 に答える