Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How does debounce work?

Asked by 9 years ago

Apparently it stops the code from repeating it's self. How do I use it please?

2 answers

Log in to vote
0
Answered by 9 years ago

All scripts on the server are shared with all of the clients/players. The idea is to stop any unwanted input whilst the code is processing.

An good example is the touched event, which can be triggered many times by one or more objects.

local debounce  = true --this needs to be outside of the event otherwise it will be overwritten when the event is ran which is what we want to avoid.

[random object].Touched:connect(function (part)

    if debounce  then --debounce is true so the code will run
        debounce  = false --code is in use

        --your processing ect


        debounce = true --code finished allow another even
    end

end)

This will only enable one event to be processed at any one time and stops any overflow of events.

0
Alright thanks! WolfgangVonPrinz 0 — 9y
0
The event is still being processed, but the code inside the conditional won't be processed. DigitalVeer 1473 — 9y
Ad
Log in to vote
0
Answered by 9 years ago

A Debounce is a method in the .lua language that prevents a Function from firing multiple times on execution, or as kingdom5 had explained, to prevent another from firing while code is being processed. This is primarily used for Functions that use the Touched event, and other functions, as sometimes I use it for GUIs. This is an example of a function without a Debounce:

function onTouch() --Here is out function
    print("I printed first! :D") --This will print into the Output when the function is called
    wait(2) --Waits two seconds before going onto the next code
    print("I printed second! :D") --Prints into the Output two seconds after the first
end --Ends the chunk

Part.Touched:connect(onTouch) --Connects the Event 'Touched' to a 'BasePart' Instance

And as a result, the Output would look something like this:

--[[
    I printed first! :D
    I printed first! :D
    I printed first! :D
    I printed first! :D
    I printed first! :D
    I printed first! :D
    I printed first! :D
    I printed first! :D
    I printed second! :D
    I printed second! :D
    I printed second! :D
    I printed second! :D
    I printed second! :D
    I printed second! :D
    I printed second! :D
    I printed second! :D
--]]

Now, a function with a Debounce:

local Debounce = true --Here is our Debounce; It'll prevent the function from firing multiple times

function onTouch() --Here is our function
    if Debounce then --The 'if' statement is checking if 'Debounce' is true; The 'if' statement checks if the Condition is equal to it's Argument
        Debounce = false --If so, it'll set 'Debounce' to 'false', starting the 'Debounce'
        print("I fired! :D") --This will print into the 'Output' first
        wait(2) --Waits two seconds
        print("I fired last! :D") --Prints afterwards
        Debounce = true --Sets 'Debounce' back to 'true', allowing the function to be used again
    end  --Ends the chunk to the 'if' statement
end --Ends the chunk

Part.Touched:connect(onTouch)

And, as a result, the Output will look like this:

--[[
    I fired! :D
    I fired last! :D
    I fired! :D
    I fired last! :D
    I fired! :D
    I fired last! :D
    I fired! :D
    I fired last! :D
--]]

Information left out:

  1. The If statement is used to check if a Condition is equal to it's Argument, or if the Condition is true.

Hope this helped!

Answer this question