0

これは簡単に実行できるように思えましたが、継続的な接触を監視する方法がわかりません。ディスプレイまたは画像に触れたいのですが、ユーザーが指を離していない限り、画像を回転させ続けます。ここに私が持っているコードの抜粋があります:

local rotate = function(event)
if event.phase == "began" then   
  image1.rotation = image1.rotation + 1
end
return true
end

Runtime:addEventListener("touch", rotate)    

画面から指が離されるまで回転させたい。アドバイスをありがとう。

4

2 に答える 2

2

これはどう?

local crate = ...
local handle
local function rotate(event)
    if event.phase == "began" and handle == nil then
        function doRotate()
            handle=transition.to(crate, 
                {delta=true, time=1000, rotation=360, onComplete=doRotate})
        end
        doRotate()
    elseif event.phase == "ended" and handle then 
        transition.cancel(handle)
        handle = nil
    end
end

Runtime:addEventListener("touch", rotate) 

これにより、回転速度をより適切に制御できます。何らかの理由でフレームがドロップし始めた場合、enterFrame に依存すると問題が発生する可能性があります。

また、ハンドルと非ハンドルのチェックは、マルチタッチに対応するためのものです。これを処理する他の方法 (およびより良い方法) がありますが、それが便利です (また、マルチタッチを使用していない場合はまったく問題になりません)。

于 2012-08-07T20:14:17.030 に答える
1

私はこれをやってしまった。より良い方法があれば、回答を投稿してください!!

local direction = 0

function scene:move()
 crate.rotation = crate.rotation + direction
end        

Runtime:addEventListener("enterFrame", scene.move)         

local function onButtonEvent( event )
  if event.phase == "press" then
    direction = 1 -- ( -1 to reverse direction )
  elseif event.phase == "moved" then
  elseif event.phase == "release" then
    direction = 0
  end
  return true
end

local button = widget.newButton{
  id = "rotate_button",    
  label = "Rotate",
  font = "HelveticaNeue-Bold",
  fontSize = 16,
  yOffset = -2,
  labelColor = { default={ 65 }, over={ 0 } },
  emboss = true,
  onEvent = onButtonEvent
} 
于 2012-08-07T16:49:28.207 に答える