2015-08-25 7 views
-1

, поэтому в основном я написал эти строки кода, чтобы проверить, находится ли курсор внутри кнопки aka mousover. Он работает отлично, но мне действительно не нравится, как я написал if-statement.Lua - проверьте, находится ли курсор внутри кнопки

--cursor  = table containing x and y value of cursor 
--self   = table containing x and y value of button 
--self.W  = returns width of button 
--self.H  = return height of button 

function mousover(cursor) 
    if cursor.x >= self.x     --if cursor is inside of button from left side 
    and cursor.x <= self.x + self.W  --if cursor is inside of button from right side 
    and cursor.y >= self.y    --if cursor is inside of button from top side 
    and cursor.y <= self.y + self.H then --if cursor is inside of button from bottom side 
     doSomething() 
    end 

Есть ли лучший способ, чтобы написать этот если-заявление? Может быть, как сделать 1 расчет, чтобы получить границы кнопки и сделать 1 проверить, а не 4, чтобы увидеть, находится ли курсор внутри? Не уверен, как я могу улучшить это, если у вас есть идея, PLS поделиться.

ТРЕБОВАНИЯ: Он должен быть закодирован в простой Lua, никакие расширения/плагины/etc не разрешены.

+0

код кажется штрафа для меня (может абстрагировать в функции), но так как это работает, это должно быть на [обзор кода] (http://codereview.stackexchange.com/). – ryanpattison

ответ

3

Как я первоначально заявил в комментарии:

Нет нет лучшего способа.

Это традиционная проверка рампы. Ограничивающая коробка имеет четыре стороны, поэтому вам нужно проверить четыре условия.

Подумайте, что делает код и почему он это делает, тогда вы должны понимать, что ему действительно нужно делать все, что в настоящее время делает.

-1
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 
+0

Я сомневаюсь, что это «лучше». Это может быть меньше кода, но оно менее читаемо и имеет меньшую производительность. –

Смежные вопросы