Skip to content

EventListener

EventListeners are returned by Events when you connect a listener function to them.

Properties

Property Name Return Type Description Tags
isConnected boolean Returns true if this listener is still connected to its event. false if the event owner was destroyed or if Disconnect was called. Read-Only

Functions

Function Name Return Type Description Tags
Disconnect() None Disconnects this listener from its event, so it will no longer be called when the event is fired. None

Examples

Example using:

Disconnect

isConnected

When Connect() is called, an EventListener structure is returned. In some situations it's good to save the listener in order to disconnect from the event later. In the following example, we are listening for the local player gaining or losing resources. However, if this script is destroyed for some reason, then it will be hanging in memory due to the event connection. In this case it's important to Disconnect() or a small memory leak is created. This script presumes to be in a Client Context.

function OnResourceChanged(player, resName, resValue)
    print("Resource " .. resName .. " = " .. resValue)
end

local resourceChangedListener = nil

function OnPlayerJoined(player)
    if player == Game.GetLocalPlayer() then
        resourceChangedListener = player.resourceChangedEvent:Connect(OnResourceChanged)
    end
end

if Game.GetLocalPlayer() then
    OnPlayerJoined(Game.GetLocalPlayer())
else
    Game.playerJoinedEvent:Connect(OnPlayerJoined)
end

function OnDestroyed(obj)
    if resourceChangedListener and resourceChangedListener.isConnected then
        resourceChangedListener:Disconnect()
        resourceChangedListener = nil
    end
end

script.destroyEvent:Connect(OnDestroyed)

See also: Event.Connect | Game.GetLocalPlayer | Player.resourceChangedEvent | CoreObject.destroyEvent | CoreLua.print



Last update: March 1, 2021