【问题标题】:how to stop objects from being dragged off screen如何阻止对象被拖出屏幕
【发布时间】:2014-11-24 13:20:06
【问题描述】:

我正在使用此代码来移动我的对象

 function myObject( event )
    if event.phase == "began" then

        monkey.markX = monkey.x    -- store x location of object
       -- monkey.markY = monkey.y    -- store y location of object

    elseif event.phase == "moved" then

        local x = (event.x - event.xStart) + monkey.markX
      --  local y = (event.y - event.yStart) + monkey.markY
        if monkey.x <= screenLeft then
            print("left")
        monkey.x = 250
        else
        end

       monkey.x = x    -- move object based on calculations above
    end

    return true

end

问题是使用此代码可以将角色拖出屏幕,我不希望这种情况发生。 将不胜感激提供有关如何阻止此表单发生的代码说明

【问题讨论】:

标签: lua coronasdk


【解决方案1】:

你错了

 local x = (event.x - event.xStart) + monkey.markX
 if monkey.x <= screenLeft then
     print("left")
     monkey.x = 250
 else
 end
 monkey.x = x

不管你有什么条件,你做的最后一件事就是 "monkey.x = x" try:

local offset = 0
local x = (event.x - event.xStart) + monkey.markX
if monkey.x <= screenLeft then
    print("left")
    monkey.x = screenLeft + offset
else
    monkey.x = x
end

此外,您应该使用“screenLeft”而不是 250。您有边界,保持一致。如果你想让它稍微向后一点,那么你可以使用'offset'

希望有帮助

【讨论】:

    【解决方案2】:

    你可以做的是让猴子成为一个动态的物理体,然后把静态墙必不可少的放在屏幕外面。从理论上讲,这应该可以防止用户将猴子拖到给定空间之外。

    您可能会这样做的另一种方法是让运行时事件检查猴子是否在当前区域之外,将它们移动到不同的区域。

    例如:

     function(checkMonkey)
        if monkey.x >= 0 then
        monkey.x = a default number
        end
        --repeat that with x as 250 (or whatever the x height is), y as 0, as y as 400 (or what ever the y height is)
     end --function ends the checkMonkey function
    

    Runtime:addEventListener("enterFrame", checkMonkey)

    ' 希望代码有所帮助。无论哪种方式都应该有效,但它们可能需要进行一些调整才能在您的应用中工作

    【讨论】:

    • 贴墙就可以了。但我不同意检查它的 x 和 y,它的锚点在 0.5 中是什么。该对象仍会出现在屏幕之外。
    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 2017-10-28
    • 2021-09-09
    相关资源
    最近更新 更多