Lua - 检查光标是否在按钮内部

所以基本上,我编写了这些代码来检查我的光标是否在按钮内即鼠标悬停。它运行得很好,但我真的不喜欢我编写的if语句的方式。

- 光标=包含光标的x和y值的表
- 自身=包含按钮的x和y值的表
-自身.W返回按钮的宽度,自身.H返回按钮的高度

function mousover(cursor)
    if cursor.x >= self.x                 --如果光标在按钮左侧内
    and cursor.x <= self.x + self.W       --如果光标在按钮右侧内
    and cursor.y >= self.y                --如果光标在按钮顶部内
    and cursor.y <= self.y + self.H then  --如果光标在按钮底部内
       doSomething()
    end

有没有更好的方法来编写这个if语句?也许像进行1次计算来获取按钮的边界并进行1次检查,而不是4次来查看光标是否在内?不确定如何改进,如果你有更好的想法,欢迎分享。

要求:它需要在普通的Lua中编码,不允许使用扩展/插件等。

点赞
用户1310566
用户1310566

正如我在评论中最初所述:

没有更好的方法。

这是传统的边界框检查。一个边界框有四个边,因此你需要检查四个条件。

想一想代码正在做什么以及为什么需要这么做,然后你就应该意识到它确实需要做目前正在做的所有事情。

2015-08-25 16:57:09
用户1847592
用户1847592
```lua
function mousover(cursor)
   if math.floor((cursor.x - self.x)/self.W)^2 +
      math.floor((cursor.y - self.y)/self.H)^2 == 0 then
      -- DoSomething()
   end
end
```lua
function mousover(cursor) 
    if math.floor((cursor.x - self.x)/self.W)^2 + math.floor((cursor.y - self.y)/self.H)^2 == 0 then 
        -- DoSomething() 
    end 
end 
2015-08-25 17:03:27