【问题标题】:Update the target coordinates while transitioning过渡时更新目标坐标
【发布时间】:2013-07-15 13:15:33
【问题描述】:

我正在电晕中制作游戏,但遇到了问题。我在屏幕上有一个圆圈,我希望它连续跟随触摸坐标。我正在使用 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

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

【问题讨论】:

  • 您是在尝试拖动对象还是希望对象跟随您的触摸?
  • 我试过你的代码,但那是拖动对象,这不是我想要实现的。我希望对象跟随触摸。
  • 好的,我只是将其删除,因为它只是在拖动,您能否进一步解释一下您将如何调用转换以及它将如何结束,因为我不清楚?
  • 我使用计时器一次又一次地调用转换函数,这样只要 touchX 和 touchY 的值发生变化,就会发生转换。我正在为触摸事件使用运行时监听器。
  • 很好地创建了一个与您的概念相同的代码,仅当 touchX 和 touchY 获得最后一个值时才会发生转换,并且在移动时它不会跟随某个点,因为它需要跟随来自最后一个值的值touchX 和 touchY,我什至不能做圆周运动,因为我正在使用过渡

标签: lua coronasdk


【解决方案1】:

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

参考:

1) Flight Path 由 carlos 在 corona 社区发布。

2) Move Object through a path by 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)

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

【讨论】:

  • 谢谢,但我不想让圆圈跟随路径。我只希望它沿着直线跟随触摸点,如果我移动触摸,则应取消先前的直线路径并应接近新点。
  • 我在我的帖子中添加了一些代码。看看有没有用。这与“Doğancan Arabacı”的帖子类似。
  • 成功了!正是我想要的。谢啦! :) 我做错的事情是在另一个函数中进行转换。还要感谢 Doğancan Arabacı :)
【解决方案2】:

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

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

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

【讨论】:

  • 谢谢,它可以工作,但是当我移动触摸时,它不跟随它
  • 您需要为此共享更多代码块。我需要查看你的所有触摸功能,我猜你有一个事件监听器( enterframe )。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 2023-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
相关资源
最近更新 更多