local rect = display.newRect(100, 100, 100, 100)
local moving, moving2
function moving()
transition.to(rect, {time=500, x=300, y=100, onComplete=moving2})
end
function moving2()
transition.to(rect, {time=500, x=100, y=300, onComplete=moving})
end
大家好。我是Lua的新手,所以我想知道为什么我的矩形不会在我的屏幕上移动这个功能?当我只使用下面的代码时,它会移动但最后会停止。我希望它反复从一边移动到另一边:
local rect = display.newRect(100, 100, 100, 100)
transition.to(rect, {time=500, x=300, y=100, onComplete=moving2})
答案 0 :(得分:2)
您需要调用其中一个功能。只是说:
moving()
作为最后一行。
答案 1 :(得分:2)
就像他们说的那样,因为你没有打电话,所以不会动
moving()
要么
moving2()
在你的代码中。
您知道,在onComplete参数中,您没有使用两个不同的函数执行此复杂的操作。通过更改缓动函数并将iterations
参数设置为-1
以获得无限循环,您可以通过一次转换对对象产生相同的效果。
以下是可用的缓动功能列表:http://docs.coronalabs.com/api/library/easing/index.html,您可以看到easing.continuousLoop
功能可以执行您想要的操作。
您可以尝试这样的事情:
local rect = display.newRect(100, 300, 100, 100)
transition.to(rect, {
time = 500,
x = 300,
y = 100,
iterations = -1,
transition = easing.continuousLoop,
})
答案 2 :(得分:0)
答案 3 :(得分:0)
感谢大家,最终将moving ()
放在最后
我已经用easing.continuousLoop
快速尝试了最后一段代码,但它并没有完全符合我的要求,但我会在以后深入检查,因为它可能会有所帮助
无论如何,谢谢所有
答案 4 :(得分:0)
哦,伙计,使用本地对象并从两个转换中调用它在某种程度上会导致严重错误,使用现有代码将“rect”传递给每个转换,因此它不会被“仍然在过渡“。
local rect = display.newRect(100, 100, 100, 100)
local moving, moving2
function moving(inObj)
if (inObj == nil) then inObj = rect end
transition.to(inObj, {time=500, x=300, y=100, onComplete = function(iObj)
moving2(iObj)
end})
end
function moving2(inObj)
transition.to(inObj, {time=500, x=100, y=300, onComplete, onComplete = function(iObj)
moving(iObj)
end})
end
或强>
如果你只是想偷懒:)
local rect = display.newRect(100, 100, 100, 100)
local movingIndex = 0
local moveData = {
{time = 500, x = 300, y = 100},
{time = 500, x = 300, y = 100}
}
function MoveObject(inObj)
movingIndex = movingIndex + 1
if (movingIndex > #moveData) then movingIndex = 1 end
transition.to(inObj, {tag = "movingObjects", time=moveData[movingIndex].time, x=moveData[movingIndex].x, y=moveData[movingIndex].y, onComplete = function(iObj)
MoveObject(iObj)
end})
end
MoveObject(rect)
这样你只需要一个函数,只需将动画点添加到moveData表中即可:)
通过使用tag =“movingObjects”标记转换,我们可以暂停和恢复任何正在运行的转换,只需要一个调用,如transition.pause(“movingObjects”)或取消等,当你想要暂停和/或移动到另一个看不必等待转换结束或将其包装在pcall()
中只是值得深思:)
btw ::我没有测试上面的代码我只是在这个编辑器中编写它,所以可能有一两件需要tweeeking的东西。