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가 등록되어 있는경우 저장소에서 파기하게 됩니다.