2014-11-23 84 views
1

我使用这个代码将我的对象如何从阻止对象被拖离屏幕

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 

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

+0

这已经被问,选中[这里] [1] [1]:HTTP ://stackoverflow.com/questions/26823313/how-to-make-display-to-have-frame-around-to-avoid-ball-getting-out-of-display/26856716#26856716 – JamParaiso 2014-11-25 03:13:34

回答

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”尝试:

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.你有边界,保持一致。如果你想让它撞了一下腰一点点,那么你使用“抵消”

希望帮助

+0

它的作品!!!!!但我如何为屏幕的右侧? – user1738357 2014-12-30 19:10:24

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( “enterFrame事件”,checkMonkey)

“希望的代码可以帮助。无论哪种方式应该工作,但他们可能会涉及到一些调整在您的应用程序工作

+0

把墙壁会做招。但我不同意检查它的x和y,它的定位点是0.5。该对象仍然会出现在屏幕之外。 – JamParaiso 2014-11-24 01:31:26