如何阻止物体被拖出屏幕

时间:2014-11-23 18:02:14

标签: lua corona

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

 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

问题是,使用此代码可以将字符拖离屏幕,我不希望这种情况发生。 关于如何阻止这种形式发生的代码的解释将不胜感激

2 个答案:

答案 0 :(得分:1)

你犯了一个错误

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

无论你有条件,你做的最后一件事是&#34; monkey.x = x&#34;尝试:

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

另外,你应该使用&#39; screenLeft&#39;而不是250.你有边界,保持一致。如果您希望它稍微反弹一下,那么您可以使用&#39;偏移&#39;

希望有所帮助

答案 1 :(得分:0)

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

你可以做的另一种方法是让运行时事件检查猴子是否在当前区域之外,将它们移动到另一个区域。

例如:

 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

运行时:addEventListener(&#34; enterFrame&#34 ;, checkMonkey)

&#39;希望代码有所帮助。无论哪种方式都可行,但它们可能需要进行一些调整才能在您的应用中运行