2

コロナのタップとタッチの違いは正確にはわかりません。私は両方を使用し、オブジェクトに触れると、nextButtonに触れると画像を変更するこのコードを記述するまで、両方がイベントをリッスンしました。nextButtonをタッチしたときのように、関数を2回呼び出します。ただし、タップに変更するとスムーズに動作しました。では、タッチとタップの違いと、このコードでタッチを使用したときに問題を引き起こした原因を教えてください。

 function nextButton:touch(event)
   if i==7 then 
   else
    i=i+1   
    imageObject:removeSelf()    
    imageObject =display.newImage(imageTable[i]..".jpg")
    imageObject.x=_W/2
    imageObject.y=_H/2 
   end
 end

 nextButton:addEventListener("touch", nextButton)
4

2 に答える 2

3

コロナタッチリスナーには、次の3つの状態があります。

   function listener(event)

     if event.phase == "began" then
   -- in the 1st tap the phase will be "began"
       elseif event.phase == "moved" then
   -- after began phase when the listener will be called with moved phase,like          touched coordinates
       elseif event.phase == "ended" then
       --when the touch will end 
     end


   end

    nextButton:addEventListener("touch", listener)

-[[これは、画像、自作ボタンなどのシンプルなタッチリスナーでした。ボタンが必要な場合は、この http://developer.coronalabs.com/code/enhanced用に作成されたUIライブラリを使用してください。 -ui-library-uilua ]]

    -- example for usage
    local ui = require "ui" -- copy the ui.lua to your apps root directory

   yourButton = ui.newButton{
    defaultSrc = "menu/icon-back.png",--unpressed state image 
    x=85,
        y=display.contentHeight-50,
    defaultX = 110,
    defaultY =80,
    offset=-5,


    overSrc = "menu/icon-back-2.png",--pressed state image
    overX = 110,
    overY = 80,
    onEvent = buttonhandler,
    id = "yourBtnId" -- what you want
    }

      local function buttonhandler(event)

         if event.phase == "release" then

          --if you have more buttons handle it whit they id-s
            if event.id == "yourBtnId" then
              -- when your button was finally released (like in 1st example ended, but this will be called only if the release target is your button)
            end 

         end
      end
于 2013-01-14T08:06:25.170 に答える
1

「タップ」とは、簡単なタッチアンドリリースアクションです。タッチには、タッチ、移動してから離す、またはタッチアンドホールドなどがあります。タップイベントは、タップが発生したという1つのイベントしか取得しないため、コードを簡素化します。すべてのタッチ状態をコーディングする必要はありません。

一般的なタップハンドラは次のようになります。

local function tapHandler(event)
    -- do stuff
    return true
end

まったく同じことを行うタッチハンドラーは次のようになります。

ローカル関数touchHandler(event)if event.phase == "ended" then--do stuff end return true end

于 2013-01-20T22:05:48.833 に答える