Use wheelmoved function

This commit is contained in:
Raman Varabets 2015-10-31 23:36:41 +08:00
parent a5fd850adb
commit 4ef34ccc5b
6 changed files with 176 additions and 111 deletions

View File

@ -244,6 +244,17 @@ function loveframes.mousereleased(x, y, button)
end end
--[[---------------------------------------------------------
- func: wheelmoved(x, y)
- desc: called when the player moves a mouse wheel
--]]---------------------------------------------------------
function loveframes.wheelmoved(x, y)
local base = loveframes.base
base:wheelmoved(x, y)
end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
- func: keypressed(key, isrepeat) - func: keypressed(key, isrepeat)
- desc: called when the player presses a key - desc: called when the player presses a key

View File

@ -164,6 +164,41 @@ function newobject:mousereleased(x, y, button)
end end
--[[---------------------------------------------------------
- func: wheelmoved(x, y)
- desc: called when the player moves a mouse wheel
--]]---------------------------------------------------------
function newobject:wheelmoved(x, y)
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
local children = self.children
local internals = self.internals
if not visible then
return
end
if children then
for k, v in ipairs(children) do
v:wheelmoved(x, y)
end
end
if internals then
for k, v in ipairs(internals) do
v:wheelmoved(x, y)
end
end
end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
- func: keypressed(key, isrepeat) - func: keypressed(key, isrepeat)
- desc: called when the player presses a key - desc: called when the player presses a key

View File

@ -168,32 +168,6 @@ function newobject:mousepressed(x, y, button)
end end
end end
local bar = false
if self.vbar and self.hbar then
bar = self:GetVerticalScrollBody():GetScrollBar()
elseif self.vbar and not self.hbar then
bar = self:GetVerticalScrollBody():GetScrollBar()
elseif not self.var and self.hbar then
bar = self:GetHorizontalScrollBody():GetScrollBar()
end
if self:IsTopList() and bar then
if self.dtscrolling then
local dt = love.timer.getDelta()
if button == "wu" then
bar:Scroll(-scrollamount * dt)
elseif button == "wd" then
bar:Scroll(scrollamount * dt)
end
else
if button == "wu" then
bar:Scroll(-scrollamount)
elseif button == "wd" then
bar:Scroll(scrollamount)
end
end
end
for k, v in ipairs(self.internals) do for k, v in ipairs(self.internals) do
v:mousepressed(x, y, button) v:mousepressed(x, y, button)
end end
@ -223,6 +197,41 @@ function newobject:mousereleased(x, y, button)
end end
--[[---------------------------------------------------------
- func: wheelmoved(x, y)
- desc: called when the player moves a mouse wheel
--]]---------------------------------------------------------
function newobject:wheelmoved(x, y)
local scrollamount = self.mousewheelscrollamount
if self.hover and button == 1 then
local baseparent = self:GetBaseParent()
if baseparent and baseparent.type == "frame" then
baseparent:MakeTop()
end
end
local bar = false
if self.vbar and self.hbar then
bar = self:GetVerticalScrollBody():GetScrollBar()
elseif self.vbar and not self.hbar then
bar = self:GetVerticalScrollBody():GetScrollBar()
elseif not self.vbar and self.hbar then
bar = self:GetHorizontalScrollBody():GetScrollBar()
end
if self:IsTopList() and bar then
if self.dtscrolling then
local dt = love.timer.getDelta()
bar:Scroll(-y * scrollamount * dt)
else
bar:Scroll(-y * scrollamount)
end
end
end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
- func: CalculateSize() - func: CalculateSize()
- desc: calculates the size of the object's children - desc: calculates the size of the object's children

View File

@ -210,34 +210,13 @@ function newobject:mousepressed(x, y, button)
end end
local selfcol = loveframes.util.BoundingBox(x, self.x, y, self.y, 1, self.width, 1, self.height) local selfcol = loveframes.util.BoundingBox(x, self.x, y, self.y, 1, self.width, 1, self.height)
local toplist = self:IsTopList()
local internals = self.internals local internals = self.internals
local children = self.children local children = self.children
local scrollamount = self.mousewheelscrollamount
if not selfcol and self.canremove and button == 1 then if not selfcol and self.canremove and button == 1 then
self:Close() self:Close()
end end
if self.vbar and toplist then
local bar = internals[1].internals[1].internals[1]
local dtscrolling = self.dtscrolling
if dtscrolling then
local dt = love.timer.getDelta()
if button == "wu" then
bar:Scroll(-scrollamount * dt)
elseif button == "wd" then
bar:Scroll(scrollamount * dt)
end
else
if button == "wu" then
bar:Scroll(-scrollamount)
elseif button == "wd" then
bar:Scroll(scrollamount)
end
end
end
for k, v in ipairs(internals) do for k, v in ipairs(internals) do
v:mousepressed(x, y, button) v:mousepressed(x, y, button)
end end
@ -282,6 +261,29 @@ function newobject:mousereleased(x, y, button)
end end
--[[---------------------------------------------------------
- func: wheelmoved(x, y)
- desc: called when the player moves a mouse wheel
--]]---------------------------------------------------------
function newobject:wheelmoved(x, y)
local toplist = self:IsTopList()
local internals = self.internals
local scrollamount = self.mousewheelscrollamount
if self.vbar and toplist then
local bar = internals[1].internals[1].internals[1]
local dtscrolling = self.dtscrolling
if dtscrolling then
local dt = love.timer.getDelta()
bar:Scroll(-y * scrollamount * dt)
else
bar:Scroll(-y * scrollamount)
end
end
end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
- func: AddItem(object) - func: AddItem(object)
- desc: adds an item to the object - desc: adds an item to the object

View File

@ -203,11 +203,7 @@ function newobject:mousepressed(x, y, button)
return return
end end
local toplist = self:IsTopList()
local hover = self.hover local hover = self.hover
local vbar = self.vbar
local hbar = self.hbar
local scrollamount = self.mousewheelscrollamount
local children = self.children local children = self.children
local internals = self.internals local internals = self.internals
@ -218,27 +214,6 @@ function newobject:mousepressed(x, y, button)
end end
end end
if vbar or hbar then
if toplist then
local bar = self:GetScrollBar()
local dtscrolling = self.dtscrolling
if dtscrolling then
local dt = love.timer.getDelta()
if button == "wu" then
bar:Scroll(-scrollamount * dt)
elseif button == "wd" then
bar:Scroll(scrollamount * dt)
end
else
if button == "wu" then
bar:Scroll(-scrollamount)
elseif button == "wd" then
bar:Scroll(scrollamount)
end
end
end
end
for k, v in ipairs(internals) do for k, v in ipairs(internals) do
v:mousepressed(x, y, button) v:mousepressed(x, y, button)
end end
@ -249,6 +224,30 @@ function newobject:mousepressed(x, y, button)
end end
--[[---------------------------------------------------------
- func: wheelmoved(x, y)
- desc: called when the player moves a mouse wheel
--]]---------------------------------------------------------
function newobject:wheelmoved(x, y)
local toplist = self:IsTopList()
local vbar = self.vbar
local hbar = self.hbar
local scrollamount = self.mousewheelscrollamount
if (vbar or hbar) and toplist then
local bar = self:GetScrollBar()
local dtscrolling = self.dtscrolling
if dtscrolling then
local dt = love.timer.getDelta()
bar:Scroll(-y * scrollamount * dt)
else
bar:Scroll(-y * scrollamount)
end
end
end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
- func: AddItem(object) - func: AddItem(object)
- desc: adds an item to the object - desc: adds an item to the object

View File

@ -218,45 +218,6 @@ function newobject:mousepressed(x, y, button)
end end
end end
if button == "wu" then
local buttonheight = self:GetHeightOfButtons()
local col = loveframes.util.BoundingBox(self.x, x, self.y, y, self.width, 1, buttonheight, 1)
local visible = internals[numinternals - 1]:GetVisible()
if col and visible then
local scrollamount = self.mousewheelscrollamount
local dtscrolling = self.dtscrolling
if dtscrolling then
local dt = love.timer.getDelta()
self.offsetx = self.offsetx + scrollamount * dt
else
self.offsetx = self.offsetx + scrollamount
end
if self.offsetx > 0 then
self.offsetx = 0
end
end
end
if button == "wd" then
local buttonheight = self:GetHeightOfButtons()
local col = loveframes.util.BoundingBox(self.x, x, self.y, y, self.width, 1, buttonheight, 1)
local visible = internals[numinternals]:GetVisible()
if col and visible then
local bwidth = self:GetWidthOfButtons()
local scrollamount = self.mousewheelscrollamount
local dtscrolling = self.dtscrolling
if dtscrolling then
local dt = love.timer.getDelta()
self.offsetx = self.offsetx - scrollamount * dt
else
self.offsetx = self.offsetx - scrollamount
end
if ((self.offsetx + bwidth) + self.width) < self.width then
self.offsetx = -(bwidth + 10)
end
end
end
for k, v in ipairs(internals) do for k, v in ipairs(internals) do
v:mousepressed(x, y, button) v:mousepressed(x, y, button)
end end
@ -300,6 +261,54 @@ function newobject:mousereleased(x, y, button)
end end
--[[---------------------------------------------------------
- func: wheelmoved(x, y)
- desc: called when the player moves a mouse wheel
--]]---------------------------------------------------------
function newobject:wheelmoved(x, y)
local internals = self.internals
local numinternals = #internals
if y < 0 then
local buttonheight = self:GetHeightOfButtons()
local col = loveframes.util.BoundingBox(self.x, x, self.y, y, self.width, 1, buttonheight, 1)
local visible = internals[numinternals - 1]:GetVisible()
if col and visible then
local scrollamount = -y * self.mousewheelscrollamount
local dtscrolling = self.dtscrolling
if dtscrolling then
local dt = love.timer.getDelta()
self.offsetx = self.offsetx + scrollamount * dt
else
self.offsetx = self.offsetx + scrollamount
end
if self.offsetx > 0 then
self.offsetx = 0
end
end
elseif y > 0 then
local buttonheight = self:GetHeightOfButtons()
local col = loveframes.util.BoundingBox(self.x, x, self.y, y, self.width, 1, buttonheight, 1)
local visible = internals[numinternals]:GetVisible()
if col and visible then
local bwidth = self:GetWidthOfButtons()
local scrollamount = y * self.mousewheelscrollamount
local dtscrolling = self.dtscrolling
if dtscrolling then
local dt = love.timer.getDelta()
self.offsetx = self.offsetx - scrollamount * dt
else
self.offsetx = self.offsetx - scrollamount
end
if ((self.offsetx + bwidth) + self.width) < self.width then
self.offsetx = -(bwidth + 10)
end
end
end
end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
- func: AddTab(name, object, tip, image) - func: AddTab(name, object, tip, image)
- desc: adds a new tab to the tab panel - desc: adds a new tab to the tab panel