2

我正在电晕中制作游戏,但遇到了问题。我在屏幕上有一个圆圈,我希望它连续跟随触摸坐标。我正在使用 transition.to 函数来执行此操作,但问题是,每当此函数获取坐标时,即使在转换期间更新了坐标,它也会完成转换。

if event.phase == "began" or event.phase == "moved" then
    follow = true
    touchX = event.x; touchY = event.y
elseif event.phase == "ended" then
    follow = false
end

在另一个函数中,我正在这样做

if follow == true then
    transition.to(circle, {time = 500, x = touchX, y = touchY, transition = easing.inOutQuad})
end

该代码适用于简单的触摸,但我希望圆圈即使在移动时也能跟随触摸。

4

2 回答 2

1

有一些例子可以解决你的问题。

参考:

1)卡洛斯在电晕社区发布的飞行路径。

2)通过 renvis移动对象通过路径


样本:

local circle = display.newCircle(10,10,20)
circle.x = 160
circle.y = 160

local olderTransition
local function moveCircle(e)
  if olderTransition ~= nil then
    transition.cancel( olderTransition )
  end
  olderTransition = transition.to(circle,{time=100,x=e.x,y=e.y})
end
Runtime:addEventListener("touch",moveCircle)

继续编码............ :)

于 2013-07-17T09:43:28.157 回答
1

您不能将新的过渡添加到已经处于过渡中的对象。这就是为什么你应该先取消旧的过渡。你可以试试 :

local olderTransition -- This should be visible outside of your function
local function blabla()
    if follow == true then
        if olderTransition ~= nil then
            transition.cancel( olderTransition )
        end
        olderTransition = transition.to(circle, {time = 500, x = touchX, y = touchY, transition = easing.inOutQuad, onComplete = function() olderTransition = nil end })
    end
end

顺便说一句,如果你想拖放对象,过渡在性能方面很糟糕

于 2013-07-17T09:47:13.250 回答