Lua 转换时更新目标坐标

Lua 转换时更新目标坐标,lua,coronasdk,Lua,Coronasdk,我正在科罗纳做一场比赛,我面临一个问题。我在屏幕上有一个圆圈,我想让它一直跟随触摸坐标。我正在使用transition.to函数来实现这一点,但问题是,每当此函数获得坐标时,即使坐标在转换过程中更新,它也会完成转换 if event.phase == "began" or event.phase == "moved" then follow = true touchX = event.x; touchY = event.y elseif event.phase == "ended

我正在科罗纳做一场比赛,我面临一个问题。我在屏幕上有一个圆圈,我想让它一直跟随触摸坐标。我正在使用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

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

有一些示例可以解决您的问题

参考:

1) 由卡洛斯在科罗纳社区发布

2) 伦维斯


样本:

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)

继续编码…………:)

不能向已在过渡中的对象添加新过渡。这就是为什么你应该先取消旧的转换。您可以尝试:

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

顺便说一句,如果你想拖放对象,转换在性能上是不好的

你是想拖动对象还是想让对象跟随你的触摸?我尝试了你的代码,但那是拖动对象,这不是我想要实现的。我希望对象跟随触摸。好的,我只是移除它,因为它只是拖动。你能进一步解释一下你将如何调用转换,以及它将如何结束,因为我不清楚。我使用计时器一次又一次地调用转换函数,这样每当touchX和touchY的值改变时,转换就会发生。我正在使用运行时侦听器处理触摸事件。我们创建了一个与您的代码具有相同概念的代码。只有当touchX和touchY获得最后一个值时,才会发生转换,并且在移动时它不会跟随某个点,因为它需要跟随来自最后一个touchX和touchY的值,因为我使用了TransitionTanks,它可以工作,但当我移动触摸时,它不会跟随它。您需要为此共享更多代码块。我需要看看你的全触控功能,我想你有一个事件监听器(enterframe)。谢谢,但我不是想让圆圈沿着路径走。我只想让它沿着接触点直线移动,如果我移动接触点,以前的直线路径应该被取消,新的点应该被接近。我正在给我的帖子添加一些代码。看看它是否有用。这类似于“多安·阿拉巴奇”的帖子,它奏效了!正是我想要的。谢谢你,伙计!:)我做错的事情是在另一个函数中进行转换。多亏了多安干·阿拉巴奇:)