diff --git a/docs/events/mouseEvents.md b/docs/events/mouseEvents.md index e69de29..a6a63c4 100644 --- a/docs/events/mouseEvents.md +++ b/docs/events/mouseEvents.md @@ -0,0 +1,98 @@ +Here we will talk about mouse events and how you can manipulate them. There are 2 possible mouse events you can add to almost every visual object. + +# onClick +`onClick(self, button, x, y)` +The computercraft event which triggers this method is `mouse_click` and `monitor_touch`. +Any visual object can register onClick events. + +Here is a example on how to add a onClick event to your button: + +```lua +local basalt = dofile("basalt.lua") + +local mainFrame = basalt.createFrame("myMainFrame"):show() +local button = mainFrame:addButton("myButton"):setPosition(3,3):setSize(12,3):setText("Click"):show() + +function buttonOnClick() + basalt.debug("Button got clicked!") +end +button:onClick(buttonOnClick()) +``` + +# onClickUp +`onClickUp(self, button, x, y)` +The computercraft event which triggers this method is `mouse_up`. +Any visual object can register onClickUp events. + +Here is a example on how to add a onClickUp event to your button: + +```lua +local basalt = dofile("basalt.lua") + +local mainFrame = basalt.createFrame("myMainFrame"):show() +local button = mainFrame:addButton("myButton"):setPosition(3,3):setSize(12,3):setText("Click"):show() + +function buttonOnClick() + basalt.debug("Button got clicked!") +end +button:onClick(buttonOnClick) + +function buttonOnRelease() + basalt.debug("Button got released!") +end +button:onClickUp(buttonOnRelease) +``` + +# onScroll +`onScroll(self, direction, x, y)` +The computercraft event which triggers this method is `mouse_scroll`. +Any visual object can register a onScroll events. + +Here is a example on how to add a onScroll event to your button: + +```lua +local basalt = dofile("basalt.lua") + +local mainFrame = basalt.createFrame("myMainFrame"):show() +local button = mainFrame:addButton("myButton"):setPosition(3,3):setSize(12,3):setText("Click"):show() + +function buttonOnScroll() + basalt.debug("Someone scrolls on me!") +end +button:onScroll(buttonOnScroll) +``` + +# Beginner Tips + +## 1 +Not everyone knows that a function (or in other words a method) does not need to have a name. Instead of a function name you are also able to add the function itself as a argument. + +Both do the exact same thing: +```lua +local function clickButton() + basalt.debug("I got clicked!") +end +button:onClick(clickButton) +``` + +```lua +button:onClick(function() + basalt.debug("I got clicked!") +end) +``` + +## 2 +there is also a function with which you can check if the user is holding a key down, it is called `basalt.isKeyDown()`. It's especially useful for click events. +Let us say you want a button to execute something, but if you are holding ctrl down, something in the execution should get changed. This is how you would +achieve that: + +```lua +button:onClick(function() + if(basalt.isKeyDown(keys.LeftCtrl)then + basalt.debug("Ctrl is down!") + else + basalt.debug("Ctrl is up!") + end +end) +``` +