Signal - 이벤트 생성과 연결¶
읽기 전...
모듈 설정시 .Init()
처럼 QuadId 란을 비워두는 경우 Bindable
, Disconnecter
기능이 코드를 넘어 공유되지 않습니다
하지만 .Init("Project1")
처럼 아이디를 부여하는 경우 다른 모듈, 로컬스크립트가 접근하더라도 같은 QuadId 를 가졌다면 Bindable
, Disconnecter
는 공유됩니다
Quad 에는 편의상의 이유로 로블록스의 RBXScriptSignal
의 유사품과, 한번에 시그널을 끊어주는 Disconnecter
를 제공합니다.
이는 내부적으로 Extend
의 GetPropertyChangedSignal
같은 곳에서 사용되기도 합니다.
Bindable¶
Bindable 은 RBXScriptSignal
과 유사한 객체입니다. Signal.Bindable.New(id:string?)
으로 생성할 수 있습니다.
로블록스의 기본 BindableEvent
와는 다르게 :Fire
가 한곳에 합쳐져 있습니다.
Note
만약 id
를 지정한 경우, 같은 id
를 가진 Bindable
이 있으면 이전것을 반환합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
Bindable 메소드¶
Bindable
에는 다음과 같은 메소드들이 제공됩니다.
:Fire(...any)
등록된 연결들을 실행하고,
Wait
을 풀어줍니다.
:Wait()->(...any)
Fire
가 호출될 때 까지 기다립니다.Fire
에 사용된 값이 반환됩니다.
:Connect((...any)->())->Connection
Fire
가 호출 될 때 함수가 실행되도록 만듭니다.Fire
에 사용된 값이 호출 인자로 사용됩니다. 연결을 끊을 수 있도록Connection
이 제공됩니다.
:Once((...any)->())->Connection
Connect
와 유사하지만,Fire
가 한번 호출된 뒤 연결이 끊어집니다/
:CheckConnected(func)->boolean
함수가 이미 등록되어 있는지 여부를 반환합니다.
:DisconnectAll()
모든 연결을 끊습니다.
Wait
으로 기다리고 있는 곳에는nil
을 반환합니다.
:Destroy()
:DisconnectAll()
를 수행한 후, 객체를 더이상 사용할 수 없도록 만듭니다.
id
가 등록되어 있는경우 저장소에서 파기하게 됩니다.
Connection 메소드¶
Bindable:Connect 와 Bindable:Once 는 Connection
을 반환합니다. Connection
에는 다음과 같은 메소드들이 제공됩니다.
:Disconnect()
연결을 끊습니다.
Fire
가 호출되더라도Connect
혹은Once
에 사용된 함수가 실행되지 않습니다.
:Destroy()
:Disconnect()
의 별칭입니다.
Disconnecter¶
Disconnecter
는 일종의 Maid
모듈과 비슷한 객체입니다. 이 객체에는 Connection
(로블록스, Quad 모두 호환) 을 추가할 수 있으며, 나중에 추가된 Connection
을 한꺼번에 Disconnect
할 수 있습니다. Signal.Disconnecter.New(id:string?)
으로 생성할 수 있습니다.
Note
만약 id
를 지정한 경우, 같은 id
를 가진 Bindable
이 있으면 이전것을 반환합니다.
:Add(connection:Connection|RBXScriptConnection)
connection
을 리스트에 추가합니다. 나중에:Disconnect
를 호출하면 추가된 연결이 파기됩니다.
:Disconnect()
추가된 모든 연결에
Disconnect()
를 수행합니다. 이 호출 후에 추가된 연결은 모두 사라지며. 이 요청 후에도 다시:Add
를 사용할 수 있습니다
Disconnecter 를 완전히 사용하지 못하도록 하려면:Destroy
를 호출하세요
:Destroy()
:Disconnect()
를 수행한 후, 객체를 더이상 사용할 수 없도록 만듭니다.
id
가 등록되어 있는경우 저장소에서 파기하게 됩니다.