The question is basically my problem. I am wondering how I can turn off an event listener but without using a debounce. Can someone help me out here? I just need a link or suggestion on how to do this I don't need you to write me a script. Any help would appreciated. Thanks!
How do I turn off an event listener?
3 answers
Connect returns a signal connection object that allows you to disconnect the listener from the event. You can do this by calling Disconnect on the object
Example
local connection = object.Event:Connect(f)
connection:Disconnect()
Some people create their own APIs for binding events to manage Disconnect better, or just because they don't like using ROBLOX's API. There's no method in the ROBLOX API for disconnecting all listeners from an event, so often you'll see people do something like this...
local EventSignal = {}
local function connectSignal(self, func)
local connections = self.connections
local signal = self.bindable.Event:Connect(func)
connections[#connections + 1] = signal -- add signal to connections
return -- return some disconnector
end
local function disconnectAll(self)
local connections = self.connections
for i = 1, #connections do
connections[i]:Disconnect() -- disconnect roblox event signal
connections[i] = nil
end
end
function EventSignal.new()
local signal = {}
local bindable = Instance.new("BindableEvent") -- ref to roblox api
signal.connections = {}
signal.bindable = bindable
signal.Connect = connectSignal
signal.DisconnectAll = disconnectAll
setmetatable(signal, { __index = bindable })
return signal
end
It's not perfect but that's just meant to show you how it can make life while programming a little bit easier if you're managing a lot of events.
Declare the event connection as a variable. Then you can use Disconnect() on it.
Example:
local ev
ev = part.Touched:Connect(function(hit)
--stuff
ev:Disconnect()
end)
Or if you want to use an event only once, you can use event:Wait(), like this:
local hit = part.Touched:Wait()
--stuff
1 comment
You can "disconnect" your Event in various ways.
http://wiki.roblox.com/index.php?title=Destroy_(Method) You can destroy the Event to disconnect it fully, even though you won't be able to use it back again. (Even though you can add a new instance with the same properties as the old Event.
Using :Disconnect() in the event. Here's an example:
-- "PartTouched" is now a identifier for what ":Connect()" returns, which is the event signal for this event.
local PartTouched = Part.Touched:Connect(function()
print("Part touched")
end)
-- You can use the :Disconnect() method in the event you made a variable with.
PartTouched:disconnect()
1 comment
You cannot "destroy the event". RBXScriptConnection can't be used with Destroy(). I think you meant destroying an object disconnects all of its events. But that's still a bad way to disconnect events, since that's what Disconnect() is for. Also, you wrote "disconnect()" instead of "Disconnect()" on the last line ;p
This discussion is preserved as it was. New answers, comments, and votes are closed.

1 comment
Thank you!