diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..0c62b80 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,42 @@ + QwreeyKawaii license v1.3 + +Copyright 2023. Qwreey [qwreey75@gmail.com] + +This license is based on DBAD license. +Everyone is permitted to copy and distribute +verbatim or modified copies of this license +document. + +TERMS, AND CONDITIONS FOR COPYING, +DISTRIBUTION, AND MODIFICATION + +1. You can do anything with this original work, +but don't be rude + +In general, being rude includes below + +First. Do not copy these cute works without + any modification. changing the name + only is outright copyright infringement +Second. Do not add some harmful or NSFW content. + It's very rude and may harm others + +Being rude is not limited to these instances. +Above all, don't hurt cute people + +2. If you get any benefit or profit from these cute +works, Share the love. A polite person may share +the love with cute people. +3. These cute works are provided with no warranty. +If something goes wrong due to the creator's cute +mistake, Fix it yourself. A polite person may +submit the fix or bug report. +4. If you create something with these works, Leave +the original creator's name in your work. +the cute creator will be happy if their works are +used for good. +* This is a recommendation. Not required. +5. Russian nationality can not use this creation for +commercial purposes. — We do not support the war. +Same reason, This creation cannot be used where +it can support the war. diff --git a/docs/en/404.html b/docs/en/404.html index 4881ed2..744b7ee 100644 --- a/docs/en/404.html +++ b/docs/en/404.html @@ -50,13 +50,17 @@ + -
+ + + + @@ -97,6 +101,26 @@ + +
Quad 한국어 문서
diff --git a/docs/kr/gallery/index.html b/docs/kr/gallery/index.html
index 04d9849..0db4193 100644
--- a/docs/kr/gallery/index.html
+++ b/docs/kr/gallery/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/bindable/index.html b/docs/kr/include/bindable/index.html
index 9535418..0db51f1 100644
--- a/docs/kr/include/bindable/index.html
+++ b/docs/kr/include/bindable/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/connection/index.html b/docs/kr/include/connection/index.html
index de58eca..cca1ad5 100644
--- a/docs/kr/include/connection/index.html
+++ b/docs/kr/include/connection/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/directions/index.html b/docs/kr/include/directions/index.html
index 14e683c..4aff1fd 100644
--- a/docs/kr/include/directions/index.html
+++ b/docs/kr/include/directions/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/disconnecter/index.html b/docs/kr/include/disconnecter/index.html
index c714618..b0b0b4e 100644
--- a/docs/kr/include/disconnecter/index.html
+++ b/docs/kr/include/disconnecter/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/easings/index.html b/docs/kr/include/easings/index.html
index ee22e72..517b00b 100644
--- a/docs/kr/include/easings/index.html
+++ b/docs/kr/include/easings/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
@@ -1013,8 +1037,21 @@

-모든 Easing 은 여기에서 직접적으로 확인할 수 있습니다.

모든 Easing 은 여기에서 직접적으로 확인할 수 있습니다.
Linear
아무런 가감속이 없는 1차형 함수입니다
+ + + +
diff --git a/docs/kr/include/events/index.html b/docs/kr/include/events/index.html index 6eb5417..8e0b479 100644 --- a/docs/kr/include/events/index.html +++ b/docs/kr/include/events/index.html @@ -16,7 +16,7 @@ - + @@ -52,13 +52,17 @@ + -@@ -76,7 +80,7 @@
Quad 한국어 문서
diff --git a/docs/kr/include/extend/index.html b/docs/kr/include/extend/index.html
index 9ce0850..efce584 100644
--- a/docs/kr/include/extend/index.html
+++ b/docs/kr/include/extend/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/locales/index.html b/docs/kr/include/locales/index.html
index 961a75b..c360430 100644
--- a/docs/kr/include/locales/index.html
+++ b/docs/kr/include/locales/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/mounts/index.html b/docs/kr/include/mounts/index.html
index c28065d..af3f915 100644
--- a/docs/kr/include/mounts/index.html
+++ b/docs/kr/include/mounts/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
@@ -1016,7 +1040,6 @@
:Unmount()
이렇게 하면 마운트된 Instance 를 지워버립니다. Quad 는 안전한 메모리 관리를 위해 gc 의 기능에 의존하므로, gc 시간차로 인해
-Store.GetObject에서 오브젝트가 사라지는데 시간이 걸릴 수 있습니다.
1 2 3 @@ -1047,11 +1070,11 @@ -- childFrame 은 단순히 .Parent = nil 되는 것을 넘어 메모리에서 사라집니다 -- 즉, Destroy() 가 호출됩니다 |
:Add(item:any)
Mount 에 오브젝트를 추가합니다. 처음 설정한
-to값을 따라 부모가 결정됩니다.
이 동작은 리스트를 만들 때 유용할 수 있습니다. 다시로드 동작시 직접 제거가 필요하지 않습니다
1 2 @@ -1100,6 +1123,7 @@ end) |
다음과 같이 이전 children 을 간접적으로 제거하고 새로운 오브젝트를 추가합니다. 단 ScrollFrame 의 경우 CanvasPosition이 초기화 되어버리므로 자식들을 :Unmount() 하기 전에 위치를 저장하고 다시 불러와야 합니다
Quad 한국어 문서
diff --git a/docs/kr/include/quad/index.html b/docs/kr/include/quad/index.html
index b4c9158..68a5c55 100644
--- a/docs/kr/include/quad/index.html
+++ b/docs/kr/include/quad/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/quadProperty/index.html b/docs/kr/include/quadProperty/index.html
index fe363b4..af34bf0 100644
--- a/docs/kr/include/quadProperty/index.html
+++ b/docs/kr/include/quadProperty/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/register/index.html b/docs/kr/include/register/index.html
index fef3cb3..ab9c2d0 100644
--- a/docs/kr/include/register/index.html
+++ b/docs/kr/include/register/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/tween/index.html b/docs/kr/include/tween/index.html
index cea023d..d4fa6ae 100644
--- a/docs/kr/include/tween/index.html
+++ b/docs/kr/include/tween/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/tweenOptions/index.html b/docs/kr/include/tweenOptions/index.html
index e33ee93..2e19d8b 100644
--- a/docs/kr/include/tweenOptions/index.html
+++ b/docs/kr/include/tweenOptions/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/typeDirections/index.html b/docs/kr/include/typeDirections/index.html
index 3416c74..ab44aa3 100644
--- a/docs/kr/include/typeDirections/index.html
+++ b/docs/kr/include/typeDirections/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/include/typeEasings/index.html b/docs/kr/include/typeEasings/index.html
index e196b55..c7232ee 100644
--- a/docs/kr/include/typeEasings/index.html
+++ b/docs/kr/include/typeEasings/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/index.html b/docs/kr/index.html
index 5288908..aa3b544 100644
--- a/docs/kr/index.html
+++ b/docs/kr/index.html
@@ -18,7 +18,7 @@
-
+
@@ -54,13 +54,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/license/index.html b/docs/kr/license/index.html
index fd43a1e..c33af46 100644
--- a/docs/kr/license/index.html
+++ b/docs/kr/license/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
@@ -1035,6 +1059,7 @@
QwreeyKawaii License v1.3
qwreeykawaii license v1.3
+49 QwreeyKawaii license v1.3
Copyright 2023. Qwreey [qwreey75@gmail.com]
이 라이선스는 DBAD 라이선스를 기반으로 합니다.
누구든지 이 라이선스 문서의 원본 혹은 수정본을
복사, 편집, 배포 할 수 있습니다.
-qwreeykawaii 라이선스의 복사 배포 및 수정에
+QwreeyKawaii 라이선스의 복사 배포 및 수정에
관한 규정과 조건.
1. 당신은 이 귀여운 창작물을 가지고 어떠한
@@ -1241,7 +1266,7 @@ qwreeykawaii 라이선스의 복사 배포 및 수정에
39
40
41
-42 qwreeykawaii license v1.3
+42 QwreeyKawaii license v1.3
Copyright 2023. Qwreey [qwreey75@gmail.com]
diff --git a/docs/kr/reference/event/index.html b/docs/kr/reference/event/index.html
index 745b4d6..cc623fe 100644
--- a/docs/kr/reference/event/index.html
+++ b/docs/kr/reference/event/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
@@ -81,7 +85,7 @@
Quad 한국어 문서
diff --git a/docs/kr/reference/extend/index.html b/docs/kr/reference/extend/index.html
index c5c8cd0..ce81da2 100644
--- a/docs/kr/reference/extend/index.html
+++ b/docs/kr/reference/extend/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/index.html b/docs/kr/reference/index.html
index ce272bc..d26a988 100644
--- a/docs/kr/reference/index.html
+++ b/docs/kr/reference/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/lang/index.html b/docs/kr/reference/lang/index.html
index f06d18d..dee416f 100644
--- a/docs/kr/reference/lang/index.html
+++ b/docs/kr/reference/lang/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/mounts/index.html b/docs/kr/reference/mounts/index.html
index fccde25..9709882 100644
--- a/docs/kr/reference/mounts/index.html
+++ b/docs/kr/reference/mounts/index.html
@@ -16,7 +16,7 @@
-
+
@@ -52,13 +52,17 @@
+
-
+
+
+
+
Quad 한국어 문서
@@ -1020,7 +1044,6 @@
:Unmount()
이렇게 하면 마운트된 Instance 를 지워버립니다. Quad 는 안전한 메모리 관리를 위해 gc 의 기능에 의존하므로, gc 시간차로 인해
-Store.GetObject에서 오브젝트가 사라지는데 시간이 걸릴 수 있습니다.
1 2 3 @@ -1051,11 +1074,11 @@ -- childFrame 은 단순히 .Parent = nil 되는 것을 넘어 메모리에서 사라집니다 -- 즉, Destroy() 가 호출됩니다 |
:Add(item:any)
Mount 에 오브젝트를 추가합니다. 처음 설정한
-to값을 따라 부모가 결정됩니다.
이 동작은 리스트를 만들 때 유용할 수 있습니다. 다시로드 동작시 직접 제거가 필요하지 않습니다
1 2 @@ -1103,7 +1126,8 @@ end end) |
다음과 같이 이전 children 을 간접적으로 제거하고 새로운 오브젝트를 추가합니다. 단 ScrollFrame 의 경우 CanvasPosition이 초기화 되어버리므로 자식들을 :Unmount() 하기 전에 위치를 저장하고 다시 불러와야 합니다
다음과 같이 이전 children 을 간접적으로 제거하고 새로운 오브젝트를 추가합니다. 단 ScrollFrame 의 경우 CanvasPosition이 초기화 되어버리므로 자식들을 :Unmount() 하기 전에 위치를 저장하고 다시 불러와야 합니다
Quad 한국어 문서
diff --git a/docs/kr/reference/signal/bindable/index.html b/docs/kr/reference/signal/bindable/index.html
index 03f2551..44b4115 100644
--- a/docs/kr/reference/signal/bindable/index.html
+++ b/docs/kr/reference/signal/bindable/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/signal/disconnecter/index.html b/docs/kr/reference/signal/disconnecter/index.html
index 52fc6e7..478ded9 100644
--- a/docs/kr/reference/signal/disconnecter/index.html
+++ b/docs/kr/reference/signal/disconnecter/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/signal/index.html b/docs/kr/reference/signal/index.html
index 5973c1d..e606ab2 100644
--- a/docs/kr/reference/signal/index.html
+++ b/docs/kr/reference/signal/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/store/index.html b/docs/kr/reference/store/index.html
index e74a1fc..73407ea 100644
--- a/docs/kr/reference/store/index.html
+++ b/docs/kr/reference/store/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/store/objectList/index.html b/docs/kr/reference/store/objectList/index.html
index 68e89d7..db08f9a 100644
--- a/docs/kr/reference/store/objectList/index.html
+++ b/docs/kr/reference/store/objectList/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/tween/directions/index.html b/docs/kr/reference/tween/directions/index.html
index 9fe9700..e2e072d 100644
--- a/docs/kr/reference/tween/directions/index.html
+++ b/docs/kr/reference/tween/directions/index.html
@@ -18,7 +18,7 @@
-
+
@@ -54,13 +54,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/reference/tween/easings/index.html b/docs/kr/reference/tween/easings/index.html
index 7b81c30..863a974 100644
--- a/docs/kr/reference/tween/easings/index.html
+++ b/docs/kr/reference/tween/easings/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
@@ -1037,8 +1061,21 @@

-모든 Easing 은 여기에서 직접적으로 확인할 수 있습니다.

모든 Easing 은 여기에서 직접적으로 확인할 수 있습니다.
Linear
아무런 가감속이 없는 1차형 함수입니다
+ + + +
diff --git a/docs/kr/reference/tween/index.html b/docs/kr/reference/tween/index.html index b9506d4..493948a 100644 --- a/docs/kr/reference/tween/index.html +++ b/docs/kr/reference/tween/index.html @@ -20,7 +20,7 @@ - + @@ -56,13 +56,17 @@ + -@@ -85,7 +89,7 @@
Quad 한국어 문서
diff --git a/docs/kr/reference/tween/tweenOptions/index.html b/docs/kr/reference/tween/tweenOptions/index.html
index 74d8fd2..de363fd 100644
--- a/docs/kr/reference/tween/tweenOptions/index.html
+++ b/docs/kr/reference/tween/tweenOptions/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/search/search_index.json b/docs/kr/search/search_index.json
index c4ad9bc..3fb7e1b 100644
--- a/docs/kr/search/search_index.json
+++ b/docs/kr/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":[" "]},"docs":[{"location":"","title":"Quad","text":"\ucc98\uc74c\uc624\uc168\ub098\uc694? \ud29c\ud1a0\ub9ac\uc5bc \ubb38\uc11c\ub97c \uc77d\uc5b4\ubcf4\uc138\uc694! \ucc98\uc74c\ubd80\ud130 \ucc28\uadfc\ucc28\uadfc Quad \ubaa8\ub4c8\uc744 \uc815\ubcf5\ud560 \uc218 \uc788\uc5b4\uc694
"},{"location":"changelogs/","title":"\ubc84\uc804 \ubc88\uacbd\uc0ac\ud56d","text":""},{"location":"changelogs/#224","title":"2.24","text":"\ubaa8\ub4e0 \ubb38\uc11c\uac00 \uc815\ub9ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#223","title":"2.23","text":"\uac1d\uccb4 \uc0dd\uc131\uc2dc \uc77c\uc5b4\ub098\ub294 \uc624\ub958\ub97c \ud574\uacb0\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c Extend \uac1d\uccb4 \ub0b4\ubd80 \uc790\uc2dd\uc774 Unmount \ub418\ub294 \uacbd\uc6b0 __child \uc5d0\uc11c \uc81c\uac70\ub429\ub2c8\ub2e4. types \uc758 \uc624\ud0c0\ub97c \uace0\ucce4\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#222","title":"2.22","text":"\ub354\uc774\uc0c1 Event.Prop \uac00 \ucc98\uc74c \uc0dd\uc131\uc2dc \uc2e4\ud589\ub418\ub294 \uc77c\uc774 \uc77c\uc5b4\ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#221","title":"2.21","text":"Linker \uac00 \uc774\uc81c \ud074\ub798\uc2a4 \uc548 \ud074\ub798\uc2a4\uc5d0\uc11c \uc0ac\uc6a9\ub420 \uc218 \uc788\ub3c4\ub85d \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#220","title":"2.20","text":"Docments \uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub9ce\uc740\uc591\uc758 \uc0c8\ub85c\uc6b4 \ud29c\ud1a0\ub9ac\uc5bc\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4. Mkdocs \ud14c\ub9c8\uc640 \uc5ec\ub7ec\uac00\uc9c0 \uc124\uc815\uc774 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c Makefile \uc744 \ud1b5\ud574\uc11c rojo build \uc640 mkdocs build \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#219","title":"2.19","text":"Linker \uac1d\uccb4\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c GetPropertyChangedSignal \uc640, self \uc5d0 \ud2b9\uc815 \uc624\ube0c\uc81d\ud2b8 \ud639\uc740 \uc774\ubca4\ud2b8\ub97c \uc5f0\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#218","title":"2.18","text":"\uc774\uc81c \ub354\uc774\uc0c1 GC \uc5d0 \uc758\ud574 Store \uc758 Instance \uac12\uc774 \uc190\uc2e4\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#217","title":"2.17","text":"Tween \uc758 CallBack \ub4f1\ub85d \uc2dc \uc8fc\uc5b8\uc9c0\ub294 \ud30c\ub77c\uba54\ud130\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ub354\uc774\uc0c1 ~ \ubb38\uc774 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#215-breaking-changes","title":"2.15 BREAKING CHANGES","text":"\uc774\uc81c Lang \uc5d0\uc11c CurrentLocale, FailedMessage \uc744 \ubcc0\uacbd\ud558\uba74 \uc790\ub3d9\uc73c\ub85c \ubcc0\uacbd\uc0ac\ud56d\uc774 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4. \ub610\ud55c \uc77c\ubd80 \ud544\ub4dc\uc758 \ub124\uc774\ubc0d\uc774 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#214","title":"2.14","text":"Lang \ubaa8\ub4c8\uc774 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. register \ub97c \uc0ac\uc6a9\ud574 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ub2e4\uc911\uc5b8\uc5b4 \uc9c0\uc6d0\uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#213","title":"2.13","text":"Signal \ubaa8\ub4c8\uc774 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c Class.Extend \uc5d0\uc11c GetPropertyChangedSignal \uacfc EmitPropertyChangedSignal \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#212","title":"2.12","text":"Mount \ubc18\ud658 \uac1d\uccb4\uc5d0 Add \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d Mount \uac1d\uccb4\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#211","title":"2.11","text":"Store.GetObjects \uc5d0 \uc774\uc81c & \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#29","title":"2.9","text":"PreloadAsync \ub97c \ud1b5\ud574 \uc774\uc81c round.lua \uc5d0\uc11c \ub77c\uc6b4\ub4dc \uc774\ubbf8\uc9c0\ub97c \ubbf8\ub9ac \ub85c\ub4dc\ud569\ub2c8\ub2e4.
"},{"location":"changelogs/#28","title":"2.8","text":"\ubc18\ud658 \uad00\ub828 \ucf54\ub4dc\uac00 exports \ub85c \uc774\uc8fc\ub418\uc5c8\uc73c\uba70. init.lua \uc5d0\uc11c\ub294 \uc790\ub3d9\uc801\uc73c\ub85c types \ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
"},{"location":"changelogs/#27","title":"2.7","text":"\uc774\uc81c types \ub97c \uc644\uc804\ud788 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc9c1\uc811 \ubd88\ub7ec\uc640 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#2126-breaking-changes","title":"2.1~2.6 BREAKING CHANGES","text":"\ubaa8\ub4e0 \ubaa8\ub4c8\uc758 \ud544\ub4dc\uc758 \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc5c8\uc73c\uba70, \ubaa8\ub4e0 \ud074\ub798\uc2a4\ub4e4\uc774 \uae30\ubcf8\uc801\uc73c\ub85c \ub300\ubb38\uc790 \uc2dc\uc791 \ub124\uc774\ubc0d\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \uba85\uba85\uaddc\uce59\uc744 \ubcc0\uacbd\ud588\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#20","title":"2.0","text":"\ubc84\uc804 \ud310\uc62c\ub9bc, BREAKING CHANGES \ub97c \uc704\ud574 \ubc84\uc804\uc744 \ud310\uc62c\ub9bc \ud558\uc600\uc2b5\ub2c8\ub2e4.
"},{"location":"gallery/","title":"\uac24\ub7ec\ub9ac","text":"\uc5ec\uae30\ub294 \uc5ec\ub7ec\ubd84\ub4e4\uc758 \uc791\ud488\uc744 \uc62c\ub824\ubcfc \uc218 \uc788\ub294 \uacf3\uc785\ub2c8\ub2e4! Quad \ub97c \uc0ac\uc6a9\ud55c \uc5ec\ub7ec\uac00\uc9c0 \ud6cc\ub96d\ud55c \uc791\ud488\ub4e4\uc744 \ubcf4\uc5ec\uc8fc\uc138\uc694!
"},{"location":"license/","title":"\ub77c\uc774\uc120\uc2a4","text":"KoreanEnglish Permissions Limitations Conditions \u2705 \uc0c1\uc5c5\uc801 \uc0ac\uc6a9 \u274e \ubcf4\uc99d \u2753 \ub77c\uc774\uc120\uc2a4\uc640 \uc800\uc791\uad8c \uace0\uc9c0 (\uad8c\uace0\uc0ac\ud56d) \u2705 \ubc30\ud3ec \u274e \ubb34\ub840\ud558\uac8c \uad74\uae30 \u2705 \ubcc0\uacbd/\uc218\uc815/2\ucc28\uc800\uc791 \u274e \ub7ec\uc2dc\uc544\ub97c \ube44\ub86f\ud55c \uc804\uc7c1\uc744 \ub3d5\ub294 \u2705 \uac1c\uc778\uc801 \uc0ac\uc6a9 \u274e \uc544\ubb34\ub7f0 \ubcc0\uacbd\uc0ac\ud56d \uc5c6\uc774 \ubcf5\uc81c qwreeykawaii license v1.3\nCopyright 2023. Qwreey [qwreey75@gmail.com]\n\n\uc774 \ub77c\uc774\uc120\uc2a4\ub294 DBAD \ub77c\uc774\uc120\uc2a4\ub97c \uae30\ubc18\uc73c\ub85c \ud569\ub2c8\ub2e4.\n\ub204\uad6c\ub4e0\uc9c0 \uc774 \ub77c\uc774\uc120\uc2a4 \ubb38\uc11c\uc758 \uc6d0\ubcf8 \ud639\uc740 \uc218\uc815\ubcf8\uc744\n\ubcf5\uc0ac, \ud3b8\uc9d1, \ubc30\ud3ec \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\nqwreeykawaii \ub77c\uc774\uc120\uc2a4\uc758 \ubcf5\uc0ac \ubc30\ud3ec \ubc0f \uc218\uc815\uc5d0\n\uad00\ud55c \uaddc\uc815\uacfc \uc870\uac74.\n\n1. \ub2f9\uc2e0\uc740 \uc774 \uadc0\uc5ec\uc6b4 \ucc3d\uc791\ubb3c\uc744 \uac00\uc9c0\uace0 \uc5b4\ub5a0\ud55c\n\uac83\uc774\ub4e0 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e8, \ubb34\ub840\ud558\uc9c0 \ub9c8\uc138\uc694.\n\ubb34\ub840\ud55c \ud589\ub3d9\uc740 \ud1b5\uc0c1\uc801\uc73c\ub85c \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n\n\uac00. \uadc0\uc5ec\uc6b4 \uc774 \ucc3d\uc791\ubb3c\uc744 \uc5b4\ub5a0\ud55c \uac00\uacf5\ub3c4 \uc5c6\uc774\n \ubcf5\uc81c\ud558\uac70\ub098, \uc774\ub984\ub9cc \ubc14\uafb8\ub294 \uac83\uc740 \ubb34\ub840\ud558\uba70\n \ub178\uace8\uc801\uc778 \uc800\uc791\uad8c \uce68\ud574\uc785\ub2c8\ub2e4.\n\ub098. \uadc0\uc5ec\uc6b4 \uc774 \ucc3d\uc791\ubb3c\uc5d0 \uc74c\ub780\uc131 \ud639\uc740 \uc720\ud574\ud55c\n \ucf58\ud150\uce20\ub97c \ud3ec\ud568\uc2dc\ud0a4\ub294 \uac83\uc740 \ubb34\ub840\ud569\ub2c8\ub2e4.\n \uadc0\uc5ec\uc6b4 \ucf58\ud150\uce20\ub85c \ub2e4\ub978\uc774\ub97c \ud574\uce58\uc9c0 \ub9c8\uc2ed\uc2dc\uc624.\n\n\uadf8\ub7ec\ub098 \uc774\uc5d0\ub9cc \uad6d\ud55c\ub418\ub294\uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4.\n\ubb34\uc5c7\ubcf4\ub2e4\ub3c4, \uadc0\uc5ec\uc6b4 \ud0c0\uc778\uc744 \uc0c1\ucc98\uc8fc\uc9c0 \ub9c8\uc138\uc694.\n\n2. \ub2f9\uc2e0\uc774 \uc774 \ucc3d\uc791\ubb3c\uc744 \uc0ac\uc6a9\ud574 \ub9ce\uc740 \uc774\ub4dd\uc744 \ubcf8\n\uacbd\uc6b0, \uadc0\uc5ec\uc6b4 \ucc3d\uc791\uc790\uc5d0\uac8c \uc0ac\ub791\uc744 \ubc30\ud478\uc138\uc694.\n\uc778\uac04\uc801\uc778 \uc0ac\ub78c\uc740 \uadc0\uc5ec\uc6b4 \uc0ac\ub78c\ub4e4\uc744 \uc678\uba74\ud558\uc9c0\n\uc54a\uc2b5\ub2c8\ub2e4. \ub2f9\uc2e0\uc758 \ucee4\ud53c \ud55c\uc794\uc744 \ub098\ub220\uc8fc\uc138\uc694.\n\n3. \uc774 \ucc3d\uc791\ubb3c\uc740 \uc5b4\ub5a0\ud55c \ubcf4\uc99d \uc5c6\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.\n\uc774 \ucc3d\uc791\ubb3c\uc744 \uc0ac\uc6a9\ud558\ub2e4, \ucc3d\uc791\uc790\uc758 \uadc0\uc5ec\uc6b4\n\uc2e4\uc218\ub85c \uc778\ud574 \ubb34\uc5b8\uac00 \uc798\ubabb\ub418\uc5c8\ub2e4\uba74, \ubb38\uc81c\ub97c \uc9c1\uc811\n\ud574\uacb0\ud558\uc138\uc694. \ubb34\ub840\ud558\uc9c0 \uc54a\uc740 \uc0ac\ub78c\uc740 \uc801\uc5b4\ub3c4\n\uadc0\uc5ec\uc6b4 \ud0c0\uc778\ub4e4\uc744 \ube44\ub09c\ud558\uac70\ub098 \ubaa8\uc695\ud558\uc9c0\ub294 \uc54a\uc73c\uba70\n\uc218\uc815\ubcf8\uc744 \uc81c\ucd9c\ud558\uac70\ub098 \ubc84\uadf8\ub9ac\ud3ec\ud2b8\ub97c \uc81c\ucd9c \ud560\n\uac83\uc785\ub2c8\ub2e4.\n\n4. \ub2f9\uc2e0\uc774 \uc774 \uadc0\uc5ec\uc6b4 \ucc3d\uc791\ubb3c\uc744 \ud65c\uc6a9\ud574 \ub2e4\ub978 \ucc3d\uc791\ubb3c\n\uc744 \ub9cc\ub4e4\uace0 \uc2f6\uc740 \uacbd\uc6b0 \uc801\uc5b4\ub3c4 \uc0ac\uc6a9\ud588\ub2e4\ub294 \uace0\uc9c0\ub294\n\ub0a8\uaca8\uc8fc\uc138\uc694. \uadc0\uc5ec\uc6b4 \ucc3d\uc791\uc790\ub4e4\uc740 \uc790\uc2e0\uc758 \ucc3d\uc791\ubb3c\uc774\n\uc88b\uc740\uacf3\uc5d0 \uc0ac\uc6a9\ub418\uc5c8\uc74c\uc744 \uae30\ubed0\ud560 \uac83\uc785\ub2c8\ub2e4.\n* \uc774\ub294 \uad8c\uace0 \uc0ac\ud56d\uc785\ub2c8\ub2e4. \ud544\uc218\uac00 \uc544\ub2c8\uba70 \ubd88\uac00\ud53c\ud55c\n \uacbd\uc6b0 \ubb34\uc2dc\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n\n5. \ub7ec\uc2dc\uc544 \uad6d\uc801\uc758 \uc774\ub4e4\uc740 \uc774 \ucc3d\uc791\ubb3c\uc744 \uc601\ub9ac \ubaa9\uc801\uc73c\ub85c\n\uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. - \uc6b0\ub9ac\ub294 \uc804\uc7c1\uc790\uae08\uc744\n\uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uac19\uc740 \uc774\uc720\ub85c\uc368, \uc804\uc7c1\uc774 \uc9c0\uc6d0\ub420 \uc218 \uc788\ub294 \uacf3\uc5d0\uc11c\uc758\n\uc774 \ucc3d\uc791\ubb3c \uc0ac\uc6a9\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n Permissions Limitations Conditions \u2705 Commercial use \u274e Warranty \u2753 License and copyright notice (Recommendation) \u2705 Distribution \u274e Being Rude \u2705 Modification \u274e Russian, And supporting war \u2705 Private use \u274e Copy without any modification qwreeykawaii license v1.3\n\nCopyright 2023. Qwreey [qwreey75@gmail.com]\n\nThis license is based on DBAD license.\nEveryone is permitted to copy and distribute\nverbatim or modified copies of this license\ndocument.\n\nTERMS, AND CONDITIONS FOR COPYING,\nDISTRIBUTION, AND MODIFICATION\n\n1. You can do anything with this original work,\nbut don't be rude\n\nIn general, being rude includes below\n\nFirst. Do not copy these cute works without\n any modification. changing the name\n only is outright copyright infringement\nSecond. Do not add some harmful or NSFW content.\n It's very rude and may harm others\n\nBeing rude is not limited to these instances.\nAbove all, don't hurt cute people\n\n2. If you get any benefit or profit from these cute\nworks, Share the love. A polite person may share\nthe love with cute people.\n3. These cute works are provided with no warranty.\nIf something goes wrong due to the creator's cute\nmistake, Fix it yourself. A polite person may\nsubmit the fix or bug report.\n4. If you create something with these works, Leave\nthe original creator's name in your work.\nthe cute creator will be happy if their works are\nused for good.\n* This is a recommendation. Not required.\n5. Russian nationality can not use this creation for\ncommercial purposes. \u2014 We do not support the war.\nSame reason, This creation cannot be used where\nit can support the war.\n"},{"location":"todo/","title":"\ud560\uc77c","text":""},{"location":"todo/#_2","title":"\uc9c4\ud589\uc911\uc774\uac70\ub098 \uac80\ud1a0\uc911","text":""},{"location":"todo/#spring","title":"Spring","text":"Spring \ubb3c\ub9ac \uacc4\uc0b0\uc744 UI \uc560\ub2c8\uba54\uc774\uc158\uc5d0 \uc801\uc6a9\ud569\ub2c8\ub2e4 WIP. \uc544\uc9c1 \uc9c4\ud589\uc911\uc778 \ud504\ub85c\uc81d\ud2b8.
"},{"location":"todo/#quad-debuger","title":"Quad Debuger","text":"Register \uc758 \uc0c1\ud0dc\uc640 Store \uc758 \uac12, Class \uc758 \ub3d9\uc791 \uc5ec\ubd80 \ub4f1 Quad \uc758 \uc5ec\ub7ec \uc790\uc6d0\uc744 \uae34\ubc00\ud558\uac8c \ub514\ubc84\uadf8\ud569\ub2c8\ub2e4. WIP. \uc544\uc9c1 \uc9c4\ud589\uc911\uc778 \ud504\ub85c\uc81d\ud2b8.
"},{"location":"todo/#selection","title":"Selection","text":"Tab \ud0a4\ub4f1\uc73c\ub85c \ubc84\ud2bc \uc120\ud0dd\ud558\uae30 (... \uac00\ub2a5\ud568?) WIP. \uac80\ud1a0\uc911\uc778 \ud504\ub85c\uc81d\ud2b8.
"},{"location":"todo/#_3","title":"\uba3c \ubbf8\ub798\uc5d0 . . .","text":"\ud639\uc740 \uc774\ub8e8\uc6cc\uc9c0\uc9c0 \uc54a\ub294
"},{"location":"todo/#quad-component-studio","title":"Quad Component Studio","text":"\ub208\uc5d0 \ubcf4\uc774\ub294 \uc6cc\uc9c0\uc6cc\uadf8\uc2dd \ud3b8\uc9d1\uae30\ub97c \uc774\uc6a9\ud574 Quad Class \ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.
"},{"location":"todo/#quad-webrender","title":"Quad WebRender","text":"HTML, CSS, JS \ub85c\uc368 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ubcc0\ud615\ud574 \uc2a4\ud29c\ub514\uc624 \uc5c6\uc774 \uac1c\ubc1c\ud558\ub294 \uac00\ubcbc\uc6b4 \uac1c\ubc1c\ubc95\uc785\ub2c8\ub2e4.
"},{"location":"todo/#quad-prerender","title":"Quad Prerender","text":"\ubbf8\ub9ac \ub80c\ub354\ub9c1\ub41c rbxm \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. lua \uc2a4\ud06c\ub9bd\ud2b8\ub4e4\uc774 \ub9e4\ud551\ub418\uc5b4 \uc77c\ubc18\uc801\uc774\uac8c \ub3cc\uc544\uac11\ub2c8\ub2e4.
"},{"location":"include/bindable/","title":"Bindable","text":":Fire(...any)
\ub4f1\ub85d\ub41c \uc5f0\uacb0\ub4e4\uc744 \uc2e4\ud589\ud558\uace0, Wait \uc744 \ud480\uc5b4\uc90d\ub2c8\ub2e4.
:Wait()->(...any)
Fire \uac00 \ud638\ucd9c\ub420 \ub54c \uae4c\uc9c0 \uae30\ub2e4\ub9bd\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ubc18\ud658\ub429\ub2c8\ub2e4.
:Connect((...any)->())->Connection
Fire \uac00 \ud638\ucd9c \ub420 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ud638\ucd9c \uc778\uc790\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc5f0\uacb0\uc744 \ub04a\uc744 \uc218 \uc788\ub3c4\ub85d Connection \uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Once((...any)->())->Connection
Connect \uc640 \uc720\uc0ac\ud558\uc9c0\ub9cc, Fire \uac00 \ud55c\ubc88 \ud638\ucd9c\ub41c \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9d1\ub2c8\ub2e4/
:CheckConnected(func)->boolean
\ud568\uc218\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:DisconnectAll()
\ubaa8\ub4e0 \uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Wait \uc73c\ub85c \uae30\ub2e4\ub9ac\uace0 \uc788\ub294 \uacf3\uc5d0\ub294 nil \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
:Destroy()
:DisconnectAll() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
:Disconnect()
\uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Fire \uac00 \ud638\ucd9c\ub418\ub354\ub77c\ub3c4 Connect \ud639\uc740 Once \uc5d0 \uc0ac\uc6a9\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
:Destroy()
:Disconnect() \uc758 \ubcc4\uce6d\uc785\ub2c8\ub2e4.
Out \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.
In \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.
InOut \uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.
:Add(connection:Connection|RBXScriptConnection)
connection\uc744 \ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub098\uc911\uc5d0 :Disconnect\ub97c \ud638\ucd9c\ud558\uba74 \ucd94\uac00\ub41c \uc5f0\uacb0\uc774 \ud30c\uae30\ub429\ub2c8\ub2e4.
:Disconnect()
\ucd94\uac00\ub41c \ubaa8\ub4e0 \uc5f0\uacb0\uc5d0 Disconnect() \ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uc774 \ud638\ucd9c \ud6c4\uc5d0 \ucd94\uac00\ub41c \uc5f0\uacb0\uc740 \ubaa8\ub450 \uc0ac\ub77c\uc9c0\uba70. \uc774 \uc694\uccad \ud6c4\uc5d0\ub3c4 \ub2e4\uc2dc :Add \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Disconnecter \ub97c \uc644\uc804\ud788 \uc0ac\uc6a9\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\ub824\uba74 :Destroy \ub97c \ud638\ucd9c\ud558\uc138\uc694
:Destroy()
:Disconnect() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
\ubaa8\ub4e0 Easing \uc740 \uc5ec\uae30\uc5d0\uc11c \uc9c1\uc811\uc801\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Linear
\uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615 \ud568\uc218\uc785\ub2c8\ub2e4 i=x, x=0 to 1
Quint
5 \uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Quart \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^5) i=1-(1-x)^5, x=0 to 1
Quart
\ub124\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Cubic \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^4) i=1-(1-x)^4, x=0 to 1
Cubic
\uc138\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Quad \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^3) i=1-(1-x)^3, x=0 to 1
Quad
\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. (^2) i=1-(1-x)^2, x=0 to 1
Expo
\uc9c0\uc218\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. \ub9e4\uc6b0 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4. i=1-2^(-10*x), x=0 to 1
Sin
\uc0ac\uc778 \ud30c\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. i=sin(x*pi/2), x=0 to 1
Circle
\uc0ac\ubd84\uc6d0 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. i=sqrt(1-(1-x)^2), x=0 to 1
Back
\uc2dc\uc791\uc2dc \ub4a4\ub85c \uc774\ub3d9\uc774 \uc788\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
Elastic
\ud0c4\uc131\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
Bounce
\ud280\uc5b4\uc624\ub984\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
TODO: \uc560\ub2c8\uba54\uc774\uc158 \ubbf8\ub9ac\ubcf4\uae30 \uc601\uc0c1 \ucd94\uac00
"},{"location":"include/events/","title":"Events","text":"Event(name:string)
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 \uc774\ubca4\ud2b8\ub4e4\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4, MouseEnter, MouseLeave, MouseButton1Down, MouseButton1Up \ub4f1\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4 \uae30\ubcf8\uc801\uc73c\ub85c \ub85c\ube14\ub85d\uc2a4\uc758 \uae30\ubcf8 \uc774\ubca4\ud2b8\ub4e4\uacfc \ub2e4\ub974\uac8c, \uccab\ubc88\uc9f8 \uc778\uc790\ub85c self \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Frame {\n [Event \"MouseEnter\"] = function (self)\n print(self.Name .. \"\uc5d0 \ub9c8\uc6b0\uc2a4\uac00 \uc62c\ub77c\uc654\uc2b5\ub2c8\ub2e4\")\n end;\n}\n local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal TextButton = Class \"TextButton\"\n\nTextButton \"mainButton\" {\n Size = UDim2.fromOffset(200,200);\n [Event \"MouseEnter\"] = function (self)\n print(\"\ubc84\ud2bc\uc774 \ud074\ub9ad\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n end;\n}\nMount(ScreenGUI, Store.GetObject(\"mainButton\"))\n Event.Created
\uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub418\uc5c8\uc744 \ub54c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c self \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nFrame {\n [Event.Created] = function (self)\n print(self.Name .. \"\uc774 \uc0dd\uc131\ub418\uc5c8\uc5b4\uc694\")\n end;\n}\n \uc8fc\uc758 Event.Created \uac00 \uc2e4\ud589\ub420 \ub54c\ub294 Parent \uac12\uc774 \uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. self.Parent \ub294 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. Class.Extend \uc5d0\uc11c\ub294 AfterRender \ub97c \uc774\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.
Event.CreatedAsync
Event.Created \uc640 \ube44\uc2b7\ud558\uc9c0\ub9cc, \ucf54\ub8e8\ud2f4 \uc548\uc5d0\uc11c \uc791\ub3d9\ud569\ub2c8\ub2e4. objectList:EachAsync() \ucc98\ub7fc \ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nFrame {\n Frame {\n Name = \"A\";\n [Event.CreatedAsync] = function (self)\n -- \uc774 \ud568\uc218\uac00 \ub05d\ub098\uc9c0 \uc54a\ub354\ub77c\ub3c4 \ub2e4\uc74c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub420 \uc218 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4\n task.wait(5)\n end;\n };\n Frame {\n Name = \"B\";\n [Event.Created] = function (self)\n print(self.Name .. \"\uac00 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n end;\n };\n}\n \uc8fc\uc758 Event.CreatedAsync \uac00 \uc2e4\ud589\ub420 \ub54c\ub294 Parent \uac12\uc774 \uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. self.Parent \ub294 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4.
Event.Prop(propertyName:string)
\ud504\ub85c\ud37c\ud2f0 \uac12\uc774 \ubcc0\uacbd\ub428\uc744 \uc5f0\uacb0\ud569\ub2c8\ub2e4.
-- \uc6a9\ubc95\nTextBox {\n Text = \"\uc544\ubb34\uac70\ub098 \uc785\ub825\ud558\uc138\uc694\";\n [Event.Prop \"Text\"] = function (self,text)\n -- \ud3b8\uc758\uc0c1\uc758 \uc774\uc720\ub85c \ubcc0\uacbd\ub41c \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4\n print(text)\n end;\n}\n"},{"location":"include/extend/","title":"Extend","text":"self(name:string)->linker
Extend \uba54\uc18c\ub4dc \uc804\uc5ed\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4. \ub9c1\ucee4\ub97c \ub9cc\ub4e4\uba70, PropertyChangedSignal \ub97c \uc774\uc5b4\uc8fc\uac70\ub098, self \uc5d0 \uc6d0\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 Render \ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694.
Overwite REQUIRED :Render(props:valueStore)
\ud654\uba74\uc5d0 \uadf8\ub824\uc9c0\ub294 UI \ub97c \ub9cc\ub4e4\uc5b4\uc9c0\uac8c \ud558\ub294 \ud568\uc218\uc785\ub2c8\ub2e4. Extend \uac00 \uadf8\ub824\uc9c0\ub824\uba74 \ubb34\uc870\uac74 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4. \uc774 \uc624\ube0c\uc81d\ud2b8\ub97c \ub9cc\ub4dc\ub294\ub370 \ub4e4\uc5b4\uac04 \ud504\ub85c\ud37c\ud2f0 \ubaa9\ub85d\uc744 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc90d\ub2c8\ub2e4. \ub808\uc9c0\uc2a4\ud130 \ubb38\ubc95\uc774 \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Event = Quad.Event\nlocal Mount = Quad.Mount\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n [Event \"MouseButton1Click\"] = function (self,x,y)\n print((\"\ubc84\ud2bc\uc774 %d,%d \uc5d0\uc11c \ub20c\ub838\uc2b5\ub2c8\ub2e4\"):format(x,y))\n end;\n Size = props \"Size\";\n Text = props \"Text\"; -- \ub808\uc9c0\uc2a4\ud130\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4\n }\nend\n\nlocal myImported = Class(myClass)\nmyImported.Size = UDim2.fromOffset(200,200)\n\nlocal test = myImported {\n Text = \"wow\"\n}\nMount(ScreenGUI, test)\n\n-- \ud14d\uc2a4\ud2b8\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n test.Text = \"w\"..(\"o\"):rep(#test.Text-1)..\"w\"\nend\n Overwite Option :Init(props:valueStore)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub418\uae30 \uc804\uc5d0 \ubbf8\ub9ac props \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Init(props)\n -- Size \uac12\uc774 \uc5c6\ub2e4\uba74 \uae30\ubcf8\uac12\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.\n props:Default(\"Size\", UDim2.fromOffset(100,100))\n\n -- \uc55e\uc5d0 _ \ub97c \ubd87\uc5ec \ub0b4\ubd80 \ubcc0\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.\n -- \uc5b4\ub514\uc5d0\uc11c\ub098 \uc4f0\uc77c \uc218 \uc788\uc73c\uba70 register \uc5d0 \uc601\ud5a5\uc8fc\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n self._asdf = true\nend\nfunction myClass:Render(props)\n return TextButton {\n props \"Size\"\n }\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported() -- \uc635\uc158 \uc5c6\uc74c\nprint(myButton.Size)\n Overwite Option :AfterRender(object:any)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub41c \ud6c4 \ud560 \uc791\uc5c5\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c Render \uac00 \ubc18\ud658\ud55c \uac12\uc774 \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\"; -- \uc790\uae30 \uc790\uc2e0\uc5d0 \uc774 \ubc84\ud2bc\uc744 \ub123\uc2b5\ub2c8\ub2e4\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button == object) -- true\nend\n\nlocal myImported = Class(myClass)\nmyImported() -- \uc635\uc158 \uc5c6\uc74c\n Overwite Option :Update()
:Render \uc640 :AfterRender \ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uace0, \uc774\uc804\uc5d0 \uc788\ub358 \uc790\uc2dd\ub4e4\uc744 \ub2e4\uc2dc \ub04c\uc5b4\uc635\ub2c8\ub2e4. \uc774\uc804\uc758 Render \uacb0\uacfc\ub294 \uc81c\uac70\ub429\ub2c8\ub2e4
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:Update() -- update\nmyButton:Update() -- update\nmyButton:Update() -- update\n Overwite Option .Getter.<PropertyName>(self)
\uac12\uc744 \uc5bb\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {}\nend\n-- \uac12\uc744 \uc77d\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Getter.Test(self)\n return \"Hello World\"\nend\n\nlocal myImported = Class(myClass)\nprint(myImported().Test)\n Overwite Option .Setter.<PropertyName>(self,newValue:any)
\uac12\uc744 \uc124\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\";\n Text = \"wow\";\n }\nend\n-- \uac12\uc744 \uc9c0\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Setter.Test(self,newValue)\n self._button.Text = newValue\nend\nfunction myClass.Getter.Test(self)\n return self._button.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nprint(myButton.Test)\nmyButton.Test = \"Hello World\"\nprint(myButton.Test)\n Overwite Option .UpdateTriggers.<PropertyName> = boolean?
\ud574\ub2f9 \uac12\uc744 \ubcc0\uacbd\ud558\uba74 Update \uac00 \uc218\ud589\ub420\uc9c0 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n-- \uac12 \ubcc0\uacbd\uc2dc \uc5c5\ub370\uc774\ud2b8 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4\nmyClass.UpdateTriggers.Test = true\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\n Overwite Option :Unload(object)
:Destroy \uac00 \ud638\ucd9c\ub420 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub530\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4 \uc5f0\uacb0\uc744 \ubaa8\ub450 \ub04a\uace0 \uc5c6\uc5d0\uc8fc\uc9c0\ub9cc \ud544\uc694\ud55c \uacbd\uc6b0 \uc9c1\uc811 \uc5c6\uc5d0\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4
:GetPropertyChangedSignal(propertyName:string)->Bindable
\uac12 \ubcc0\uacbd\uc744 \uc5f0\uacb0\ud560 \uc218 \uc788\ub294 Bindable\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. :EmitPropertyChangedSignal \uc73c\ub85c \uc774 \uc2dc\uadf8\ub110\uc744 \uc791\ub3d9\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud3b8\uc758\uc0c1 \uc774 \uc2dc\uadf8\ub110\uc774 \uc791\ub3d9\ud560 \ub54c, \uc0c8\ub85c\uc6b4 \uac12\uc774 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
:EmitPropertyChangedSignal(propertyName:string,changedValue:any?)
\ud504\ub85c\ud37c\ud2f0 \ubcc0\uacbd\uc2dc :GetPropertyChangedSignal \uc5d0 \ub4f1\ub85d\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \uc774 \ud568\uc218\ub97c \ud638\ucd9c\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c self.a = 1 \uacfc \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \ubc14\ub85c \uac12\uc744 \uc124\uc815\ud558\ub294 \uacbd\uc6b0 \uc790\ub3d9\uc801\uc73c\ub85c \uc774 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0\ub9cc, \ud14d\uc2a4\ud2b8 \ubc15\uc2a4\uc758 \ud14d\uc2a4\ud2b8 \ucc98\ub7fc \uac1d\uccb4\uc758 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc5f0\ub3d9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. changedValue \ub294 \uc120\ud0dd\uc0ac\ud56d\uc774\uba70, \uc8fc\uc5b4\uc9c0\uc9c0 \uc54a\uc73c\uba74 self[propertyName]\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Evnet = Quad.Event\n\nlocal TextBox = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_box\";\n Text = \"test\";\n Size = UDim2.fromOffset(200,200);\n [Evnet.Prop \"Text\"] = function (this,newValue)\n self:EmitPropertyChangedSignal(\"Text\",newValue)\n end;\n -- [Evnet.Prop \"Text\"] = self \"Text\" \uc640 \ub3d9\uc77c\ud569\ub2c8\ub2e4.\n -- self(name:string) \ubb38\ubc95\uc73c\ub85c \ubcc0\uacbd \uc774\ubca4\ud2b8 \uc5ed\uc2dc \ub9c1\ud06c\n -- \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n }\nend\nfunction myClass.Getter.Text(self)\n return self._box.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:GetPropertyChangedSignal(\"Text\"):Connect(function()\n print(myButton.Text)\nend)\nMount(ScreenGUI, myButton)\n"},{"location":"include/locales/","title":"Locales","text":"Default (default) English (en_us) Spanish (es_es) French (fr_fr) Indonesian (id_id) Italian (it_it) Japanese (ja_jp) Korean (ko_kr) Russian (ru_ru) Thai (th_th) Turkish (tr_tr) Vietnamese (vi_vn) Portuguese (pt_br) German (de_de) ChineseSimplified (zh_cn) ChineseTraditional (zh_tw) Bulgarian (bg_bg) Bengali (bn_bd) Czech (cs_cz) Danish (da_dk) Greek (el_gr) Estonian (et_ee) Finnish (fi_fi) Hindi (hi_in) Croatian (hr_hr) Hungarian (hu_hu) Georgian (ka_ge) Kazakh (kk_kz) Khmer (km_kh) Lithuanian (lt_lt) Latvian (lv_lv) Malay (ms_my) Burmese (my_mm) Bokmal (nb_no) Dutch (nl_nl) Filipino (fil_ph) Polish (pl_pl) Romanian (ro_ro) Ukrainian (uk_ua) Sinhala (si_lk) Slovak (sk_sk) Slovenian (sl_sl) Albanian (sq_al) Bosnian (bs_ba) Serbian (sr_rs) Swedish (sv_se) Arabic (ar_001)
"},{"location":"include/mounts/","title":"Mounts","text":":Unmount()
\uc774\ub807\uac8c \ud558\uba74 \ub9c8\uc6b4\ud2b8\ub41c Instance \ub97c \uc9c0\uc6cc\ubc84\ub9bd\ub2c8\ub2e4. Quad \ub294 \uc548\uc804\ud55c \uba54\ubaa8\ub9ac \uad00\ub9ac\ub97c \uc704\ud574 gc \uc758 \uae30\ub2a5\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c, gc \uc2dc\uac04\ucc28\ub85c \uc778\ud574 Store.GetObject \uc5d0\uc11c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0ac\ub77c\uc9c0\ub294\ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui,mainFrame)\n\nlocal childFrame = Frame {}\nlocal childFrameMount = Mount(mainFrame,childFrame)\nchildFrameMount:Unmount()\n-- childFrame \uc740 \ub2e8\uc21c\ud788 .Parent = nil \ub418\ub294 \uac83\uc744 \ub118\uc5b4 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uc0ac\ub77c\uc9d1\ub2c8\ub2e4\n-- \uc989, Destroy() \uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4\n :Add(item:any)
Mount \uc5d0 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc124\uc815\ud55c to \uac12\uc744 \ub530\ub77c \ubd80\ubaa8\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4.
\uc774 \ub3d9\uc791\uc740 \ub9ac\uc2a4\ud2b8\ub97c \ub9cc\ub4e4 \ub54c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc\ub85c\ub4dc \ub3d9\uc791\uc2dc \uc9c1\uc811 \uc81c\uac70\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui, mainFrame)\n\nlocal lastListMount = Mount(mainFrame)\nlocal function refreshList()\n lastListMount:Unmount() -- \uc774\uc804 children \uc744 \uc54c\uc544\uc11c \uc81c\uac70\ud569\ub2c8\ub2e4\n for i = 1,10 do\n lastListMount:Add(Frame { Name = tostring(i) })\n end\nend\n\ntask.spawn(function()\n while true do\n refreshList()\n task.wait(2)\n end\nend)\n \ub2e4\uc74c\uacfc \uac19\uc774 \uc774\uc804 children \uc744 \uac04\uc811\uc801\uc73c\ub85c \uc81c\uac70\ud558\uace0 \uc0c8\ub85c\uc6b4 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e8 ScrollFrame \uc758 \uacbd\uc6b0 CanvasPosition\uc774 \ucd08\uae30\ud654 \ub418\uc5b4\ubc84\ub9ac\ubbc0\ub85c \uc790\uc2dd\ub4e4\uc744 :Unmount() \ud558\uae30 \uc804\uc5d0 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uace0 \ub2e4\uc2dc \ubd88\ub7ec\uc640\uc57c \ud569\ub2c8\ub2e4
:Each((item:any, index:number)->())
\uc77c\ubc18\uc801\uc778 \ubc18\ubcf5\uc785\ub2c8\ub2e4. for \ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uacfc \ud6a8\uacfc\uac00 \uac19\uc73c\ub098 \ud568\uc218\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4
:EachAsync((item:any, index:number)->())
\ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uace0 \ubc14\ub85c\ubc14\ub85c \ub2e4\uc74c \uc544\uc774\ud15c\uc73c\ub85c \ub118\uc5b4\uac11\ub2c8\ub2e4. \ucf54\ub8e8\ud2f4\uc774 \uc774\uc6a9\ub429\ub2c8\ub2e4. wrap() \ucf54\ub8e8\ud2f4\uc744 \ubaa8\ub974\uac70\ub098, \ud544\uc694\uc131\uc774 \uc5c6\ub294\uacbd\uc6b0 \uc77c\ubc18\uc801\uc73c\ub85c :Each \ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub429\ub2c8\ub2e4
:IsEmpty()
\uc774 ObjectList \uac00 \ube44\uc5b4\uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:Remove(indexOrItem:number|any)
objectList \uc5d0\uc11c \ud574\ub2f9\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. , & \ub97c \uc0ac\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
"},{"location":"include/quadProperty/","title":"quadProperty","text":"RoundSize:number?
ImageLabel, ImageButton \uc5d0\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc18d\uc131\uc785\ub2c8\ub2e4. \uc6d0\ud615 \uc774\ubbf8\uc9c0\uc5d0 Slice\ub97c \uc774\uc6a9\ud574 \ub465\uadfc \ud504\ub808\uc784\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c UICorner\ubcf4\ub2e4 \ubd80\ub4dc\ub7ec\uc6b4 \ucf54\ub108\ud6a8\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.
Corner:number?
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 UI\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. UICorner\ub97c \uc774\uc6a9\ud574 \ubaa8\uc11c\ub9ac \ubd80\ubd84\uc744 \ub465\uae00\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
PaddingAll:UDim?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc0c1\ud558\uc88c\uc6b0 \ubaa8\ub450 \uac19\uc740 \uac12\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. PaddingAllOffset \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
PaddingAllOffset:number?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. PaddingAll\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc791\ub3d9\ud558\ub098, Offset\uac12\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. PaddingAll \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Scale:number?
UIScale\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. UIScale.Scale \uacfc \uac19\uc740 \ud6a8\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4
register \ud2b9\uc218 \uba54\uc18c\ub4dc\uac00 \uc801\uc6a9\ub418\ub294 \uc21c\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
:Add(value:any)->register
\uac12\uc5d0 \ub354\ud558\uae30\ub97c \ucde8\ud569\ub2c8\ub2e4. \uc74c\uc218\ud615\ud0dc\uac00 \uc81c\uacf5\ub418\ub294 \uacbd\uc6b0 \ube7c\uae30 \ucc98\ub7fc \uc791\ub3d9\ud569\ub2c8\ub2e4. number, Udim, UDim2, Color3, Vector2 \ub4f1 \ub354\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0\uac83\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.pos = UDim2.fromOffset(100,0)\n\nFrame \"mainFrame\" {\n Position = myStore \"pos\":Add(UDim2.fromOffset(0,100));\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nwhile true do\n myStore.pos = myStore.pos + UDim2.fromOffset(10,0)\n task.wait(2)\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:With((store:valueStore, newValue:any, key:string)->())->register
\ud568\uc218 \ub610\ub294 \ud14c\uc774\ube14\uc5d0\uc11c \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. Add \ubcf4\ub2e4 \ub098\uc911\uc5d0 \uc218\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uac12\uc5d0\ub294 \ud3b8\uc758\uc0c1 \uc2a4\ud1a0\uc5b4 \uac12\uc774 \uc81c\uacf5\ub418\uba70, \uc0c8\ub85c\uc6b4 \uac12\uacfc, \ubc14\ub010 \uac12\uc5d0 \ub300\ud55c \ud0a4\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4
\uac04\ub7b5\ud55c \uc6a9\ubc95\uc608\uc81c - \ud568\uc218\uc608\uc81c - \ud14c\uc774\ube14myStore \"size\":With(function (_,value)\n return value * 2\nend)\n width \uac12\uc5d0 \ub9de\ucdb0 \uc790\ub3d9\uc73c\ub85c UI \uac00 \uc5c5\ub370\uc774\ud2b8\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.topbarSize = 60\nmyStore.width = 200\n\n-- \ub808\uc9c0\uc2a4\ud130\ub97c \ubcc0\uc218\ub85c \ub450\uace0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4\nlocal listItemSize = myStore \"width\":With(function()\n return UDim2.fromOffset(myStore.width,60)\nend)\n\nFrame \"mainFrame\" {\n Class \"UIListLayout\" { SortOrder = Enum.SortOrder.LayoutOrder };\n\n -- \uc0ac\uc774\uc988\uac00 width \uc5d0 \ub9de\uac8c \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4\n Size = myStore \"width\":With(function ()\n return UDim.fromOffset(store.width,400)\n end);\n\n Frame \"Topbar\" {\n LayoutOrder = 1;\n BackgroundColor3 = Color3.fromRGB(255,0,0);\n -- \uc774\ub807\uac8c \uc5ec\ub7ec \uac12\uc744 \ubb36\uc5b4\uc11c \ub450 \uac12\uc774 \ubcc0\uacbd\ub428, \ud639\uc740 \uadf8\uc774\uc0c1\uc744\n -- \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n Size = myStore \"topbarSize,width\":With(function()\n return UDim2.fromOffset(myStore.width,myStore.topbarSize)\n end);\n }\n Frame \"ListItem\" {\n LayoutOrder = 2;\n BackgroundColor3 = Color3.fromRGB(0,255,0);\n Size = listItemSize;\n };\n Frame \"ListItem\" {\n LayoutOrder = 3;\n BackgroundColor3 = Color3.fromRGB(0,0,255);\n Size = listItemSize;\n };\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- width \uac12\uc744 \ubcc0\uacbd\ud574\ubcf4\uc138\uc694\nwhile true do\n myStore.width = myStore.width + 10\n task.wait(1)\nend\n colors \ud14c\uc774\ube14 \uc548\uc5d0 \uc788\ub294 \uc0c9\uae54\ub4e4\uc744 \ub3cc\uc544\uac00\uba70 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nlocal colors = {\n Color3.fromRGB(255,255,255);\n Color3.fromRGB(255,255,0);\n Color3.fromRGB(0,255,255);\n Color3.fromRGB(255,0,255);\n Color3.fromRGB(255,0,0);\n Color3.fromRGB(0,255,0);\n Color3.fromRGB(0,0,255);\n}\nmyStore.color = 1\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n -- colors \uc5d0\uc11c \uc778\ub371\uc2f1\ud574 \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4\n BackgroundColor3 = myStore \"color\":With(colors);\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- \uc778\ub371\uc2a4\ub97c \uc21c\ud68c\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n myStore.color = (i-1)%(#colors)+2\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:Tween(options:TweenOptions)->register
\ud2b8\uc708\uc744 \uc774\uc6a9\ud574 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4(\ucc98\uc74c \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc74c) \uc635\uc158\uc740 Tween \ubb38\uc11c\uc5d0 \ub098\uc640\uc788\ub294 \uc635\uc158\uacfc \uac19\uc2b5\ub2c8\ub2e4.
\uac04\ub7b5\ud55c \uc6a9\ubc95\uc608\uc81c - \ud55c\uaebc\ubc88\uc5d0 \uc774\ub3d9-- Tween \uc635\uc158\uc744 \ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nmyStore \"size\":Tween{ Time = 2 }\n \ud504\ub808\uc784\uc744 \ud55c\uaebc\ubc88\uc5d0 \uc6c0\uc9c1\uc785\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Style = Quad.Style\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\nmyStore.pos = UDim2.fromOffset(50,0)\nStyle \"TweenFrame\" {\n Size = UDim2.fromOffset(50,50);\n BackgroundColor3 = Color3.fromRGB(255,100,255);\n}\n\nFrame \"mainFrame\" {\n BackgroundColor3 = Color3.fromRGB(255,255,255);\n Size = UDim2.fromOffset(500,500);\n Frame \"TweenFrame\" {\n Position = myStore \"pos\":Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,100))\n :Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,200))\n :Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,300))\n :Tween{Time = 2};\n }\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nlocal on = false\nwhile true do\n on = not on\n myStore.pos = on and UDim2.fromOffset(400,0) or UDim2.fromOffset(50,0)\n task.wait(1.5) -- \ud2b8\uc708\uc740 \ub36e\uc5b4 \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \ub530\ub77c\uc11c 2 \ucd08\uc778 \uae38\uc774\ubcf4\ub2e4 \ub354 \ube68\ub9ac \ubc14\uafd4\ub3c4 \uc624\ub958\uac00 \uc77c\uc5b4\ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:Default(value:any)->register
\uae30\ubcf8\uac12\uc744 \uc815\ud569\ub2c8\ub2e4. \ub9cc\uc57d \uac12\uc774 nil \uc778 \uacbd\uc6b0 \uc774 \uac12\uc744 \uc0ac\uc6a9\ud558\uac8c \ub429\ub2c8\ub2e4. Add \ub098 With \ub4f1 \ub2e4\ub978\uac83\uc5d0 \uc601\ud5a5\ubc1b\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n -- color \uac12\uc774 \uc5c6\uc73c\ubbc0\ub85c Default \uc548\uc758 \uac12\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\n BackgroundColor3 = myStore \"color\"\n :Default(Color3.fromRGB(255,0,0));\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\ntask.wait(5)\nmyStore.color = Color3.fromRGB(0,255,0)\n \uc8fc\uc758 :Register(<INPUT>(store:valueStore, newValue:any, key:string)->())->INPUT
\ub808\uc9c0\uc2a4\ud130\uc5d0 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4. \uac12\uc774 \ubcc0\uacbd\ub418\uba74 \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uac12\uc5d0\ub294 \ud3b8\uc758\uc0c1 \uc2a4\ud1a0\uc5b4 \uac12\uc774 \uc81c\uacf5\ub418\uba70, \uc0c8\ub85c\uc6b4 \uac12\uacfc, \ubc14\ub010 \uac12\uc5d0 \ub300\ud55c \ud0a4\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4
newValue \uc5d0\ub294 :Add, :With, :Tween, :Default \uac00 \ub530\ub85c \uacc4\uc0b0\ub418\uc9c0 \uc54a\uc73c\uba70, \uc124\uc815\ub41c \uac12\uc744 \uc544\ubb34 \uac00\uacf5 \uc5c6\uc774 \uc81c\uacf5\ud569\ub2c8\ub2e4
myStore.test = 1\n-- \ubc18\ud658 \uac12\uc740 \uc785\ub825\uc73c\ub85c \ub123\uc740 \ud568\uc218\uc785\ub2c8\ub2e4. !\uaf2d \uc800\uc7a5\ud574\uc57c\ud569\ub2c8\ub2e4\n-- :Register \ub294 \ud568\uc218\uac00 \uc0ac\ub77c\uc9c0\uc9c0 \uc54a\ub3c4\ub85d \uac12\uc744 \uc720\uc9c0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\n-- \ub9cc\uc57d \ubc84\ub9b4 \uacbd\uc6b0 \uc77c\uc815 \uc2dc\uac04 \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nlocal func = myStore \"test\":Register(function(_,newValue)\n -- \uac12 \ubcc0\uacbd\uc2dc \ucd9c\ub825\ub429\ub2c8\ub2e4\n print(newValue)\nend)\nmyStore.test = 2\n myStore.test1, myStore.test2 \uac00 \ubcc0\ud654\ud558\uba74 print \ud568\uc218\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\n\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.test1 = 1\nmyStore.test2 = \"Hello\"\n\nlocal func = myStore \"test1,test2\":Register(function()\n print(myStore.test1,myStore.test2)\nend)\n\nmyStore.test1 = 2\n \uc8fc\uc758 Register \uc548\uc5d0 \ub4e4\uc5b4\uac04 \ud568\uc218\ub294 GC \uc548\uc815\uc131\uc744 \uc704\ud574\uc11c \uc57d\ud55c \ucc38\uc870\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \ud568\uc218\ub97c \uc800\uc7a5\ud574\uc57c\ud569\ub2c8\ub2e4.
"},{"location":"include/tween/","title":"Tween","text":"Tween.RunTween(Item:any, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)->TweenHandler
\ud2b8\uc708\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \ud2b8\uc708 \uc635\uc158\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 TweenOptions \ubb38\uc11c\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Ended, OnStepped, Setter, Getter \uac12\uc774 \uc124\uc815\ub418\uba74 Option \uc548\uc758 \uac12\ubcf4\ub2e4 \uc6b0\uc120\uc801\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uae30\ub2a5\uc740 TweenOptions\uc758 \ub0b4\uc6a9\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0ac \uc218 \uc788\ub3c4\ub85d TweenHandler \uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. \ub2e4\ub978 \ud2b8\uc708\uc774 \ubcc0\uacbd\uc911\uc778 \uc18d\uc131\uc774 \ub2e4\uc2dc \ud2b8\uc708\ud558\ub3c4\ub85d \ud638\ucd9c\ub418\uba74, \uc774\uc804 \ud2b8\uc708\uc5d0\uc11c \ud574\ub2f9 \uc18d\uc131\uc740 \ud2b8\uc708\uc774 \uc911\ub2e8\ub418\uba70 \uc0c8\ub85c\uc6b4 \ud2b8\uc708\uc73c\ub85c \ub36e\uc5b4\uc4f0\uae30 \ub429\ub2c8\ub2e4.
Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.RunTweens(Items:{[number]:any}, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)
Tween.RunTween \uc640 \uac19\uc73c\ub098 \uc5ec\ub7ec \uc624\ube0c\uc81d\ud2b8\ub97c \ud55c\uaebc\ubc88\uc5d0 \ud2b8\uc708\ud569\ub2c8\ub2e4. \uc544\ubb34\uac83\ub3c4 \ubc18\ud658\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
Tween.RunTween({myFrame1, myFrame2, myFrame3},{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.StopTween(ItemOrHandler:TweenHandler|any)
\ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4. TweenHandler \ub610\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc5b4 \uba48\ucd9c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc73c\uba74 \uadf8 \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc2e4\ud589\uc911\uc778 \ubaa8\ub4e0 \ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4.
local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(Handler)\n local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(myFrame)\n Tween.StopPropertyTween(Item:any, PropertyName:string)
\uc624\ube0c\uc81d\ud2b8\uc5d0 \ud2b9\uc815 \ud504\ub85c\ud37c\ud2f0\uc758 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0b5\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.StopPropertyTween(ItemOrHandler:IsTweening|any)->boolean
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8 \ub610\ub294 TweenHandler \ub85c \ud2b8\uc708\uc774 \uc9c4\ud589\uc911\uc778\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4.
Tween.IsPropertyTweening(Item:any, PropertyName:string)
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8\uc758 \ud504\ub85c\ud37c\ud2f0\uac00 \ud2b8\uc708\uc911\uc774\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \uadf8\ub798\ud504\uc640 \ubbf8\ub9ac\ubcf4\uae30\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \uc790\uc138\ud55c \uc815\ubcf4\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4"},{"location":"include/tweenOptions/","title":"tweenOptions","text":"Option Time:number?
\ud2b8\uc708\uc758 \ucd1d \uae38\uc774\ub97c \uc815\ud569\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 1\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
Option Easing:string|(index:number)->number?
\ud2b8\uc708\uc758 \uac00\uac10\uc18d \uc815\ub3c4\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Easings.Linear\uc640 \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud639\uc740 \ud544\uc694\uc5d0 \ub530\ub77c \ud568\uc218\ub97c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ud568\uc218\ub97c Easing \uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c 1\ucc28 \uc9c4\ud589\ub3c4 (Linear, 0 \uc5d0\uc11c 1 \uc0ac\uc774\uc758 \uac12) \uac12\uc774 \uc8fc\uc5b4\uc9c0\uba70, \uacc4\uc0b0 \uacb0\uacfc\ub85c \uc2e4\uc81c \uc801\uc6a9\ub420 \uc704\uce58\ub97c \ubc18\ud658\ud574\uc57c\ud569\ub2c8\ub2e4. \ubc18\ud658\uac12\uc740 \uc74c\uc218\uc774\uac70\ub098 1 \ubcf4\ub2e4 \ud074 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Exp2\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \ud568\uc218\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option Direction:string?
\ud2b8\uc708\uc774 \uc9c4\ud589\ub418\ub294 \ubc29\ud5a5\uc785\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Directions.Out\uacfc \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Out\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \ubc29\ud5a5\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option CallBack:{[number|\"*\"|string]:(Item:any, Alpha:number, AbsolutePercent:number)->()}?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uc2e4\ud589\uc911\uc778 \ub3c4\uc911\uc5d0 \ud568\uc218\ub97c \uc2e4\ud589\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b8\uc708\uc758 \uc9c4\ud589 \uc815\ub3c4\uc5d0 \ub530\ub77c\uc11c \ud55c\ubc88 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uac70\ub098 \ud2b8\uc708 \uc9c4\ud589\uc911 \uacc4\uc18d\ud574\uc11c \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc778\ub371\uc2a4\uac00 \uc22b\uc790\uc778 \uacbd\uc6b0 \ud574\ub2f9 \uc9c0\uc810\uc744 \ub118\uc744 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc73c\uba70, \"*\" \ub97c \uc778\ub371\uc2a4\ub85c \uc0ac\uc6a9\ud558\uba74 \ubaa8\ub4e0 \ubd80\ubd84\uc5d0\uc11c \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \ud568\uc218\uc5d0\ub294 \ud3b8\uc758\uc0c1 \ud2b8\uc708\uc744 \ud558\uace0\uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \uc704\uce58\uac12, \uc2dc\uac04\ub9cc\uc744 \uace0\ub824\ud55c 1\ucc28 \uc704\uce58\uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Option OnStepped:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 \"*\" \ub97c \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Ended:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 1\uc744 \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Getter:(Item:any, Property:string)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc5bb\uc73c\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Option Getter:(Item:any, Property:string, Value:Lerpable)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc124\uc815\ud558\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984, \uc124\uc815\ud560 \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n"},{"location":"include/typeEasings/","title":"typeEasings","text":"type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n"},{"location":"reference/","title":"Reference","text":"\uc774 \uc139\uc158\uc740 api \ub0b4\uc6a9\uc744 \ub098\uc5f4\ud558\uc9c0\ub9cc, \uae4a\uac8c \uc124\uba85\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud29c\ud1a0\ub9ac\uc5bc \ubb38\uc11c\ub97c \uc77d\uc5b4\ubcf4\ub294\uac83\uc744 \uad8c\uc7a5\ud569\ub2c8\ub2e4.
"},{"location":"reference/event/","title":"Event","text":""},{"location":"reference/extend/","title":"Extend","text":"self(name:string)->linker
Extend \uba54\uc18c\ub4dc \uc804\uc5ed\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4. \ub9c1\ucee4\ub97c \ub9cc\ub4e4\uba70, PropertyChangedSignal \ub97c \uc774\uc5b4\uc8fc\uac70\ub098, self \uc5d0 \uc6d0\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 Render \ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694.
Overwite REQUIRED :Render(props:valueStore)
\ud654\uba74\uc5d0 \uadf8\ub824\uc9c0\ub294 UI \ub97c \ub9cc\ub4e4\uc5b4\uc9c0\uac8c \ud558\ub294 \ud568\uc218\uc785\ub2c8\ub2e4. Extend \uac00 \uadf8\ub824\uc9c0\ub824\uba74 \ubb34\uc870\uac74 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4. \uc774 \uc624\ube0c\uc81d\ud2b8\ub97c \ub9cc\ub4dc\ub294\ub370 \ub4e4\uc5b4\uac04 \ud504\ub85c\ud37c\ud2f0 \ubaa9\ub85d\uc744 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc90d\ub2c8\ub2e4. \ub808\uc9c0\uc2a4\ud130 \ubb38\ubc95\uc774 \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Event = Quad.Event\nlocal Mount = Quad.Mount\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n [Event \"MouseButton1Click\"] = function (self,x,y)\n print((\"\ubc84\ud2bc\uc774 %d,%d \uc5d0\uc11c \ub20c\ub838\uc2b5\ub2c8\ub2e4\"):format(x,y))\n end;\n Size = props \"Size\";\n Text = props \"Text\"; -- \ub808\uc9c0\uc2a4\ud130\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4\n }\nend\n\nlocal myImported = Class(myClass)\nmyImported.Size = UDim2.fromOffset(200,200)\n\nlocal test = myImported {\n Text = \"wow\"\n}\nMount(ScreenGUI, test)\n\n-- \ud14d\uc2a4\ud2b8\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n test.Text = \"w\"..(\"o\"):rep(#test.Text-1)..\"w\"\nend\n Overwite Option :Init(props:valueStore)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub418\uae30 \uc804\uc5d0 \ubbf8\ub9ac props \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Init(props)\n -- Size \uac12\uc774 \uc5c6\ub2e4\uba74 \uae30\ubcf8\uac12\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.\n props:Default(\"Size\", UDim2.fromOffset(100,100))\n\n -- \uc55e\uc5d0 _ \ub97c \ubd87\uc5ec \ub0b4\ubd80 \ubcc0\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.\n -- \uc5b4\ub514\uc5d0\uc11c\ub098 \uc4f0\uc77c \uc218 \uc788\uc73c\uba70 register \uc5d0 \uc601\ud5a5\uc8fc\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n self._asdf = true\nend\nfunction myClass:Render(props)\n return TextButton {\n props \"Size\"\n }\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported() -- \uc635\uc158 \uc5c6\uc74c\nprint(myButton.Size)\n Overwite Option :AfterRender(object:any)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub41c \ud6c4 \ud560 \uc791\uc5c5\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c Render \uac00 \ubc18\ud658\ud55c \uac12\uc774 \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\"; -- \uc790\uae30 \uc790\uc2e0\uc5d0 \uc774 \ubc84\ud2bc\uc744 \ub123\uc2b5\ub2c8\ub2e4\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button == object) -- true\nend\n\nlocal myImported = Class(myClass)\nmyImported() -- \uc635\uc158 \uc5c6\uc74c\n Overwite Option :Update()
:Render \uc640 :AfterRender \ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uace0, \uc774\uc804\uc5d0 \uc788\ub358 \uc790\uc2dd\ub4e4\uc744 \ub2e4\uc2dc \ub04c\uc5b4\uc635\ub2c8\ub2e4. \uc774\uc804\uc758 Render \uacb0\uacfc\ub294 \uc81c\uac70\ub429\ub2c8\ub2e4
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:Update() -- update\nmyButton:Update() -- update\nmyButton:Update() -- update\n Overwite Option .Getter.<PropertyName>(self)
\uac12\uc744 \uc5bb\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {}\nend\n-- \uac12\uc744 \uc77d\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Getter.Test(self)\n return \"Hello World\"\nend\n\nlocal myImported = Class(myClass)\nprint(myImported().Test)\n Overwite Option .Setter.<PropertyName>(self,newValue:any)
\uac12\uc744 \uc124\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\";\n Text = \"wow\";\n }\nend\n-- \uac12\uc744 \uc9c0\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Setter.Test(self,newValue)\n self._button.Text = newValue\nend\nfunction myClass.Getter.Test(self)\n return self._button.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nprint(myButton.Test)\nmyButton.Test = \"Hello World\"\nprint(myButton.Test)\n Overwite Option .UpdateTriggers.<PropertyName> = boolean?
\ud574\ub2f9 \uac12\uc744 \ubcc0\uacbd\ud558\uba74 Update \uac00 \uc218\ud589\ub420\uc9c0 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n-- \uac12 \ubcc0\uacbd\uc2dc \uc5c5\ub370\uc774\ud2b8 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4\nmyClass.UpdateTriggers.Test = true\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\n Overwite Option :Unload(object)
:Destroy \uac00 \ud638\ucd9c\ub420 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub530\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4 \uc5f0\uacb0\uc744 \ubaa8\ub450 \ub04a\uace0 \uc5c6\uc5d0\uc8fc\uc9c0\ub9cc \ud544\uc694\ud55c \uacbd\uc6b0 \uc9c1\uc811 \uc5c6\uc5d0\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4
:GetPropertyChangedSignal(propertyName:string)->Bindable
\uac12 \ubcc0\uacbd\uc744 \uc5f0\uacb0\ud560 \uc218 \uc788\ub294 Bindable\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. :EmitPropertyChangedSignal \uc73c\ub85c \uc774 \uc2dc\uadf8\ub110\uc744 \uc791\ub3d9\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud3b8\uc758\uc0c1 \uc774 \uc2dc\uadf8\ub110\uc774 \uc791\ub3d9\ud560 \ub54c, \uc0c8\ub85c\uc6b4 \uac12\uc774 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
:EmitPropertyChangedSignal(propertyName:string,changedValue:any?)
\ud504\ub85c\ud37c\ud2f0 \ubcc0\uacbd\uc2dc :GetPropertyChangedSignal \uc5d0 \ub4f1\ub85d\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \uc774 \ud568\uc218\ub97c \ud638\ucd9c\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c self.a = 1 \uacfc \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \ubc14\ub85c \uac12\uc744 \uc124\uc815\ud558\ub294 \uacbd\uc6b0 \uc790\ub3d9\uc801\uc73c\ub85c \uc774 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0\ub9cc, \ud14d\uc2a4\ud2b8 \ubc15\uc2a4\uc758 \ud14d\uc2a4\ud2b8 \ucc98\ub7fc \uac1d\uccb4\uc758 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc5f0\ub3d9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. changedValue \ub294 \uc120\ud0dd\uc0ac\ud56d\uc774\uba70, \uc8fc\uc5b4\uc9c0\uc9c0 \uc54a\uc73c\uba74 self[propertyName]\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Evnet = Quad.Event\n\nlocal TextBox = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_box\";\n Text = \"test\";\n Size = UDim2.fromOffset(200,200);\n [Evnet.Prop \"Text\"] = function (this,newValue)\n self:EmitPropertyChangedSignal(\"Text\",newValue)\n end;\n -- [Evnet.Prop \"Text\"] = self \"Text\" \uc640 \ub3d9\uc77c\ud569\ub2c8\ub2e4.\n -- self(name:string) \ubb38\ubc95\uc73c\ub85c \ubcc0\uacbd \uc774\ubca4\ud2b8 \uc5ed\uc2dc \ub9c1\ud06c\n -- \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n }\nend\nfunction myClass.Getter.Text(self)\n return self._box.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:GetPropertyChangedSignal(\"Text\"):Connect(function()\n print(myButton.Text)\nend)\nMount(ScreenGUI, myButton)\n"},{"location":"reference/lang/","title":"Lang","text":"Lang.FailedMessage:string
\uc544\ubb34\ub7f0 \ubc88\uc5ed \uac12\ub3c4 \uc5bb\uc5b4\uc624\uc9c0 \ubabb\ud558\uc600\uc744\ub54c \ubcf4\uc5ec\uc904 \ubb38\uc790\uc5f4\uc785\ub2c8\ub2e4. \ubcc0\uacbd\uc2dc \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\uac00 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.
Lang.CurrentLocale:Locale<item of Lang.Locales>
\ud604\uc81c \uc0ac\uc6a9\uc911\uc778 \uc5b8\uc5b4\uc785\ub2c8\ub2e4. \ubcc0\uacbd\uc2dc \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\uac00 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4. Lang.Locales \uc548\uc758 \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.
"},{"location":"reference/lang/#langlocales","title":"Lang.Locales","text":"Default (default) English (en_us) Spanish (es_es) French (fr_fr) Indonesian (id_id) Italian (it_it) Japanese (ja_jp) Korean (ko_kr) Russian (ru_ru) Thai (th_th) Turkish (tr_tr) Vietnamese (vi_vn) Portuguese (pt_br) German (de_de) ChineseSimplified (zh_cn) ChineseTraditional (zh_tw) Bulgarian (bg_bg) Bengali (bn_bd) Czech (cs_cz) Danish (da_dk) Greek (el_gr) Estonian (et_ee) Finnish (fi_fi) Hindi (hi_in) Croatian (hr_hr) Hungarian (hu_hu) Georgian (ka_ge) Kazakh (kk_kz) Khmer (km_kh) Lithuanian (lt_lt) Latvian (lv_lv) Malay (ms_my) Burmese (my_mm) Bokmal (nb_no) Dutch (nl_nl) Filipino (fil_ph) Polish (pl_pl) Romanian (ro_ro) Ukrainian (uk_ua) Sinhala (si_lk) Slovak (sk_sk) Slovenian (sl_sl) Albanian (sq_al) Bosnian (bs_ba) Serbian (sr_rs) Swedish (sv_se) Arabic (ar_001)
"},{"location":"reference/mounts/","title":"Mounts","text":":Unmount()
\uc774\ub807\uac8c \ud558\uba74 \ub9c8\uc6b4\ud2b8\ub41c Instance \ub97c \uc9c0\uc6cc\ubc84\ub9bd\ub2c8\ub2e4. Quad \ub294 \uc548\uc804\ud55c \uba54\ubaa8\ub9ac \uad00\ub9ac\ub97c \uc704\ud574 gc \uc758 \uae30\ub2a5\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c, gc \uc2dc\uac04\ucc28\ub85c \uc778\ud574 Store.GetObject \uc5d0\uc11c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0ac\ub77c\uc9c0\ub294\ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui,mainFrame)\n\nlocal childFrame = Frame {}\nlocal childFrameMount = Mount(mainFrame,childFrame)\nchildFrameMount:Unmount()\n-- childFrame \uc740 \ub2e8\uc21c\ud788 .Parent = nil \ub418\ub294 \uac83\uc744 \ub118\uc5b4 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uc0ac\ub77c\uc9d1\ub2c8\ub2e4\n-- \uc989, Destroy() \uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4\n :Add(item:any)
Mount \uc5d0 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc124\uc815\ud55c to \uac12\uc744 \ub530\ub77c \ubd80\ubaa8\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4.
\uc774 \ub3d9\uc791\uc740 \ub9ac\uc2a4\ud2b8\ub97c \ub9cc\ub4e4 \ub54c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc\ub85c\ub4dc \ub3d9\uc791\uc2dc \uc9c1\uc811 \uc81c\uac70\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui, mainFrame)\n\nlocal lastListMount = Mount(mainFrame)\nlocal function refreshList()\n lastListMount:Unmount() -- \uc774\uc804 children \uc744 \uc54c\uc544\uc11c \uc81c\uac70\ud569\ub2c8\ub2e4\n for i = 1,10 do\n lastListMount:Add(Frame { Name = tostring(i) })\n end\nend\n\ntask.spawn(function()\n while true do\n refreshList()\n task.wait(2)\n end\nend)\n \ub2e4\uc74c\uacfc \uac19\uc774 \uc774\uc804 children \uc744 \uac04\uc811\uc801\uc73c\ub85c \uc81c\uac70\ud558\uace0 \uc0c8\ub85c\uc6b4 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e8 ScrollFrame \uc758 \uacbd\uc6b0 CanvasPosition\uc774 \ucd08\uae30\ud654 \ub418\uc5b4\ubc84\ub9ac\ubbc0\ub85c \uc790\uc2dd\ub4e4\uc744 :Unmount() \ud558\uae30 \uc804\uc5d0 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uace0 \ub2e4\uc2dc \ubd88\ub7ec\uc640\uc57c \ud569\ub2c8\ub2e4
RoundSize:number?
ImageLabel, ImageButton \uc5d0\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc18d\uc131\uc785\ub2c8\ub2e4. \uc6d0\ud615 \uc774\ubbf8\uc9c0\uc5d0 Slice\ub97c \uc774\uc6a9\ud574 \ub465\uadfc \ud504\ub808\uc784\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c UICorner\ubcf4\ub2e4 \ubd80\ub4dc\ub7ec\uc6b4 \ucf54\ub108\ud6a8\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.
Corner:number?
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 UI\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. UICorner\ub97c \uc774\uc6a9\ud574 \ubaa8\uc11c\ub9ac \ubd80\ubd84\uc744 \ub465\uae00\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
PaddingAll:UDim?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc0c1\ud558\uc88c\uc6b0 \ubaa8\ub450 \uac19\uc740 \uac12\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. PaddingAllOffset \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
PaddingAllOffset:number?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. PaddingAll\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc791\ub3d9\ud558\ub098, Offset\uac12\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. PaddingAll \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Scale:number?
UIScale\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. UIScale.Scale \uacfc \uac19\uc740 \ud6a8\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4
Signal.Bindable.New(id:string)->Bindable
\uc0c8\ub85c\uc6b4 Bindable \uc744 \uc0dd\uc131\ud558\uac70\ub098 \uc774\uc804\uc758 Bindable \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
Signal.Disconnecter.New(id:string)->Disconnecter
\uc0c8\ub85c\uc6b4 Disconnecter \uc744 \uc0dd\uc131\ud558\uac70\ub098 \uc774\uc804\uc758 Disconnecter \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
"},{"location":"reference/signal/bindable/","title":"Bindable","text":":Fire(...any)
\ub4f1\ub85d\ub41c \uc5f0\uacb0\ub4e4\uc744 \uc2e4\ud589\ud558\uace0, Wait \uc744 \ud480\uc5b4\uc90d\ub2c8\ub2e4.
:Wait()->(...any)
Fire \uac00 \ud638\ucd9c\ub420 \ub54c \uae4c\uc9c0 \uae30\ub2e4\ub9bd\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ubc18\ud658\ub429\ub2c8\ub2e4.
:Connect((...any)->())->Connection
Fire \uac00 \ud638\ucd9c \ub420 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ud638\ucd9c \uc778\uc790\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc5f0\uacb0\uc744 \ub04a\uc744 \uc218 \uc788\ub3c4\ub85d Connection \uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Once((...any)->())->Connection
Connect \uc640 \uc720\uc0ac\ud558\uc9c0\ub9cc, Fire \uac00 \ud55c\ubc88 \ud638\ucd9c\ub41c \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9d1\ub2c8\ub2e4/
:CheckConnected(func)->boolean
\ud568\uc218\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:DisconnectAll()
\ubaa8\ub4e0 \uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Wait \uc73c\ub85c \uae30\ub2e4\ub9ac\uace0 \uc788\ub294 \uacf3\uc5d0\ub294 nil \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
:Destroy()
:DisconnectAll() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
:Add(connection:Connection|RBXScriptConnection)
connection\uc744 \ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub098\uc911\uc5d0 :Disconnect\ub97c \ud638\ucd9c\ud558\uba74 \ucd94\uac00\ub41c \uc5f0\uacb0\uc774 \ud30c\uae30\ub429\ub2c8\ub2e4.
:Disconnect()
\ucd94\uac00\ub41c \ubaa8\ub4e0 \uc5f0\uacb0\uc5d0 Disconnect() \ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uc774 \ud638\ucd9c \ud6c4\uc5d0 \ucd94\uac00\ub41c \uc5f0\uacb0\uc740 \ubaa8\ub450 \uc0ac\ub77c\uc9c0\uba70. \uc774 \uc694\uccad \ud6c4\uc5d0\ub3c4 \ub2e4\uc2dc :Add \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Disconnecter \ub97c \uc644\uc804\ud788 \uc0ac\uc6a9\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\ub824\uba74 :Destroy \ub97c \ud638\ucd9c\ud558\uc138\uc694
:Destroy()
:Disconnect() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
Store.GetStore(id:string?)->store
\uac12\ub4e4\uc744 \uc800\uc7a5\ud558\uace0 \ub808\uc9c0\uc2a4\ud130\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub294 \uac12 \uc800\uc7a5\uc18c\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
Store.GetObject(id:string)->Object?
\ud574\ub2f9 id \ub97c \uac00\uc9c4 \uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
Store.GetObjects(id:string)->objectList?
\ud574\ub2f9 id \ub97c \uac00\uc9c4 \uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8\ub4e4\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. \ubc18\ud658\uc740 objectList \ud0c0\uc785\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uace0\uae09 ID \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \uc0ac\ud56d\uc740 \ud29c\ud1a0\ub9ac\uc5bc \ubb38\uc11c\ub97c \ud655\uc778\ud558\uc138\uc694.
"},{"location":"reference/store/objectList/","title":"ObjectList","text":":Each((item:any, index:number)->())
\uc77c\ubc18\uc801\uc778 \ubc18\ubcf5\uc785\ub2c8\ub2e4. for \ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uacfc \ud6a8\uacfc\uac00 \uac19\uc73c\ub098 \ud568\uc218\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4
:EachAsync((item:any, index:number)->())
\ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uace0 \ubc14\ub85c\ubc14\ub85c \ub2e4\uc74c \uc544\uc774\ud15c\uc73c\ub85c \ub118\uc5b4\uac11\ub2c8\ub2e4. \ucf54\ub8e8\ud2f4\uc774 \uc774\uc6a9\ub429\ub2c8\ub2e4. wrap() \ucf54\ub8e8\ud2f4\uc744 \ubaa8\ub974\uac70\ub098, \ud544\uc694\uc131\uc774 \uc5c6\ub294\uacbd\uc6b0 \uc77c\ubc18\uc801\uc73c\ub85c :Each \ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub429\ub2c8\ub2e4
:IsEmpty()
\uc774 ObjectList \uac00 \ube44\uc5b4\uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:Remove(indexOrItem:number|any)
objectList \uc5d0\uc11c \ud574\ub2f9\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. , & \ub97c \uc0ac\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
"},{"location":"reference/tween/","title":"Tween","text":"Tween.RunTween(Item:any, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)->TweenHandler
\ud2b8\uc708\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \ud2b8\uc708 \uc635\uc158\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 TweenOptions \ubb38\uc11c\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Ended, OnStepped, Setter, Getter \uac12\uc774 \uc124\uc815\ub418\uba74 Option \uc548\uc758 \uac12\ubcf4\ub2e4 \uc6b0\uc120\uc801\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uae30\ub2a5\uc740 TweenOptions\uc758 \ub0b4\uc6a9\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0ac \uc218 \uc788\ub3c4\ub85d TweenHandler \uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. \ub2e4\ub978 \ud2b8\uc708\uc774 \ubcc0\uacbd\uc911\uc778 \uc18d\uc131\uc774 \ub2e4\uc2dc \ud2b8\uc708\ud558\ub3c4\ub85d \ud638\ucd9c\ub418\uba74, \uc774\uc804 \ud2b8\uc708\uc5d0\uc11c \ud574\ub2f9 \uc18d\uc131\uc740 \ud2b8\uc708\uc774 \uc911\ub2e8\ub418\uba70 \uc0c8\ub85c\uc6b4 \ud2b8\uc708\uc73c\ub85c \ub36e\uc5b4\uc4f0\uae30 \ub429\ub2c8\ub2e4.
Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.RunTweens(Items:{[number]:any}, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)
Tween.RunTween \uc640 \uac19\uc73c\ub098 \uc5ec\ub7ec \uc624\ube0c\uc81d\ud2b8\ub97c \ud55c\uaebc\ubc88\uc5d0 \ud2b8\uc708\ud569\ub2c8\ub2e4. \uc544\ubb34\uac83\ub3c4 \ubc18\ud658\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
Tween.RunTween({myFrame1, myFrame2, myFrame3},{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.StopTween(ItemOrHandler:TweenHandler|any)
\ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4. TweenHandler \ub610\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc5b4 \uba48\ucd9c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc73c\uba74 \uadf8 \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc2e4\ud589\uc911\uc778 \ubaa8\ub4e0 \ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4.
local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(Handler)\n local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(myFrame)\n Tween.StopPropertyTween(Item:any, PropertyName:string)
\uc624\ube0c\uc81d\ud2b8\uc5d0 \ud2b9\uc815 \ud504\ub85c\ud37c\ud2f0\uc758 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0b5\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.StopPropertyTween(ItemOrHandler:IsTweening|any)->boolean
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8 \ub610\ub294 TweenHandler \ub85c \ud2b8\uc708\uc774 \uc9c4\ud589\uc911\uc778\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4.
Tween.IsPropertyTweening(Item:any, PropertyName:string)
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8\uc758 \ud504\ub85c\ud37c\ud2f0\uac00 \ud2b8\uc708\uc911\uc774\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \uadf8\ub798\ud504\uc640 \ubbf8\ub9ac\ubcf4\uae30\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \uc790\uc138\ud55c \uc815\ubcf4\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4"},{"location":"reference/tween/directions/","title":"Tween.Directions","text":"Out \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.
In \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.
InOut \uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.
\ubaa8\ub4e0 Easing \uc740 \uc5ec\uae30\uc5d0\uc11c \uc9c1\uc811\uc801\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Linear
\uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615 \ud568\uc218\uc785\ub2c8\ub2e4 i=x, x=0 to 1
Quint
5 \uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Quart \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^5) i=1-(1-x)^5, x=0 to 1
Quart
\ub124\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Cubic \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^4) i=1-(1-x)^4, x=0 to 1
Cubic
\uc138\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Quad \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^3) i=1-(1-x)^3, x=0 to 1
Quad
\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. (^2) i=1-(1-x)^2, x=0 to 1
Expo
\uc9c0\uc218\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. \ub9e4\uc6b0 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4. i=1-2^(-10*x), x=0 to 1
Sin
\uc0ac\uc778 \ud30c\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. i=sin(x*pi/2), x=0 to 1
Circle
\uc0ac\ubd84\uc6d0 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. i=sqrt(1-(1-x)^2), x=0 to 1
Back
\uc2dc\uc791\uc2dc \ub4a4\ub85c \uc774\ub3d9\uc774 \uc788\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
Elastic
\ud0c4\uc131\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
Bounce
\ud280\uc5b4\uc624\ub984\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
TODO: \uc560\ub2c8\uba54\uc774\uc158 \ubbf8\ub9ac\ubcf4\uae30 \uc601\uc0c1 \ucd94\uac00
"},{"location":"reference/tween/tweenOptions/","title":"TweenOptions","text":"Option Time:number?
\ud2b8\uc708\uc758 \ucd1d \uae38\uc774\ub97c \uc815\ud569\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 1\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
Option Easing:string|(index:number)->number?
\ud2b8\uc708\uc758 \uac00\uac10\uc18d \uc815\ub3c4\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Easings.Linear\uc640 \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud639\uc740 \ud544\uc694\uc5d0 \ub530\ub77c \ud568\uc218\ub97c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ud568\uc218\ub97c Easing \uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c 1\ucc28 \uc9c4\ud589\ub3c4 (Linear, 0 \uc5d0\uc11c 1 \uc0ac\uc774\uc758 \uac12) \uac12\uc774 \uc8fc\uc5b4\uc9c0\uba70, \uacc4\uc0b0 \uacb0\uacfc\ub85c \uc2e4\uc81c \uc801\uc6a9\ub420 \uc704\uce58\ub97c \ubc18\ud658\ud574\uc57c\ud569\ub2c8\ub2e4. \ubc18\ud658\uac12\uc740 \uc74c\uc218\uc774\uac70\ub098 1 \ubcf4\ub2e4 \ud074 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Exp2\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \ud568\uc218\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option Direction:string?
\ud2b8\uc708\uc774 \uc9c4\ud589\ub418\ub294 \ubc29\ud5a5\uc785\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Directions.Out\uacfc \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Out\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \ubc29\ud5a5\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option CallBack:{[number|\"*\"|string]:(Item:any, Alpha:number, AbsolutePercent:number)->()}?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uc2e4\ud589\uc911\uc778 \ub3c4\uc911\uc5d0 \ud568\uc218\ub97c \uc2e4\ud589\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b8\uc708\uc758 \uc9c4\ud589 \uc815\ub3c4\uc5d0 \ub530\ub77c\uc11c \ud55c\ubc88 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uac70\ub098 \ud2b8\uc708 \uc9c4\ud589\uc911 \uacc4\uc18d\ud574\uc11c \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc778\ub371\uc2a4\uac00 \uc22b\uc790\uc778 \uacbd\uc6b0 \ud574\ub2f9 \uc9c0\uc810\uc744 \ub118\uc744 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc73c\uba70, \"*\" \ub97c \uc778\ub371\uc2a4\ub85c \uc0ac\uc6a9\ud558\uba74 \ubaa8\ub4e0 \ubd80\ubd84\uc5d0\uc11c \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \ud568\uc218\uc5d0\ub294 \ud3b8\uc758\uc0c1 \ud2b8\uc708\uc744 \ud558\uace0\uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \uc704\uce58\uac12, \uc2dc\uac04\ub9cc\uc744 \uace0\ub824\ud55c 1\ucc28 \uc704\uce58\uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Option OnStepped:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 \"*\" \ub97c \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Ended:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 1\uc744 \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Getter:(Item:any, Property:string)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc5bb\uc73c\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Option Getter:(Item:any, Property:string, Value:Lerpable)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc124\uc815\ud558\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984, \uc124\uc815\ud560 \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
\uc2e4\ud5d8\uc801\uc778 \ubaa8\ub4c8
\uc774 \ubaa8\ub4c8\uc740 \uc5c5\ub370\uc774\ud2b8\uac00 \ube48\ubc88\ud569\ub2c8\ub2e4! \ud56d\uc0c1 Github \ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694!
"},{"location":"tutorial/#_1","title":"\uba38\ub9ac\ub9d0","text":"\uc774 \ud398\uc774\uc9c0\ub294 Quad \ubaa8\ub4c8\uc744 \uc27d\uac8c \uc2dc\uc791\ud560 \uc218 \uc788\ub3c4\ub85d \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud398\uc774\uc9c0\ub97c \uc815\ub3c5\ud574 Quad \ubaa8\ub4c8\uc758 \uc804\ubc18\uc801\uc778 \uc0ac\uc6a9\ubc95\uc744 \ud30c\uc545\ud574\ubcf4\uc138\uc694!
\ubcc0\uacbd \uc0ac\ud56d\uc740 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
"},{"location":"tutorial/#_2","title":"\uc124\uce58","text":"3\uac00\uc9c0 \ubc29\ubc95\uc911 \uac00\uc7a5 \ud3b8\ud55c \ubc29\ubc95\uc744 \uc120\ud0dd\ud574 \ubaa8\ub4c8\uc744 \uc124\uce58\ud574\uc8fc\uc138\uc694.
"},{"location":"tutorial/#rbxmx","title":"\ub4dc\ub808\uadf8 \uc5d4 \ub4dc\ub86d / rbxmx \ud30c\uc77c","text":"\ub4dc\ub808\uadf8\ud574 \uc2a4\ud29c\ub514\uc624\uc5d0 \ub123\uc744 \uc218 \uc788\ub294 \ubaa8\ub4c8 \ud30c\uc77c\uc785\ub2c8\ub2e4.
RBXMX \ub2e4\uc6b4\ub85c\ub4dc
\ub2e4\uc6b4\ub85c\ub4dc\ud574 \uc2a4\ud29c\ub514\uc624\uc5d0 \uc62e\uaca8\uc8fc\uc138\uc694.
"},{"location":"tutorial/#git-clone","title":"git clone","text":"rojo \ub97c \uc0ac\uc6a9\ud574 \ube4c\ub4dc\ud558\ub294 \ubc29\ubc95\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4\uba74 Quad \ub97c \uc9c1\uc811 \ube4c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
git clone https://github.com/qwreey75/Quad Quad\ncd Quad\nmake build\n \uc708\ub3c4\uc6b0\uc758 \uacbd\uc6b0 make build \ub300\uc2e0 rojo build default.project.json -o output.rbxmx \ub97c \uc785\ub825\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4.
\ud504\ub85c\uc81d\ud2b8\uac00 rojo \ub97c \uc0ac\uc6a9\ud558\uace0 git \uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 submodule \ub85c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
# \uc774\ubbf8 submodule \uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\ub294 \uacbd\uc6b0 \uc785\ub825\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4\ngit submodule init\n# \uc11c\ube0c\ubaa8\ub4c8\uc758 \ub8e8\ud2b8\ub294 \uc9c1\uc811 \uc815\ud574\uc8fc\uc138\uc694\ngit submodule add https://github.com/qwreey75/Quad Quad\n"},{"location":"tutorial/#_3","title":"\ubaa8\ub4c8 \ubd88\ub7ec\uc624\uae30/\ucd08\uae30\ud654","text":"local Quad = require(path.to.module).Init()\n \ubaa8\ub4c8\uc744 \uc14b\uc5c5\ud558\uae30 \uc704\ud574\uc11c\ub294 .Init(QuadId:string?) \uc744 \uc774\uc6a9\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c QuadId \uac12\uc740 \ud544\uc694\ud558\uc9c0 \uc54a\uc9c0\ub9cc, \ub098\uc911\uc5d0 \uc18c\uac1c\ud560 Store \uc640 \uac19\uc740 \uc77c\ubd80 \uae30\ub2a5\ub4e4\uc774 QuadId:string \uc5d0 \uc601\ud5a5\ubc1b\uae30\ub3c4 \ud569\ub2c8\ub2e4.
.Init(QuadId:string) \ud568\uc218\ub294 QuadId \uac00 \uac19\uc740 \ubd88\ub7ec\uc624\uae30\uac00 \uc774\ubbf8 \uc788\uc5c8\ub358 \uacbd\uc6b0, \ucd08\uae30\ud654 \ud558\uc9c0 \uc54a\uace0 \ubd88\ub7ec\uc654\ub358\uac83\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \ubaa8\ub4c8\ub4e4 \ub07c\ub9ac QuadId \uac00 \uac19\uc740 \uacbd\uc6b0 Store \uac19\uc740\uac83\ub4e4\uc774 \uacf5\uc720\ub429\ub2c8\ub2e4.
QuadId \uac00 \ube44\uc6cc\uc9c4 \uacbd\uc6b0 \ud55c\ubc88\ub3c4 \uc0dd\uc131\ub41c \uc801 \uc5c6\ub294 \uc0c8\ub85c\uc6b4 Quad \uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n \ubd88\ub7ec\uc624\uae30\uac00 \ub05d\ub0ac\ub2e4\uba74 \uc774\uc81c Quad \uc758 \uc790\uc6d0\ub4e4\uc744 \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4! \ub2e4\uc74c \ud398\uc774\uc9c0\ub85c \ub118\uc5b4\uac00 \uc5b4\uc11c \ud65c\uc6a9\ud574 \ubd05\uc2dc\ub2e4
"},{"location":"tutorial/#_4","title":"\ucd94\uac00\uc801 \ud658\uacbd \uc124\uc815","text":""},{"location":"tutorial/#_5","title":"\ud0c0\uc785 \ubd88\ub7ec\uc624\uae30","text":"\uae30\ubcf8\uc801\uc73c\ub85c \uc774 \ubaa8\ub4c8\uc740 \ub85c\ub4dc\uc2dc \ud0c0\uc785\uc744 \ubc18\ud658\ud558\uc9c0\ub9cc. \uc9c1\uc811\uc801\uc73c\ub85c \ud0c0\uc785\uc744 \uc9c0\uc815\ud558\uace0 \uc2f6\uc740 \uacbd\uc6b0 types.lua \ub97c \ubd88\ub7ec\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4
local types = require(path.to.module.types)\nlocal Quad = (require(path.to.module)::types.module).Init()\n"},{"location":"tutorial/#_6","title":"\ud14c\uc2a4\ud2b8 \ud658\uacbd \uc900\ube44","text":"\ud14c\uc2a4\ud2b8 \ud658\uacbd\uc740 rojo \uc640\uc758 \uac1c\ubc1c\ud1b5\ud569\uc744 \uc704\ud574 Play \ubc84\ud2bc\uc744 \ub204\ub974\uc9c0 \uc54a\uace0 \ubbf8\ub9ac\ubcf4\uae30\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4e4\uc5b4\uc90d\ub2c8\ub2e4 \uc774\ub97c \ud1b5\ud574 \ub2e4\ub978 \ucf54\ub4dc \ubc29\uc2dd\uc758 UI \ud504\ub808\uc784 \uc6cc\ud06c\ubcf4\ub2e4 \ube60\ub978 \uac1c\ubc1c\uc18d\ub3c4\ub97c \ub2ec\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
\ud3b8\uc758\uc0c1\uc744 \uc704\ud574 \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub97c \uc124\uc815\ud574 \uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
\uc8fc\uc758rojo \ud658\uacbd\uc774 \uc544\ub2c8\ub77c\uba74 \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub294 \ub799\uc744 \ub3d9\ubc18\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
\uc77c\ubc18\uc801\uc73c\ub85c, \ub85c\uceec \ud3b8\uc9d1 \ud658\uacbd\uc5d0\uc11c \ub85c\ube14\ub85d\uc2a4\uc758 script editor \ub294 \ud55c\uae00\uc790 \ud55c\uae00\uc790 \ubcc0\uacbd\uc2dc \ub9c8\ub2e4 .Source \ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4. \uc774\ub294 \uacf3 \ud55c\uae00\uc790 \ud55c\uae00\uc790 \ud0c0\uc774\ud551 \uc2dc \ub9c8\ub2e4 UI \uac00 \uc5c5\ub370\uc774\ud2b8 \ub420 \uc218 \uc788\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. Quad \uc758 tracker \ubaa8\ub4c8\uc740 \uc21c\uac04\uc801\uc73c\ub85c \ub9ce\uc740\uc591\uc758 \ub9ac\ub85c\ub4dc\uac00 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub3c4\ub85d \uc801\uc808\ud55c \ucfe8\ud0c0\uc784\uacfc \uc2dc\uac04\ubd84\ubc30\ub97c \uac00\uc9c0\uace0 \uc788\uc9c0\ub9cc, \uc774 \uacbd\uc6b0\uc5d0\ub3c4 Ctrl+S \ub97c \ub20c\ub7ec \uc800\uc7a5\ud574\uc57c \uc801\uc6a9\ub418\ub294 vscode \uc640 \uac19\uc740 \ud0c0 \ud3b8\uc9d1\uae30\uc640\ub294 \ucc28\uc774\uac00 \ub0a0 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucf54\ub4dc\uac00 \ucee4\uc9d0\uc73c\ub85c \uc778\ud574 \uc790\ub3d9 \ub9ac\ub85c\ub4dc\uc5d0\uc11c \ud37c\ud3ec\uba3c\uc2a4\uc801 \uc774\uc288\ub97c \uacaa\ub294\ub2e4\uba74, rojo \ub97c \ud65c\uc6a9\ud574 \ucf54\ub4dc\ub97c \uc678\ubd80\ub85c \uc62e\uae34 \ud6c4, vscode \ub97c \uc2a4\ud29c\ub514\uc624 \uc704\uc5d0 \ub193\uace0 \ubbf8\ub9ac\ubcf4\uae30\uc640 \ucf54\ub4dc\ub97c \ub3d9\uc2dc\uc5d0 \ubcf4\uba74\uc11c \ud3b8\uc9d1\ud558\uc138\uc694. \ud504\ub85c\uc81d\ud2b8\uac00 \ub9e4\uc6b0 \uac70\ub300\ud558\uc9c0 \uc54a\ub2e4\uba74 \ud06c\uac8c \uac71\uc815\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4.
\ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc\ud2b8\ub9ac\ub97c \ub9cc\ub4e4\uc5b4\uc8fc\uc138\uc694.
| Main (ModuleScript)\n |-- Loader (LocalScript)\n |-- Test (ModuleScript)\n MainLoaderTest \uc2e4\uc81c\ub85c UI \ub4e4\uc744 \uadf8\ub9ac\ub294 \ucf54\ub4dc\ub4e4\uc774 \ub2f4\uae41\ub2c8\ub2e4.local Quad = require(path.to.module).Init()\nlocal LocalPlayer = game.Players.LocalPlayer\nlocal ScreenGUI = Instance.new(\"ScreenGui\",\n LocalPlayer and LocalPlayer.PlayerGui or game.StarterGui)\nScreenGUI.Name = \"MyGUI\"\nScreenGUI.ResetOnSpawn = false\n\n-- \uc2e4\uc81c \uadf8\ub9ac\ub294 \ucf54\ub4dc\ub4e4\uc774 \ub4e4\uc5b4\uac11\ub2c8\ub2e4.\n\nreturn function()\n -- \ud14c\uc2a4\ud2b8\uac00 \ub05d\ub098 \ub9cc\ub4e0\uac78 \uc9c0\uc6cc\uc57c \ud560 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\n -- \ucd94\ud6c4 \uc124\uba85\ub420 Unmount() \ub97c \uc774\uc6a9\ud558\uc138\uc694.\n ScreenGUI:Destroy()\nend\n \uac8c\uc784\uc744 \ud50c\ub808\uc774 \ud560 \ub54c \ucf54\ub4dc\uac00 \ub85c\ub4dc\ub420 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4dc\ub294 \ub85c\ub354\uc785\ub2c8\ub2e4.require(script.Parent)\n \uba85\ub839\ucc3d\uc5d0\uc11c \uba85\ub839\uc5b4 \uc785\ub825\uc73c\ub85c \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589 \ud560 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4dc\ub294 \ucf54\ub4dc\ub4e4\uc774 \ub2f4\uae41\ub2c8\ub2e4.-- \ubaa8\ub4c8 \uc704\uce58\ub85c \uc54c\ub9de\uac8c \ubcc0\uacbd\ud574\uc8fc\uc138\uc694\nlocal Quad = path.to.module\nlocal tracker = require(Quad.tracker)\n\nlocal module = {}\nlocal function reload()\n if module.unload then pcall(module.unload) end\n if module.testingModule then pcall(module.testingModule.Destroy,module.testingModule) end\n module.testingModule = script.Parent:Clone()\n module.testingModule.Parent = script.Parent.Parent\n module.testingModule.Archivable = false\n module.testingModule.Name = module.testingModule.Name .. \"_TESTING\"\n module.unload = require(module.testingModule)\nend\n\n-- \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub97c \ucf2d\ub2c8\ub2e4. \uc774\ubbf8 \ucf1c\uc838\uc788\uc73c\uba74 \ub2e4\uc2dc \ub85c\ub4dc\ud569\ub2c8\ub2e4\nfunction module.load()\n reload()\n if not module.autoreload then\n module.autoreload = tracker.new(script.Parent)\n module.autoreload:init(); wait()\n module.autoreload:connect(\"updated\",reload)\n end\nend\n\n-- \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub97c \ub044\uace0 \ud14c\uc2a4\ud2b8\ub85c \uc0dd\uae34\uac83\uc744 \uc9c0\uc6c1\ub2c8\ub2e4\nfunction module.unload()\n if module.autoreload then pcall(module.autoreload.deinit,module.autoreload) end\n if module.unload then pcall(module.unload) end\n if module.testingModule then pcall(module.testingModule.Destroy,module.testingModule) end\n module.autoreload = nil\n module.unload = nil\n module.testingModule = nil\nend\n\nreturn module\n \uc774\uc81c \uba85\ub839\uc5b4 \ucc3d\uc5d0\uc11c \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub97c \ucf1c\uac70\ub098 \ub04c \uc218 \uc788\uc2b5\ub2c8\ub2e4. rojo \ub098 \ud3b8\uc9d1\uae30\ub85c \uc778\ud574 \ucf54\ub4dc\uac00 \ubcc0\uacbd\ub418\uba74 \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4!
require(path.to.your.module).load()\n"},{"location":"tutorial/10_signal/","title":"Signal - \uc774\ubca4\ud2b8 \uc0dd\uc131\uacfc \uc5f0\uacb0","text":"\uc77d\uae30 \uc804... \ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Bindable, Disconnecter \uae30\ub2a5\uc774 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Bindable, Disconnecter \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4
Quad \uc5d0\ub294 \ud3b8\uc758\uc0c1\uc758 \uc774\uc720\ub85c \ub85c\ube14\ub85d\uc2a4\uc758 RBXScriptSignal \uc758 \uc720\uc0ac\ud488\uacfc, \ud55c\ubc88\uc5d0 \uc2dc\uadf8\ub110\uc744 \ub04a\uc5b4\uc8fc\ub294 Disconnecter \ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c Extend \uc758 GetPropertyChangedSignal \uac19\uc740 \uacf3\uc5d0\uc11c \uc0ac\uc6a9\ub418\uae30\ub3c4 \ud569\ub2c8\ub2e4.
Bindable \uc740 RBXScriptSignal \uacfc \uc720\uc0ac\ud55c \uac1d\uccb4\uc785\ub2c8\ub2e4. Signal.Bindable.New(id:string?) \uc73c\ub85c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub85c\ube14\ub85d\uc2a4\uc758 \uae30\ubcf8 BindableEvent \uc640\ub294 \ub2e4\ub974\uac8c :Fire \uac00 \ud55c\uacf3\uc5d0 \ud569\uccd0\uc838 \uc788\uc2b5\ub2c8\ub2e4.
\ub9cc\uc57d id \ub97c \uc9c0\uc815\ud55c \uacbd\uc6b0, \uac19\uc740 id \ub97c \uac00\uc9c4 Bindable \uc774 \uc788\uc73c\uba74 \uc774\uc804\uac83\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Signal = Quad.Signal\n\nlocal mySignal = Signal.Bindable.New()\n\nlocal connection = mySignal:Connect(function(v)\n print(v)\nend)\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\")\nconnection:Disconnect()\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uba74 \uc548\ub429\ub2c8\ub2e4.\")\n\ntask.spawn(function()\n task.wait(5)\n mySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \uc9c0\uc5f0\ub41c \ud6c4 \ucd9c\ub825\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\")\nend)\nprint(mySignal:Wait())\n\nmySignal:Once(function(v)\n print(v)\nend)\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\")\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uba74 \uc548\ub429\ub2c8\ub2e4.\")\n\nmySignal:Once(function(v)\n print(v)\nend):Disconnect()\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uba74 \uc548\ub429\ub2c8\ub2e4.\")\n"},{"location":"tutorial/10_signal/#bindable_1","title":"Bindable \uba54\uc18c\ub4dc","text":"Bindable \uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub4e4\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Fire(...any)
\ub4f1\ub85d\ub41c \uc5f0\uacb0\ub4e4\uc744 \uc2e4\ud589\ud558\uace0, Wait \uc744 \ud480\uc5b4\uc90d\ub2c8\ub2e4.
:Wait()->(...any)
Fire \uac00 \ud638\ucd9c\ub420 \ub54c \uae4c\uc9c0 \uae30\ub2e4\ub9bd\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ubc18\ud658\ub429\ub2c8\ub2e4.
:Connect((...any)->())->Connection
Fire \uac00 \ud638\ucd9c \ub420 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ud638\ucd9c \uc778\uc790\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc5f0\uacb0\uc744 \ub04a\uc744 \uc218 \uc788\ub3c4\ub85d Connection \uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Once((...any)->())->Connection
Connect \uc640 \uc720\uc0ac\ud558\uc9c0\ub9cc, Fire \uac00 \ud55c\ubc88 \ud638\ucd9c\ub41c \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9d1\ub2c8\ub2e4/
:CheckConnected(func)->boolean
\ud568\uc218\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:DisconnectAll()
\ubaa8\ub4e0 \uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Wait \uc73c\ub85c \uae30\ub2e4\ub9ac\uace0 \uc788\ub294 \uacf3\uc5d0\ub294 nil \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
:Destroy()
:DisconnectAll() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
Bindable:Connect \uc640 Bindable:Once \ub294 Connection \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. Connection \uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub4e4\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Disconnect()
\uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Fire \uac00 \ud638\ucd9c\ub418\ub354\ub77c\ub3c4 Connect \ud639\uc740 Once \uc5d0 \uc0ac\uc6a9\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
:Destroy()
:Disconnect() \uc758 \ubcc4\uce6d\uc785\ub2c8\ub2e4.
Disconnecter \ub294 \uc77c\uc885\uc758 Maid \ubaa8\ub4c8\uacfc \ube44\uc2b7\ud55c \uac1d\uccb4\uc785\ub2c8\ub2e4. \uc774 \uac1d\uccb4\uc5d0\ub294 Connection (\ub85c\ube14\ub85d\uc2a4, Quad \ubaa8\ub450 \ud638\ud658) \uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc73c\uba70, \ub098\uc911\uc5d0 \ucd94\uac00\ub41c Connection \uc744 \ud55c\uaebc\ubc88\uc5d0 Disconnect \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Signal.Disconnecter.New(id:string?) \uc73c\ub85c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
\ub9cc\uc57d id \ub97c \uc9c0\uc815\ud55c \uacbd\uc6b0, \uac19\uc740 id \ub97c \uac00\uc9c4 Bindable \uc774 \uc788\uc73c\uba74 \uc774\uc804\uac83\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
:Add(connection:Connection|RBXScriptConnection)
connection\uc744 \ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub098\uc911\uc5d0 :Disconnect\ub97c \ud638\ucd9c\ud558\uba74 \ucd94\uac00\ub41c \uc5f0\uacb0\uc774 \ud30c\uae30\ub429\ub2c8\ub2e4.
:Disconnect()
\ucd94\uac00\ub41c \ubaa8\ub4e0 \uc5f0\uacb0\uc5d0 Disconnect() \ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uc774 \ud638\ucd9c \ud6c4\uc5d0 \ucd94\uac00\ub41c \uc5f0\uacb0\uc740 \ubaa8\ub450 \uc0ac\ub77c\uc9c0\uba70. \uc774 \uc694\uccad \ud6c4\uc5d0\ub3c4 \ub2e4\uc2dc :Add \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Disconnecter \ub97c \uc644\uc804\ud788 \uc0ac\uc6a9\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\ub824\uba74 :Destroy \ub97c \ud638\ucd9c\ud558\uc138\uc694
:Destroy()
:Disconnect() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
Quad \uc5d0\uc11c\ub294 \ub85c\ube14\ub85d\uc2a4\uc758 Frame \uc774\ub098 TextButton \uac19\uc740 \uae30\ubcf8 \uc624\ube0c\uc81d\ud2b8\ub9cc \ub9cc\ub4e4 \uc218 \uc788\ub294\uac83\uc774 \uc544\ub2d9\ub2c8\ub2e4. Quad \ub294 \uc790\uc2e0\ub9cc\uc758 \ubc84\ud2bc, \ud639\uc740 \uc5ec\ub7ec \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc744 \ucd94\uc0c1\uc801\uc73c\ub85c \ub9cc\ub4e4\uace0. \ub2e4\uc2dc \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d Extend \ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.
Extend \ub294 Register \uc640 \ub354\ubd88\uc5b4 Quad \uc758 \uac00\uc7a5 \uc911\uc694\ud55c \uae30\ub2a5\uc73c\ub85c\uc368, \ub2e4\uc74c\uacfc \uac19\uc740 \uc7a5\uc810\uc744 \uc9c0\ub2d9\ub2c8\ub2e4.
Extend \uac1d\uccb4\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0dd\uc131\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\n-- extend \uac1d\uccb4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4\nlocal myClass = Class.Extend()\n \uc77c\ubc18\uc801\uc73c\ub85c Extend \ub294 \ud55c \ubaa8\ub4c8\uc5d0 \ud558\ub098\uc529 \ub123\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc \uad6c\uc870\ub97c \ub9cc\ub4e4\uc5b4\ubcf4\uc138\uc694. \uc544\ub798\uc758 \ucf54\ub4dc\ub294 \ubaa8\ub4e0 Extend \ubb38\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.
- ScreenGUI\n |-- localscript\n |-- myClass (ModuleScript)\n localscriptlocalscript.myClass Extend \ud074\ub798\uc2a4\ub97c \ubd88\ub7ec\uc624\uace0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Mount = Quad.Mount\nlocal Class = Quad.Class\nlocal Store = Quad.Store\n\nlocal myStore = Store.GetStore(\"myStore\")\nmyStore.bgColor = Color3.fromRGB(0,0,0)\n\n-- Class(require(script.myClass)) \uc640 \uac19\uc2b5\ub2c8\ub2e4.\n-- \uc904\uc5ec\uc11c Class(script.myClass) \ub85c \uc4f8 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\nlocal myClass = Class(script.myClass)\n\n-- \ud504\ub808\uc784\uc5d0 \ub123\uac70\ub098 \ud558\uc5ec\ub3c4 \ubb34\ubc29\ud569\ub2c8\ub2e4\n-- \uc77c\ubc18 \uc624\ube0c\uc81d\ud2b8\uc640 \ub611\uac19\uc774 id \ub97c \ub123\uace0 GetObject \ub85c\n-- \uac00\uc838\uc62c \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4\nlocal main = myClass \"main\" {\n Testing = 1;\n Text = \"Test\";\n -- \ub808\uc9c0\uc2a4\ud130 \uac12\uc744 \ub118\uaca8\uc904 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\n -- \ubc1b\ub294\ucabd\ub3c4 \ub808\uc9c0\uc2a4\ud130\uc778 \uacbd\uc6b0 \uac12\uc774 \uc5f0\ub3d9\ub429\ub2c8\ub2e4.\n BackgroundColor3 = myStore \"bgColor\";\n}\n\nMount(ScreenGUI, main)\nprint(Store.GetObject(\"main\") == main) -- true\n\n-- \uc774 \uac12\uc744 \ubc14\uafb8\uba74 \uc5f0\ub3d9\ub41c BackgroundColor3 \ub3c4 \ubc14\ub014\uac83\uc785\ub2c8\ub2e4\nmyStore.bgColor = Color3.fromRGB(255,255,255)\n\n-- \uac12 \ubcc0\uacbd\ub428\uc744 \uc5f0\uacb0\ud558\uae30\nmain\n :GetPropertyChangedSignal(\"AbsolutePosition\")\n :Connect(function()\n print(\"AbsolutePosition\",main.AbsolutePosition)\n end)\n\n-- main:Update()\n-- \uac15\uc81c\ub85c \ub2e4\uc2dc Render \ub97c \uc2e4\ud589\ud558\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4.\n\n-- main.Testing = 2\n-- \uc5c5\ub370\uc774\ud2b8 \ud2b8\ub9ac\uac70\uc774\ubbc0\ub85c \uc774 \uac12\uc744 \ubcc0\uacbd\ud558\uba74.\n-- main:Update() \uc640 \uac19\uc740 \ud6a8\uacfc\uac00 \ub0a9\ub2c8\ub2e4.\n Extend \ud074\ub798\uc2a4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \ub2e4\ub978\uacf3\uc5d0\uc11c \ubd88\ub7ec\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Event = Quad.Event\n\nlocal TextLabel = Class \"TextLabel\"\n\nlocal myClass = Class.Extend()\n\n-- Init \ub294 Render \uc804 props \ub97c \ucd08\uae30\ud654 \ud558\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4\n-- Init \uc5d0\ub294 \ud504\ub85c\ud37c\ud2f0 \ub9ac\uc2a4\ud2b8\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. Init \ub294 \uc5c6\ub354\ub77c\ub3c4 \ubb34\ubc29\ud569\ub2c8\ub2e4.\nfunction myClass:Init(props)\n -- \uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8\uc5d0 \ud504\ub77c\uc774\ube57 \uac12\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.\n -- \uc774\ub984 \uc55e\uc5d0 _ \uac00 \ubd87\uc73c\uba74 \uc678\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \ubaa9\uc801\uc774 \uc544\ub2cc\n -- \ub0b4\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \ubaa9\uc801\uc73c\ub85c\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \uc774 \uacbd\uc6b0 \uc548\uc804\uc131\uc744 \uc704\ud574 register \ub97c \uc0ac\uc6a9\ud560 \uc218\n -- \uc5c6\uc2b5\ub2c8\ub2e4.\n self._testValue = 2\n\n -- \ud504\ub85c\ud37c\ud2f0\uc758 \uae30\ubcf8\uac12\uc744 \uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n -- \uc0dd\uc131 \uc2dc \uac12\uc774 \ub204\ub77d\ub41c \uacbd\uc6b0 \uc0ac\uc6a9\ud560 \uac12\uc744 \uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \ud0a4, \uac12 \uc73c\ub85c \uad6c\uc131\ud569\ub2c8\ub2e4\n props:Default(\"Text\", \"Testing Label\")\n props:Default(\"ZIndex\", 1)\nend\n\n-- myClass \uac00 \uc9c4\uc9dc \uadf8\ub824\uc9c0\ub294 \ubd80\ubd84\uc785\ub2c8\ub2e4.\n-- Render \ub3c4 Init \ucc98\ub7fc \ud504\ub85c\ud37c\ud2f0 \ub9ac\uc2a4\ud2b8\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4.\nfunction myClass:Render(props)\n return TextLabel {\n Size = UDim2.fromOffset(200,200);\n -- self \uc5d0 _label \ub85c \uc774 TextLabel \uc744 \ub123\uc2b5\ub2c8\ub2e4.\n -- \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ubb38\ubc95\uc785\ub2c8\ub2e4.\n self \"_label\";\n\n -- _holder \ub294 \uc608\uc57d\ub41c \uac12\uc785\ub2c8\ub2e4. \uc790\uc2dd\ub4e4\uc774 \uc5ec\uae30\uc5d0 \ub4e4\uc5b4\uc640\uc57c\n -- \ud568\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \ub9ac\uc2a4\ud2b8\ub098 \uadf8\ub9ac\ub4dc\uac00 \uc788\ub294 \uacbd\uc6b0 \uc720\uc6a9\ud569\ub2c8\ub2e4.\n -- \ub530\ub85c \uc124\uc815\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 Render \uac00 \ub9ac\ud134\ud55c \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\n self \"_holder\";\n\n -- GetPropertyChangedSignal \uac00 \uc791\ub3d9\ud560 \uc218 \uc788\ub3c4\ub85d\n -- \ud504\ub85c\ud37c\ud2f0 \ubcc0\uacbd \uc774\ubca4\ud2b8\ub97c \uc5f0\uacb0\ud574\uc90d\ub2c8\ub2e4\n -- \uc774 \ub610\ud55c \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ubb38\ubc95\uc785\ub2c8\ub2e4.\n [Event.Prop \"AbsolutePosition\"] = self \"AbsolutePosition\";\n -- \ub9c8\uc6b0\uc2a4 \ud074\ub9ad\uac19\uc740 \ub2e4\ub978 \uc774\ubca4\ud2b8\ub97c GetPropertyChangedSignal \uc5d0\n -- \uc5f0\uacb0\ud558\ub824\uba74 :EmitPropertyChangedSignal() \ub97c \ud638\ucd9c\ud574\uc8fc\uba74 \ub429\ub2c8\ub2e4.\n [Event \"MouseEnter\"] = function (this,x,y)\n -- \ud0a4, \uac12\uc774 \ub4e4\uc5b4\uac11\ub2c8\ub2e4. \uac12\uc774 \uc5c6\uc73c\uba74 self[key] \ub85c \ub300\uc2e0\ud569\ub2c8\ub2e4.\n self:EmitPropertyChangedSignal(\"Testing2\",1)\n end;\n\n -- \ubc1b\uc740 \ub808\uc9c0\uc2a4\ud130\ub97c \uc5f0\ub3d9\ud569\ub2c8\ub2e4.\n -- \ub9cc\uc57d props.BackgroundColor3 \ub9cc \uc0ac\uc6a9\ud558\uba74\n -- \ucc98\uc74c\uc5d0\ub9cc \ub808\uc9c0\uc2a4\ud130\uc5d0\uc11c \uac12\uc744 \uc77d\uc5b4\uc635\ub2c8\ub2e4.\n -- \ub530\ub77c\uc11c \uac12\uc744 \ubcc0\uacbd\ud574\ub3c4 \ubcc0\uacbd\uc0ac\ud56d\uc774 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n BackgroundColor3 = props \"BackgroundColor3\":Tween();\n\n -- \uc785\ub825 \uac12\uacfc \uc0c1\uad00\uc5c6\uc774 \ub808\uc9c0\uc2a4\ud130\ub97c \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n -- \uc774 \uacbd\uc6b0 main.Text = \"New\" \ucc98\ub7fc \uc9c1\uc811 \ubcc0\uacbd\ud558\uba74\n -- \uadf8 \ubcc0\uacbd\uc774 \uc801\uc6a9\ub429\ub2c8\ub2e4.\n Text = props \"Text\";\n ZIndex = props \"ZIndex\";\n -- ... \uc790\uc2dd\uc744 \ub123\uc5b4\ub3c4 \ubb34\ubc29\ud569\ub2c8\ub2e4.\n -- Frame {\n -- [Event.Created] = function(self)\n -- print(self.Parent) -- nil \uc77c \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4\n -- \ub530\ub77c\uc11c \ubd80\ubaa8\ub97c \uac74\ub4e4\uc5ec\uc57c \ud558\ub294 \uacbd\uc6b0, self \"\" \ub97c \ud1b5\ud574\n -- self \uac12\uc5d0 \ub123\uc5b4\ub193\uace0 \ub098\uc911\uc5d0 AfterRender \ub85c \ud574\uacb0\ud574\uc57c\ud569\ub2c8\ub2e4.\n -- end;\n -- }\n }\nend\n\n\n-- AfterRender \ub294 Render \uc9c1\ud6c4 \uc2e4\ud589\ub429\ub2c8\ub2e4.\n-- \ub80c\ub354\ub9c1 \ud6c4 \uc2e4\ud589\ud574\uc57c \ud560 \uac83\uc744 \ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n-- object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4.\n-- AfterRender \ub294 \uc5c6\ub354\ub77c\ub3c4 \ubb34\ubc29\ud569\ub2c8\ub2e4.\nfunction myClass:AfterRender(object)\n print(self._label,\"\uc774 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n -- \uc774\ub807\uac8c \ud558\uba74 \ub808\uc9c0\uc2a4\ud130\ub85c \uc5f0\uacb0\ub41c \ubd80\ubd84\ub3c4 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4.\n self.ZIndex = 2\nend\n\n-- function myClass:Unload(object)\n-- :Destroy \uac00 \ud638\ucd9c\ub420 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub530\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4\n-- \uc5f0\uacb0\uc744 \ubaa8\ub450 \ub04a\uace0 \uc5c6\uc5d0\uc8fc\uc9c0\ub9cc \ud544\uc694\ud55c \uacbd\uc6b0 \uc9c1\uc811 \uc5c6\uc5d0\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n-- object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4\n\n-- AbsolutePosition \uac12\uc744 \ubc18\ud658\ud560 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4\nfunction myClass.Getter.AbsolutePosition(self)\n return self._label.AbsolutePosition\nend\n\n-- AbsolutePosition \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4\nfunction myClass.Setter.AbsolutePosition(self,newValue)\n -- \ud544\uc694\ud55c \uacbd\uc6b0 \uac12\uc744 \uc124\uc815\ud558\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n error(\"AbsolutePosition \uac12\uc740 \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4\")\nend\n\n-- main.Testing = 2 \ub2e4\uc74c\uacfc \uac19\uc774 \uac12\uc744 \ubcc0\uacbd\ud558\uba74 \uc624\ube0c\uc81d\ud2b8\uac00\n-- \uc644\uc804\ud788 \ub2e4\uc2dc \uadf8\ub824\uc9d1\ub2c8\ub2e4. \uc989 \uc5c5\ub370\uc774\ud2b8 \ud2b8\ub9ac\uac70\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\nmyClass.UpdateTriggers.Testing = true\n\n-- \ub9cc\ub4e0 \ud074\ub798\uc2a4\ub97c \ubc18\ud658\ud574\uc90d\uc2dc\ub2e4.\nreturn myClass\n"},{"location":"tutorial/11_extend/#extend_1","title":"Extend","text":"Extend \uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uac12\ub4e4\uacfc \uba54\uc18c\ub4dc\uc785\ub2c8\ub2e4.
self(name:string)->linker
Extend \uba54\uc18c\ub4dc \uc804\uc5ed\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4. \ub9c1\ucee4\ub97c \ub9cc\ub4e4\uba70, PropertyChangedSignal \ub97c \uc774\uc5b4\uc8fc\uac70\ub098, self \uc5d0 \uc6d0\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 Render \ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694.
Overwite REQUIRED :Render(props:valueStore)
\ud654\uba74\uc5d0 \uadf8\ub824\uc9c0\ub294 UI \ub97c \ub9cc\ub4e4\uc5b4\uc9c0\uac8c \ud558\ub294 \ud568\uc218\uc785\ub2c8\ub2e4. Extend \uac00 \uadf8\ub824\uc9c0\ub824\uba74 \ubb34\uc870\uac74 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4. \uc774 \uc624\ube0c\uc81d\ud2b8\ub97c \ub9cc\ub4dc\ub294\ub370 \ub4e4\uc5b4\uac04 \ud504\ub85c\ud37c\ud2f0 \ubaa9\ub85d\uc744 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc90d\ub2c8\ub2e4. \ub808\uc9c0\uc2a4\ud130 \ubb38\ubc95\uc774 \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Event = Quad.Event\nlocal Mount = Quad.Mount\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n [Event \"MouseButton1Click\"] = function (self,x,y)\n print((\"\ubc84\ud2bc\uc774 %d,%d \uc5d0\uc11c \ub20c\ub838\uc2b5\ub2c8\ub2e4\"):format(x,y))\n end;\n Size = props \"Size\";\n Text = props \"Text\"; -- \ub808\uc9c0\uc2a4\ud130\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4\n }\nend\n\nlocal myImported = Class(myClass)\nmyImported.Size = UDim2.fromOffset(200,200)\n\nlocal test = myImported {\n Text = \"wow\"\n}\nMount(ScreenGUI, test)\n\n-- \ud14d\uc2a4\ud2b8\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n test.Text = \"w\"..(\"o\"):rep(#test.Text-1)..\"w\"\nend\n Overwite Option :Init(props:valueStore)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub418\uae30 \uc804\uc5d0 \ubbf8\ub9ac props \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Init(props)\n -- Size \uac12\uc774 \uc5c6\ub2e4\uba74 \uae30\ubcf8\uac12\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.\n props:Default(\"Size\", UDim2.fromOffset(100,100))\n\n -- \uc55e\uc5d0 _ \ub97c \ubd87\uc5ec \ub0b4\ubd80 \ubcc0\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.\n -- \uc5b4\ub514\uc5d0\uc11c\ub098 \uc4f0\uc77c \uc218 \uc788\uc73c\uba70 register \uc5d0 \uc601\ud5a5\uc8fc\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n self._asdf = true\nend\nfunction myClass:Render(props)\n return TextButton {\n props \"Size\"\n }\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported() -- \uc635\uc158 \uc5c6\uc74c\nprint(myButton.Size)\n Overwite Option :AfterRender(object:any)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub41c \ud6c4 \ud560 \uc791\uc5c5\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c Render \uac00 \ubc18\ud658\ud55c \uac12\uc774 \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\"; -- \uc790\uae30 \uc790\uc2e0\uc5d0 \uc774 \ubc84\ud2bc\uc744 \ub123\uc2b5\ub2c8\ub2e4\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button == object) -- true\nend\n\nlocal myImported = Class(myClass)\nmyImported() -- \uc635\uc158 \uc5c6\uc74c\n Overwite Option :Update()
:Render \uc640 :AfterRender \ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uace0, \uc774\uc804\uc5d0 \uc788\ub358 \uc790\uc2dd\ub4e4\uc744 \ub2e4\uc2dc \ub04c\uc5b4\uc635\ub2c8\ub2e4. \uc774\uc804\uc758 Render \uacb0\uacfc\ub294 \uc81c\uac70\ub429\ub2c8\ub2e4
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:Update() -- update\nmyButton:Update() -- update\nmyButton:Update() -- update\n Overwite Option .Getter.<PropertyName>(self)
\uac12\uc744 \uc5bb\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {}\nend\n-- \uac12\uc744 \uc77d\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Getter.Test(self)\n return \"Hello World\"\nend\n\nlocal myImported = Class(myClass)\nprint(myImported().Test)\n Overwite Option .Setter.<PropertyName>(self,newValue:any)
\uac12\uc744 \uc124\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\";\n Text = \"wow\";\n }\nend\n-- \uac12\uc744 \uc9c0\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Setter.Test(self,newValue)\n self._button.Text = newValue\nend\nfunction myClass.Getter.Test(self)\n return self._button.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nprint(myButton.Test)\nmyButton.Test = \"Hello World\"\nprint(myButton.Test)\n Overwite Option .UpdateTriggers.<PropertyName> = boolean?
\ud574\ub2f9 \uac12\uc744 \ubcc0\uacbd\ud558\uba74 Update \uac00 \uc218\ud589\ub420\uc9c0 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n-- \uac12 \ubcc0\uacbd\uc2dc \uc5c5\ub370\uc774\ud2b8 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4\nmyClass.UpdateTriggers.Test = true\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\n Overwite Option :Unload(object)
:Destroy \uac00 \ud638\ucd9c\ub420 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub530\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4 \uc5f0\uacb0\uc744 \ubaa8\ub450 \ub04a\uace0 \uc5c6\uc5d0\uc8fc\uc9c0\ub9cc \ud544\uc694\ud55c \uacbd\uc6b0 \uc9c1\uc811 \uc5c6\uc5d0\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4
:GetPropertyChangedSignal(propertyName:string)->Bindable
\uac12 \ubcc0\uacbd\uc744 \uc5f0\uacb0\ud560 \uc218 \uc788\ub294 Bindable\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. :EmitPropertyChangedSignal \uc73c\ub85c \uc774 \uc2dc\uadf8\ub110\uc744 \uc791\ub3d9\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud3b8\uc758\uc0c1 \uc774 \uc2dc\uadf8\ub110\uc774 \uc791\ub3d9\ud560 \ub54c, \uc0c8\ub85c\uc6b4 \uac12\uc774 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
:EmitPropertyChangedSignal(propertyName:string,changedValue:any?)
\ud504\ub85c\ud37c\ud2f0 \ubcc0\uacbd\uc2dc :GetPropertyChangedSignal \uc5d0 \ub4f1\ub85d\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \uc774 \ud568\uc218\ub97c \ud638\ucd9c\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c self.a = 1 \uacfc \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \ubc14\ub85c \uac12\uc744 \uc124\uc815\ud558\ub294 \uacbd\uc6b0 \uc790\ub3d9\uc801\uc73c\ub85c \uc774 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0\ub9cc, \ud14d\uc2a4\ud2b8 \ubc15\uc2a4\uc758 \ud14d\uc2a4\ud2b8 \ucc98\ub7fc \uac1d\uccb4\uc758 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc5f0\ub3d9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. changedValue \ub294 \uc120\ud0dd\uc0ac\ud56d\uc774\uba70, \uc8fc\uc5b4\uc9c0\uc9c0 \uc54a\uc73c\uba74 self[propertyName]\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Evnet = Quad.Event\n\nlocal TextBox = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_box\";\n Text = \"test\";\n Size = UDim2.fromOffset(200,200);\n [Evnet.Prop \"Text\"] = function (this,newValue)\n self:EmitPropertyChangedSignal(\"Text\",newValue)\n end;\n -- [Evnet.Prop \"Text\"] = self \"Text\" \uc640 \ub3d9\uc77c\ud569\ub2c8\ub2e4.\n -- self(name:string) \ubb38\ubc95\uc73c\ub85c \ubcc0\uacbd \uc774\ubca4\ud2b8 \uc5ed\uc2dc \ub9c1\ud06c\n -- \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n }\nend\nfunction myClass.Getter.Text(self)\n return self._box.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:GetPropertyChangedSignal(\"Text\"):Connect(function()\n print(myButton.Text)\nend)\nMount(ScreenGUI, myButton)\n"},{"location":"tutorial/1_import/","title":"Import - \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131","text":""},{"location":"tutorial/1_import/#_1","title":"\ub85c\ube14\ub85d\uc2a4 \uc624\ube0c\uc81d\ud2b8 \ubd88\ub7ec\uc624\uae30","text":"Frame \uacfc \uac19\uc740 UI \uc624\ube0c\uc81d\ud2b8\ub97c \ub9cc\ub4e4\uace0 \uc2f6\uc740 \uacbd\uc6b0 \uba3c\uc800 import \ub97c \uc774\uc6a9\ud574\uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc774 \uc785\ub825\ud574\ubcf4\uc138\uc694!
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal Frame = Class \"Frame\"\n\nprint(\n Frame {\n Name = \"Wow!\";\n -- \ub2e4\uc74c\uacfc \uac19\uc774 \uc790\uc2dd\uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n Frame {\n Name = \"Child\";\n };\n }\n)\n \ub098\uc911\uc5d0 \uc790\uc2e0\ub9cc\uc758 UI \uc624\ube0c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc9c0\ub9cc, \uc77c\ubc18\uc801\uc778 \ub85c\ube14\ub85d\uc2a4\uac00 \uc9c0\uc6d0\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\uc758 \uacbd\uc6b0 Class(ClassName:string) \uc73c\ub85c \ubd88\ub7ec\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4
\ubd88\ub7ec\uc628 Class \uc5d0 \uae30\ubcf8\uac12\uc744 \uc124\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 BorderSizePixel \uc640 \uac19\uc774 \uc790\uc8fc \uc0ac\uc6a9\ub420 \uc218 \uc788\ub294 \ud504\ub85c\ud37c\ud2f0\ub97c \ubbf8\ub9ac \uc9c0\uc815\ud574 \ub458 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal FrameWithoutBorder = Class \"Frame\"\nFrameWithoutBorder.BorderSizePixel = 0\n\nlocal FrameWithBorder = Class \"Frame\"\nFrameWithBorder.BorderSizePixel = 1\n\nlocal frame1 = FrameWithoutBorder {}\nlocal frame2 = FrameWithBorder {}\nlocal frame3 = FrameWithBorder {\n -- \uac12\uc744 \ub36e\uc5b4 \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \uc774\ub807\uac8c \ud558\uba74 \uae30\ubcf8\uac12\uc774 \ubb34\uc2dc\ub429\ub2c8\ub2e4.\n BorderSizePixel = 0;\n}\n\nprint(frame1.FrameWithBorder.BorderSizePixel)\nprint(frame2.FrameWithBorder.BorderSizePixel)\nprint(frame3.FrameWithBorder.BorderSizePixel)\n \uc774\uc81c \uadf8\ub824\ub0b8 \ud504\ub808\uc784\uc744 \ud654\uba74\uc5d0 \uadf8\ub824\ubcf4\uace0 \uc2f6\ub098\uc694? \ub2e4\uc74c \ud29c\ud1a0\ub9ac\uc5bc Mount \ub97c \ud655\uc778\ud574\ubcf4\uc138\uc694!
"},{"location":"tutorial/2_mount/","title":"Mount - \ud654\uba74\uc5d0 UI \ud45c\ud604","text":""},{"location":"tutorial/2_mount/#ui","title":"\ud654\uba74\uc5d0 UI \ub97c \ud45c\uc2dc\ud558\uae30","text":"Quad \ubaa8\ub4c8\uc5d0\uc11c \ubaa8\ub4e0 Parent \ucc98\ub9ac\ub294 Mount \ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4. Mount(to:any,...item:any?)->mounts \ud568\uc218\ub97c \uc774\uc6a9\ud558\uba74 \ub2e4\ub8e8\ub294 \uc624\ube0c\uc81d\ud2b8\uac00 \ub85c\ube14\ub85d\uc2a4 Instance \uc778\uc9c0, \ud5a5\ud6c4 \uc18c\uac1c\ub420 Quad \ud655\uc7a5 \ud074\ub798\uc2a4\uc778\uc9c0 \uc0c1\uad00\uc5c6\uc774 \uc54c\uc544\uc11c Parent \uac00 \ucc98\ub9ac\ub429\ub2c8\ub2e4.
--- StarterGui \uc548\uc5d0 ScreenGui \ub97c \ub123\uace0 \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\ub85c \uc785\ub825\ud574\ubcf4\uc138\uc694\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nMount(ScreenGui,\n Frame {\n Name = \"Wow!\";\n }\n --[[\n , Frame {} , Frame {}\n \ub354\ub9ce\uc740 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\uac19\uc774 Mount \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n ]]\n)\n"},{"location":"tutorial/2_mount/#_1","title":"\ub9c8\uc6b4\ud2b8 \uac1d\uccb4","text":"\ud3b8\uc758\ub97c \uc704\ud574\uc11c Mount \ud568\uc218\ub294 mounts \ub77c\ub294 \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. \uc774\uac83\uc744 \uc774\uc6a9\ud558\uba74 \ud544\uc694\uc5d0 \ub530\ub77c\uc11c Mount \uc0c1\ud0dc\ub97c \ud574\uc81c\ud558\uac70\ub098 \ucd94\uac00 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. mounts \uac1d\uccb4\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub97c \uac00\uc9d1\ub2c8\ub2e4.
:Unmount()
\uc774\ub807\uac8c \ud558\uba74 \ub9c8\uc6b4\ud2b8\ub41c Instance \ub97c \uc9c0\uc6cc\ubc84\ub9bd\ub2c8\ub2e4. Quad \ub294 \uc548\uc804\ud55c \uba54\ubaa8\ub9ac \uad00\ub9ac\ub97c \uc704\ud574 gc \uc758 \uae30\ub2a5\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c, gc \uc2dc\uac04\ucc28\ub85c \uc778\ud574 Store.GetObject \uc5d0\uc11c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0ac\ub77c\uc9c0\ub294\ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui,mainFrame)\n\nlocal childFrame = Frame {}\nlocal childFrameMount = Mount(mainFrame,childFrame)\nchildFrameMount:Unmount()\n-- childFrame \uc740 \ub2e8\uc21c\ud788 .Parent = nil \ub418\ub294 \uac83\uc744 \ub118\uc5b4 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uc0ac\ub77c\uc9d1\ub2c8\ub2e4\n-- \uc989, Destroy() \uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4\n :Add(item:any)
Mount \uc5d0 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc124\uc815\ud55c to \uac12\uc744 \ub530\ub77c \ubd80\ubaa8\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4.
\uc774 \ub3d9\uc791\uc740 \ub9ac\uc2a4\ud2b8\ub97c \ub9cc\ub4e4 \ub54c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc\ub85c\ub4dc \ub3d9\uc791\uc2dc \uc9c1\uc811 \uc81c\uac70\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui, mainFrame)\n\nlocal lastListMount = Mount(mainFrame)\nlocal function refreshList()\n lastListMount:Unmount() -- \uc774\uc804 children \uc744 \uc54c\uc544\uc11c \uc81c\uac70\ud569\ub2c8\ub2e4\n for i = 1,10 do\n lastListMount:Add(Frame { Name = tostring(i) })\n end\nend\n\ntask.spawn(function()\n while true do\n refreshList()\n task.wait(2)\n end\nend)\n \ub2e4\uc74c\uacfc \uac19\uc774 \uc774\uc804 children \uc744 \uac04\uc811\uc801\uc73c\ub85c \uc81c\uac70\ud558\uace0 \uc0c8\ub85c\uc6b4 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e8 ScrollFrame \uc758 \uacbd\uc6b0 CanvasPosition\uc774 \ucd08\uae30\ud654 \ub418\uc5b4\ubc84\ub9ac\ubbc0\ub85c \uc790\uc2dd\ub4e4\uc744 :Unmount() \ud558\uae30 \uc804\uc5d0 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uace0 \ub2e4\uc2dc \ubd88\ub7ec\uc640\uc57c \ud569\ub2c8\ub2e4
\ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Store.GetObject \uac00 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Store.GetObject \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4
\ubcc0\uc218\uc5d0 \ub9cc\ub4e4\uc5b4\uc9c4 \uc624\ube0c\uc81d\ud2b8\ub97c \ud558\ub098\ud558\ub098 \uc800\uc7a5\ud574\uc57c\ud558\ub098\uc694? \uc544\ub2c8\uc694, Quad \uc5d0\ub294 \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount,Store = Quad.Class,Quad.Mount,Quad.Store\n\nlocal Frame = Class \"Frame\"\n\nFrame \"mainFrame\" {\n Size = UDim2.fromScale(1,1);\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n \uc544\uc774\ub514\uc5d0 \ud5c8\uc6a9\ub418\ub294 \uae00\uc790\ub294 \ubcc0\uc218\uba85\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ub300\uc18c\ubb38\uc790, \uc22b\uc790, \uc5b8\ub354\ubc14(_) \ub97c \ud5c8\uc6a9\ud569\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc Frame \"mainFrame\" {} \uc640 \uac19\uc774 id \uac12\uc744 \uc9c0\uc815\ud574 \uc900\ub2e4\uba74 \uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8\ub294 \uadf8 \uc544\uc774\ub514\ub97c \uac00\uc9c0\uac8c \ub429\ub2c8\ub2e4. Store.GetObject(id:string)->Object? \ub294 \uc0dd\uc131\ub41c \uac1d\uccb4\uc911 \uac00\uc7a5 \uccab\ubc88\uc9f8\uc758 id \uac00 \uc77c\uce58\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ubc18\ud658\ud574 \uc90d\ub2c8\ub2e4.
local index = 1\nFrame (\"mainFrame\" .. index) {}\nprint(Store.GetObject(\"mainFrame\" .. index))\n \uc704\ucc98\ub7fc \uc0dd\uc131\uc774\ub098 \uac00\uc838\uc624\uae30\uc5d0\uc11c \uc2dd\uc744 \ub9cc\ub4e4\uc5b4 \ub123\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
"},{"location":"tutorial/3_getObject/#_2","title":"\ub2e4\ub7c9\uc758 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\ub8e8\uae30","text":"\uc8fc\uc758Store.GetObjects\uc758 \ubc18\ud658\uac12\uc778 objectList\ub294 \uce90\uc2dc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. objectList\ub97c local \uc5d0 \ub123\uace0 \uacc4\uc18d\ud574\uc11c \uc720\uc9c0\uc2dc\ud0a4\uc9c0 \ub9c8\uc2ed\uc2dc\uc624, \ubc18\ud658\uac12\uc740 \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Quad \ub294 \ub2e4\ub7c9\uc758 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\ub8e8\uae30 \ud3b8\ud558\ub3c4\ub85d Store.GetObjects(id:string)->objectList \ub77c\ub294 \ud568\uc218\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.
\uc2e4\ud5d8\uc73c\ub85c, \uc0c9\uae54\uc774 \ub79c\ub364\ud558\uac8c \ubc14\ub00c\ub294 \ud504\ub808\uc784\ub4e4\uc744 \ub9cc\ub4e4\uc5b4 \ubd05\uc2dc\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount,Store = Quad.Class,Quad.Mount,Quad.Store\n\nlocal Frame = Class \"Frame\"\n\nFrame \"mainFrame\" {\n Size = UDim2.fromScale(1,1);\n Frame \"Child\" {\n Size = UDim2.fromOffset(20,20);\n };\n Frame \"Child\" {\n Size = UDim2.fromOffset(20,20);\n Position = UDim2.fromOffset(30,0);\n };\n Frame \"Child\" {\n Size = UDim2.fromOffset(20,20);\n Position = UDim2.fromOffset(60,0);\n };\n Frame \"Child\" {\n Size = UDim2.fromOffset(20,20);\n Position = UDim2.fromOffset(90,0);\n };\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uac12\uc744 \uc77d\uac70\ub098 :Connect \ud560 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4\nStore.GetObjects(\"Child\").Size = UDim2.fromOffset(30,30)\n\n-- \ud544\uc694\uc5d0 \ub530\ub77c Store.GetObjects(\"Child\") \ub97c pairs \uc5d0 \ub123\uc5b4 for \ubb38\uc744 \uc0ac\uc6a9\ud558\uac70\ub098\n-- :Each , :EachAsync , :IsEmpty \ud568\uc218\ub97c \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\ntask.spawn(function()\n while true do\n Store.GetObjects(\"Child\"):Each(function (item, index)\n item.BackgroundColor3 = Color3.fromRGB(\n math.random(0,255),\n math.random(0,255),\n math.random(0,255)\n )\n end)\n task.wait(1)\n end)\nend\n\n-- for \ubb38\uc744 \uc774\uc6a9\ud574\uc11c \ucd9c\ub825\ud569\ub2c8\ub2e4\nfor _,child in ipairs(Store.GetObjects(\"Child\")) do\n print(child)\nend\n"},{"location":"tutorial/3_getObject/#objectlist","title":"objectList","text":"Store.GetObjects() \uc758 \ubc18\ud658 objectList \uc758 \uba54\uc18c\ub4dc\ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
:Each((item:any, index:number)->())
\uc77c\ubc18\uc801\uc778 \ubc18\ubcf5\uc785\ub2c8\ub2e4. for \ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uacfc \ud6a8\uacfc\uac00 \uac19\uc73c\ub098 \ud568\uc218\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4
:EachAsync((item:any, index:number)->())
\ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uace0 \ubc14\ub85c\ubc14\ub85c \ub2e4\uc74c \uc544\uc774\ud15c\uc73c\ub85c \ub118\uc5b4\uac11\ub2c8\ub2e4. \ucf54\ub8e8\ud2f4\uc774 \uc774\uc6a9\ub429\ub2c8\ub2e4. wrap() \ucf54\ub8e8\ud2f4\uc744 \ubaa8\ub974\uac70\ub098, \ud544\uc694\uc131\uc774 \uc5c6\ub294\uacbd\uc6b0 \uc77c\ubc18\uc801\uc73c\ub85c :Each \ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub429\ub2c8\ub2e4
:IsEmpty()
\uc774 ObjectList \uac00 \ube44\uc5b4\uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:Remove(indexOrItem:number|any)
objectList \uc5d0\uc11c \ud574\ub2f9\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. , & \ub97c \uc0ac\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
"},{"location":"tutorial/3_getObject/#id","title":"\uace0\uae09 ID \uc0ac\uc6a9\ud558\uae30","text":"id \uae30\ub2a5\uc744 \uc870\uae08\ub354 \uace0\uae09\uc801\uc778 \ubc29\ubc95\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
\uc6a9\ubc95\uc608\uc81c-- \ub450 \uc544\uc774\ub514\ub97c \uac00\uc9c4 \ud504\ub808\uc784\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4\nFrame \"a,b\" {}\n-- a \ub97c \uac00\uc9c4\uac83\uacfc, a \uc640 b \ub97c \uac00\uc9c4\uac83\uc744 \uac00\uc838\uc635\ub2c8\ub2e4\nStore.GetObjects(\"a,a&b\"):Each(function(item)\n print(item)\nend)\n \uc880\ub354 \uc9c1\uad00\uc801\uc778 \ud655\uc778\uc744 \uc704\ud574\uc11c \uc791\ub3d9\uc2dc\ucf1c\ubcf4\uc138\uc694.local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Mount\nlocal Mount = Quad.Store\nlocal Store = Quad.Class\n\nlocal Frame = Class \"Frame\"\n\n--\ub2e4\uc74c\uacfc \uac19\uc774 a \uc640 b \ubaa8\ub450 \uac00\uc9c4 \ud504\ub808\uc784\uc744 \uc0dd\uc131\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\nFrame \"a,b\" {\n Name = \"main\";\n Frame \"a\" {\n Name = \"Child1\";\n };\n Frame \"b\" {\n Name = \"Child2\";\n };\n}\n\n-- \ub2e4\uc74c\uacfc \uac19\uc774 a \uc640 b \ub458\ub2e4 \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nStore.GetObjects(\"a,b\"):Each(function(item, index)\n print(item.Name)\nend)\nprint(\"----\")\n\n-- \ub2e4\uc74c\uacfc \uac19\uc774 a \uc640 b \ub97c \ub3d9\uc2dc\uc5d0 \uac00\uc9c4 \uac83\uc744 \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nStore.GetObjects(\"a&b\"):Each(function(item, index)\n print(item.Name)\nend)\nprint(\"----\")\n\n-- \ub2e4\uc74c\uacfc \uac19\uc774 a\uc640b \ub97c \ub3d9\uc2dc\uc5d0 \uac00\uc9c4\uac83\uacfc, b \ub97c \uac00\uc9c4\uac83\uc744 \uc120\ud0dd\n-- \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nStore.GetObjects(\"a&b,b\"):Each(function(item, index)\n print(item.Name)\nend)\n , & GetObjects \uc5d0\ub294 \uc774 \ub450 \uc5f0\uc0b0\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0, \uc0dd\uc131\uc2dc\uc5d0\ub294 , \uc73c\ub85c \uc5ec\ub7ec \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub744\uc5b4\uc4f0\uae30\ub294 \ubb34\uc2dc\ub429\ub2c8\ub2e4
GetObject \uc5d0\ub294 \uc774 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. objectList:Remove \uba54\uc18c\ub4dc\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uacbd\uc6b0\uc5d0 \ub530\ub77c \uc774\ubbf8 \uc0dd\uc131\ud55c \uc624\ube0c\uc81d\ud2b8\uc5d0 id \ub97c \ucd94\uac00 \ud639\uc740 \uc81c\uac70\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Store = Quad.Store\n\nlocal Frame = Class \"Frame\"\n\nFrame \"testing\" {}\n\n-- \uc544\uc774\ub514\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4\nStore.AddObject(\n \"a,b\", Store.GetObject(\"testing\")\n)\n\n-- \uc544\uc774\ub514\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4\nStore.GetObjects(\"a\"):Remove(Store.GetObject(\"testing\"))\n Store.AddObject(ids:string, item:any) \ub97c \uc774\uc6a9\ud574 item \uc5d0 \uc544\uc774\ub514\ub97c \ucd94\uac00\ud558\uace0 :Remove(item:any) \ub97c \uc774\uc6a9\ud574 item \uc5d0 \uc544\uc774\ub514\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4
\ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Style \uae30\ub2a5\uc774 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Style \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4
Quad \uc5d0\uc11c\ub294 \ubc18\ubcf5\uc801\uc778 \uc18d\uc131\ub4e4\uc744 \uc904\uc5ec \uc4f8 \uc218 \uc788\ub3c4\ub85d Style \uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Style = Quad.Style\n\nlocal Frame = Class \"Frame\"\n\n-- \uc0c8\ub85c\uc6b4 \uc2a4\ud0c0\uc77c\uc744 \ud558\ub098 \ub9cc\ub4ed\ub2c8\ub2e4\nlocal myStyle = Style {\n Size = UDim2.fromOffset(20,20);\n BackgroundColor3 = Color3.fromRGB(255,255,0);\n BackgroundTransparency = 0.5;\n}\n\nFrame \"mainFrame\" {\n Size = UDim2.fromScale(1,1);\n Frame \"Child\" {\n myStyle; -- \uc2a4\ud0c0\uc77c\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4!\n };\n Frame \"Child\" {\n Position = UDim2.fromOffset(30,0);\n myStyle;\n };\n Frame \"Child\" {\n Position = UDim2.fromOffset(60,0);\n myStyle;\n };\n Frame \"Child\" {\n Position = UDim2.fromOffset(90,0);\n -- \uc2a4\ud0c0\uc77c\uc740 \ub36e\uc5b4\uc368 \uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n BackgroundColor3 = Color3.fromRGB(255,0,0);\n myStyle;\n };\n}\n\nMount(ScreenGUI,Store.GetObject(\"mainFrame\"))\n Style\uc744 \uc0ac\uc6a9\ud558\uba74 \ub9ce\uc740 \uc591\uc758 \uc18d\uc131\uc744 \ud558\ub098\uc5d0 \ubcc0\uc218\ub85c \uc9d1\uc5b4\ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Style\uc744 \uc0ac\uc6a9\ud574\uc11c \ub9ce\uc740 \uc591\uc758 \ucf54\ub4dc\ub97c \uc904\uc5ec\ubcf4\uc138\uc694
Style\uc5d0\ub294 \ud0c0\uac9f id\ub97c \uc9c0\uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Style = Quad.Style\n\nlocal Frame = Class \"Frame\"\n\n-- \uc5ec\uae30\uc5d0\ub294 & \ub098 , \uac00 \uc801\uc6a9\ub418\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4!\nStyle \"Child\" {\n Size = UDim2.fromOffset(20,20);\n BackgroundColor3 = Color3.fromRGB(255,255,0);\n BackgroundTransparency = 0.5;\n}\n\n-- \ub2e8, Style\uc740 \uba3c\uc800 \uc120\uc5b8\ud574\uc57c\ud569\ub2c8\ub2e4, Frame\uc744 \uba3c\uc800 \ub9cc\ub4e4\uace0\n-- Style\uc744 \uc120\uc5b8\ud558\uba74 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\nFrame \"mainFrame\" {\n Size = UDim2.fromScale(1,1);\n Frame \"Child\" {};\n Frame \"Child\" { Position = UDim2.fromOffset(30,0) };\n}\n\nMount(ScreenGUI,Store.GetObject(\"mainFrame\"))\n Style(id:string){ any }\ub97c \uc774\uc6a9\ud574 \uc2a4\ud0c0\uc77c\uc744 \uc120\uc5b8\ud574\uc8fc\uba74 \ub098\uc911\uc5d0 \ud574\ub2f9 id\ub97c \uac00\uc9c4 \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc \ud574\ub2f9 \uc2a4\ud0c0\uc77c\uc774 \uc801\uc6a9\ub429\ub2c8\ub2e4.
MouseButton1Click \ud639\uc740 GetPropertyChangedSignal \uac19\uc740 \ub85c\ube14 \uae30\ubcf8 \uc774\ubca4\ud2b8\ub97c \uac04\ub2e8\ud558\uac8c \ub4f1\ub85d\ud558\uace0 \uc2f6\uc73c\uc2e0\uac00\uc694? Event \ub97c \uc774\uc6a9\ud574\ubcf4\uc138\uc694.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Event = Quad.Event\nlocal Store = Quad.Store\n\nlocal TextButton = Class \"TextButton\"\nlocal Count = 0\n\nTextButton \"mainButton\" {\n Size = UDim2.fromOffset(200,200);\n Text = \"0 \ubc88 \ud074\ub9ad\ud588\uc2b5\ub2c8\ub2e4\";\n [Event \"MouseButton1Click\"] = function(self,x,y)\n Count = Count + 1\n self.Text = Count .. \" \ubc88 \ud074\ub9ad\ud588\uc2b5\ub2c8\ub2e4\"\n end;\n}\nMount(ScreenGUI, Store.GetObject(\"mainButton\"))\n"},{"location":"tutorial/5_event/#_2","title":"\uc774\ubc34\ud2b8 \ub9ac\uc2a4\ud2b8","text":"\uc801\uc6a9\uac00\ub2a5\ud55c Event \ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4
Event(name:string)
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 \uc774\ubca4\ud2b8\ub4e4\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4, MouseEnter, MouseLeave, MouseButton1Down, MouseButton1Up \ub4f1\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4 \uae30\ubcf8\uc801\uc73c\ub85c \ub85c\ube14\ub85d\uc2a4\uc758 \uae30\ubcf8 \uc774\ubca4\ud2b8\ub4e4\uacfc \ub2e4\ub974\uac8c, \uccab\ubc88\uc9f8 \uc778\uc790\ub85c self \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Frame {\n [Event \"MouseEnter\"] = function (self)\n print(self.Name .. \"\uc5d0 \ub9c8\uc6b0\uc2a4\uac00 \uc62c\ub77c\uc654\uc2b5\ub2c8\ub2e4\")\n end;\n}\n local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal TextButton = Class \"TextButton\"\n\nTextButton \"mainButton\" {\n Size = UDim2.fromOffset(200,200);\n [Event \"MouseEnter\"] = function (self)\n print(\"\ubc84\ud2bc\uc774 \ud074\ub9ad\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n end;\n}\nMount(ScreenGUI, Store.GetObject(\"mainButton\"))\n Event.Created
\uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub418\uc5c8\uc744 \ub54c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c self \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nFrame {\n [Event.Created] = function (self)\n print(self.Name .. \"\uc774 \uc0dd\uc131\ub418\uc5c8\uc5b4\uc694\")\n end;\n}\n \uc8fc\uc758 Event.Created \uac00 \uc2e4\ud589\ub420 \ub54c\ub294 Parent \uac12\uc774 \uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. self.Parent \ub294 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. Class.Extend \uc5d0\uc11c\ub294 AfterRender \ub97c \uc774\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.
Event.CreatedAsync
Event.Created \uc640 \ube44\uc2b7\ud558\uc9c0\ub9cc, \ucf54\ub8e8\ud2f4 \uc548\uc5d0\uc11c \uc791\ub3d9\ud569\ub2c8\ub2e4. objectList:EachAsync() \ucc98\ub7fc \ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nFrame {\n Frame {\n Name = \"A\";\n [Event.CreatedAsync] = function (self)\n -- \uc774 \ud568\uc218\uac00 \ub05d\ub098\uc9c0 \uc54a\ub354\ub77c\ub3c4 \ub2e4\uc74c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub420 \uc218 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4\n task.wait(5)\n end;\n };\n Frame {\n Name = \"B\";\n [Event.Created] = function (self)\n print(self.Name .. \"\uac00 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n end;\n };\n}\n \uc8fc\uc758 Event.CreatedAsync \uac00 \uc2e4\ud589\ub420 \ub54c\ub294 Parent \uac12\uc774 \uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. self.Parent \ub294 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4.
Event.Prop(propertyName:string)
\ud504\ub85c\ud37c\ud2f0 \uac12\uc774 \ubcc0\uacbd\ub428\uc744 \uc5f0\uacb0\ud569\ub2c8\ub2e4.
-- \uc6a9\ubc95\nTextBox {\n Text = \"\uc544\ubb34\uac70\ub098 \uc785\ub825\ud558\uc138\uc694\";\n [Event.Prop \"Text\"] = function (self,text)\n -- \ud3b8\uc758\uc0c1\uc758 \uc774\uc720\ub85c \ubcc0\uacbd\ub41c \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4\n print(text)\n end;\n}\n"},{"location":"tutorial/6_tween/","title":"Tween - \ud2b8\uc708\ud6a8\uacfc","text":""},{"location":"tutorial/6_tween/#_1","title":"\ud2b8\uc704\ub2dd","text":"Quad\uc5d0\ub294 \ud2b8\uc708\uc744 \ub3c4\uc640\uc8fc\ub294 \ubaa8\ub4c8\uc774 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud2b8\uc708 \ubaa8\ub4c8\uc740 \ub2e8\uc21c\ud55c Instance\ub4e4\uc744 \ub118\uc5b4\uc11c table \ud615\uc2dd\ub3c4 \ud2b8\uc708\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ub098\uc911\uc5d0 \ucee4\uc2a4\ud140 \uc624\ube0c\uc81d\ud2b8\ub97c \ud2b8\uc708\ud560 \ub54c \uc720\uc6a9\ud569\ub2c8\ub2e4. Quad \uc5d0\uc11c\ub294 \uc2e4\uc81c\ub85c \uc9c1\uc811\uc801\uc73c\ub85c Tween \uc744 \uc0ac\uc6a9\ud560 \uc77c\uc740 \uc801\uc73c\uba70 \ucd94\ud6c4 \uc124\uba85\ub418\ub294 register:Tween()\ub85c \uc0ac\uc6a9\ud558\ub294\uac83\uc774 \uad8c\uc7a5\ub429\ub2c8\ub2e4.
\ud2b8\uc708\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ub2e4\uc74c\uacfc \uac19\uc774 \uc218\ud589\ud569\ub2c8\ub2e4.
\uc6a9\ubc95\uc608\uc81c - \uc6c0\uc9c1\uc774\ub294 \ubc84\ud2bcTween.RunTween(myFrame,{\n -- \ud2b8\uc708 \uc635\uc158\n Easing = Tween.Easing.Expo;\n Direction = Tween.Directions.Out;\n Time = 1;\n ...\n},{\n -- \ud504\ub85c\ud37c\ud2f0 \ubaa9\ub85d\n})\n \ud074\ub9ad\uc2dc \uc6c0\uc9c1\uc774\ub294 \ubc84\ud2bc\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4.local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Tween = Quad.Tween\n\nlocal Frame = Class \"Frame\"\nlocal TextButton = Class \"TextButton\"\nlocal on = false\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(300,300);\n BackgroundColor3 = Color3.fromRGB(255,255,255);\n TextButton \"Child\" {\n Text = \"Click Me!\";\n BackgroundColor3 = Color3.fromRGB(255,100,255);\n Position = UDim2.fromOffset(80,100);\n Size = UDim2.fromOffset(20,20);\n [Event \"MouseButton1Click\"] = function(self,x,y)\n on = not on\n Tween.RunTween(self,{\n -- \ud2b8\uc708 \uc635\uc158\uc785\ub2c8\ub2e4. \uc544\ub798\uc5d0\uc11c \uc124\uba85\ub429\ub2c8\ub2e4\n Easing = Tween.Easing.Expo;\n Direction = Tween.Directions.Out;\n Time = 1;\n },{\n -- \ud2b8\uc708\ud560 \ubaa9\ud45c \ud504\ub85c\ud37c\ud2f0\uc785\ub2c8\ub2e4\n Position = on\n and UDim2.fromOffset(200,100)\n or UDim2.fromOffset(80,100);\n })\n end;\n };\n}\n\nMount(ScreenGUI, Store.GetObejct(\"mainFrame\"))\n"},{"location":"tutorial/6_tween/#_2","title":"\ud2b8\uc708 \uc635\uc158","text":"\ud2b8\uc708\uc5d0\ub294 \ud2b8\uc708 \uc635\uc158\uc774 \ub4e4\uc5b4\uac00\uba70, \uc5ec\uae30\uc5d0\ub294 \ud2b8\uc708\uc758 \ubc29\ud5a5, \uac00\uac10\uc18d, \uc2dc\uac04 \ub4f1\uc744 \uc124\uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub123\uc744 \uc218 \uc788\ub294 \ud2b8\uc708 \uc635\uc158\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
Option Time:number?
\ud2b8\uc708\uc758 \ucd1d \uae38\uc774\ub97c \uc815\ud569\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 1\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
Option Easing:string|(index:number)->number?
\ud2b8\uc708\uc758 \uac00\uac10\uc18d \uc815\ub3c4\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Easings.Linear\uc640 \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud639\uc740 \ud544\uc694\uc5d0 \ub530\ub77c \ud568\uc218\ub97c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ud568\uc218\ub97c Easing \uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c 1\ucc28 \uc9c4\ud589\ub3c4 (Linear, 0 \uc5d0\uc11c 1 \uc0ac\uc774\uc758 \uac12) \uac12\uc774 \uc8fc\uc5b4\uc9c0\uba70, \uacc4\uc0b0 \uacb0\uacfc\ub85c \uc2e4\uc81c \uc801\uc6a9\ub420 \uc704\uce58\ub97c \ubc18\ud658\ud574\uc57c\ud569\ub2c8\ub2e4. \ubc18\ud658\uac12\uc740 \uc74c\uc218\uc774\uac70\ub098 1 \ubcf4\ub2e4 \ud074 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Exp2\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \ud568\uc218\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option Direction:string?
\ud2b8\uc708\uc774 \uc9c4\ud589\ub418\ub294 \ubc29\ud5a5\uc785\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Directions.Out\uacfc \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Out\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \ubc29\ud5a5\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option CallBack:{[number|\"*\"|string]:(Item:any, Alpha:number, AbsolutePercent:number)->()}?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uc2e4\ud589\uc911\uc778 \ub3c4\uc911\uc5d0 \ud568\uc218\ub97c \uc2e4\ud589\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b8\uc708\uc758 \uc9c4\ud589 \uc815\ub3c4\uc5d0 \ub530\ub77c\uc11c \ud55c\ubc88 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uac70\ub098 \ud2b8\uc708 \uc9c4\ud589\uc911 \uacc4\uc18d\ud574\uc11c \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc778\ub371\uc2a4\uac00 \uc22b\uc790\uc778 \uacbd\uc6b0 \ud574\ub2f9 \uc9c0\uc810\uc744 \ub118\uc744 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc73c\uba70, \"*\" \ub97c \uc778\ub371\uc2a4\ub85c \uc0ac\uc6a9\ud558\uba74 \ubaa8\ub4e0 \ubd80\ubd84\uc5d0\uc11c \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \ud568\uc218\uc5d0\ub294 \ud3b8\uc758\uc0c1 \ud2b8\uc708\uc744 \ud558\uace0\uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \uc704\uce58\uac12, \uc2dc\uac04\ub9cc\uc744 \uace0\ub824\ud55c 1\ucc28 \uc704\uce58\uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Option OnStepped:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 \"*\" \ub97c \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Ended:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 1\uc744 \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Getter:(Item:any, Property:string)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc5bb\uc73c\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Option Getter:(Item:any, Property:string, Value:Lerpable)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc124\uc815\ud558\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984, \uc124\uc815\ud560 \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Quad \uc758 \ud2b8\uc708\uc5d0\ub294 \ud2b8\uc708\uc744 \uba48\ucd94\uac70\ub098 \ud2b8\uc708\uc911\uc778\uc9c0 \ud655\uc778\ud558\ub294 \ub4f1\uc758 \uc791\uc5c5\uc744 \ud560 \uc218 \uc788\ub294 \uc5ec\ub7ec \ud568\uc218\ub4e4\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4. Tween \uc548\uc758 \ubaa8\ub4e0 \ud568\uc218\uc640 \uac12\ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
Tween.RunTween(Item:any, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)->TweenHandler
\ud2b8\uc708\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \ud2b8\uc708 \uc635\uc158\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 TweenOptions \ubb38\uc11c\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Ended, OnStepped, Setter, Getter \uac12\uc774 \uc124\uc815\ub418\uba74 Option \uc548\uc758 \uac12\ubcf4\ub2e4 \uc6b0\uc120\uc801\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uae30\ub2a5\uc740 TweenOptions\uc758 \ub0b4\uc6a9\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0ac \uc218 \uc788\ub3c4\ub85d TweenHandler \uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. \ub2e4\ub978 \ud2b8\uc708\uc774 \ubcc0\uacbd\uc911\uc778 \uc18d\uc131\uc774 \ub2e4\uc2dc \ud2b8\uc708\ud558\ub3c4\ub85d \ud638\ucd9c\ub418\uba74, \uc774\uc804 \ud2b8\uc708\uc5d0\uc11c \ud574\ub2f9 \uc18d\uc131\uc740 \ud2b8\uc708\uc774 \uc911\ub2e8\ub418\uba70 \uc0c8\ub85c\uc6b4 \ud2b8\uc708\uc73c\ub85c \ub36e\uc5b4\uc4f0\uae30 \ub429\ub2c8\ub2e4.
Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.RunTweens(Items:{[number]:any}, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)
Tween.RunTween \uc640 \uac19\uc73c\ub098 \uc5ec\ub7ec \uc624\ube0c\uc81d\ud2b8\ub97c \ud55c\uaebc\ubc88\uc5d0 \ud2b8\uc708\ud569\ub2c8\ub2e4. \uc544\ubb34\uac83\ub3c4 \ubc18\ud658\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
Tween.RunTween({myFrame1, myFrame2, myFrame3},{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.StopTween(ItemOrHandler:TweenHandler|any)
\ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4. TweenHandler \ub610\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc5b4 \uba48\ucd9c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc73c\uba74 \uadf8 \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc2e4\ud589\uc911\uc778 \ubaa8\ub4e0 \ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4.
local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(Handler)\n local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(myFrame)\n Tween.StopPropertyTween(Item:any, PropertyName:string)
\uc624\ube0c\uc81d\ud2b8\uc5d0 \ud2b9\uc815 \ud504\ub85c\ud37c\ud2f0\uc758 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0b5\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.StopPropertyTween(ItemOrHandler:IsTweening|any)->boolean
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8 \ub610\ub294 TweenHandler \ub85c \ud2b8\uc708\uc774 \uc9c4\ud589\uc911\uc778\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4.
Tween.IsPropertyTweening(Item:any, PropertyName:string)
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8\uc758 \ud504\ub85c\ud37c\ud2f0\uac00 \ud2b8\uc708\uc911\uc774\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \uadf8\ub798\ud504\uc640 \ubbf8\ub9ac\ubcf4\uae30\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \uc790\uc138\ud55c \uc815\ubcf4\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4"},{"location":"tutorial/7_quadProperty/","title":"QuadProperty - \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0","text":"\uc8fc\uc758\uc0ac\ud56d \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0\ub294 Tween \uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 register\uc758 :Tween()\uc758 \uacbd\uc6b0 \ud638\ud658\ub418\ubbc0\ub85c, \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0 \uac12\uc744 \ud2b8\uc708\ud558\ub824\uba74 \ud5a5\ud6c4 \uc124\uba85\ub418\ub294 register \uc640 \ud568\uae68 \uc0ac\uc6a9\ud574\uc57c\ud569\ub2c8\ub2e4.
Tween.RunTween, Tween.RunTweens \uc640\ub294 \uac19\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Quad \uc5d0\uc11c\ub294 \ud3b8\ub9ac\uc131\uc744 \uc704\ud574 \uc77c\ubd80 \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubaa8\ub4e0 \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0\ub294 \ud5a5\ud6c4 \uc18c\uac1c\ub418\ub294 register\uc640 \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal ImageFrame = Class \"ImageFrame\"\nImageFrame.BackgroundTransparency = 1\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n PaddingAllOffset = 50; -- Padding \uc744 50 \uc529 \ubaa8\ub4e0 \ubc29\ud5a5\uc73c\ub85c \uc90d\ub2c8\ub2e4\n BackgroundColor3 = Color3.fromRGB(40,40,40);\n ImageFrame {\n ImageColor3 = Color3.fromRGB(60,60,60);\n RoundSize = 16; -- \uc774\ubbf8\uc9c0\ub85c \ub77c\uc6b4\ub4dc \ud504\ub808\uc784\uc744 \ub9cc\ub4ed\ub2c8\ub2e4\n Size = UDim2.fromScale(1,1);\n ImageFrame {\n BackgroundColor3 = Color3.fromRGB(80,80,80);\n };\n };\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud504\ub85c\ud37c\ud2f0\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
RoundSize:number?
ImageLabel, ImageButton \uc5d0\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc18d\uc131\uc785\ub2c8\ub2e4. \uc6d0\ud615 \uc774\ubbf8\uc9c0\uc5d0 Slice\ub97c \uc774\uc6a9\ud574 \ub465\uadfc \ud504\ub808\uc784\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c UICorner\ubcf4\ub2e4 \ubd80\ub4dc\ub7ec\uc6b4 \ucf54\ub108\ud6a8\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.
Corner:number?
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 UI\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. UICorner\ub97c \uc774\uc6a9\ud574 \ubaa8\uc11c\ub9ac \ubd80\ubd84\uc744 \ub465\uae00\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
PaddingAll:UDim?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc0c1\ud558\uc88c\uc6b0 \ubaa8\ub450 \uac19\uc740 \uac12\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. PaddingAllOffset \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
PaddingAllOffset:number?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. PaddingAll\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc791\ub3d9\ud558\ub098, Offset\uac12\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. PaddingAll \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Scale:number?
UIScale\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. UIScale.Scale \uacfc \uac19\uc740 \ud6a8\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4
\ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Store.GetStore \uac00 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Store.GetStore \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4
\ub808\uc9c0\uc2a4\ud130\ub294 \ud55c \uac12\uc774 \ubcc0\uacbd\ub420 \ub54c, \uadf8 \uac12\uc744 \uc0ac\uc6a9\ud55c \uacf3\uc774 \uc5c5\ub370\uc774\ud2b8 \ub420 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4e4\uc5b4\uc8fc\ub294 Quad \uc758 \uc8fc\uc694 \uae30\uc220\uc785\ub2c8\ub2e4. \ucd94\ud6c4 \uc124\uba85\ub420 Class.Extend \uc640\ub3c4 \uac19\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
\ub808\uc9c0\uc2a4\ud130\ub294 \uc774\ub7ec\ud55c \uc2dc\ub098\ub9ac\uc624\uc5d0\uc11c \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
\uc774\uc678\uc5d0\ub3c4 \ub808\uc9c0\uc2a4\ud130\uc758 \ud65c\uc6a9 \ubc29\ubc95\uc740 \ubb34\uad81\ubb34\uc9c4\ud569\ub2c8\ub2e4. \ub808\uc9c0\uc2a4\ud130\uc758 \uc0ac\uc6a9\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
local myStore = Store.GetStore(\"myStore\")\nmyStore.color = Color3.fromRGB(255,255,255)\nFrame { BackgroundColor3 = myStore \"color\" }\n-- \uc5f0\ub3d9\ub41c \ud504\ub808\uc784\ub3c4 \uc5c5\ub370\uc774\ud2b8 \ub429\ub2c8\ub2e4\nmyStore.color = Color3.fromRGB(0,0,0)\n \uc8fc\uc758 \uad6c\ud604\uc758 \ubcf5\uc7a1\uc131\uc758 \uc774\uc720\ub85c \ub808\uc9c0\uc2a4\ud130\ub294 \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc\uc5d0\ub9cc \ub4f1\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local myFrame = Frame{}\nFrame.BackgroundColor3 = myStore \"color\"\n \uc704\ucc98\ub7fc \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc608\uc2dc \ucf54\ub4dc\ub85c \uc815\ud655\ud558\uac8c \ud655\uc778\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\n-- \ub808\uc9c0\uc2a4\ud130\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub294 \ud14c\uc774\ube14\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.\n-- \uc5ec\uae30\uc5d0 \ub2f4\uc544\ub0b4\ub294 \uac12\uc744 \uc5c5\ub370\uc774\ud2b8 \ud558\ub294 \uacbd\uc6b0 \ub808\uc9c0\uc2a4\ud130\ub85c \uc5f0\uacb0\ub41c\n-- \uc624\ube0c\uc81d\ud2b8\ub4e4\ub3c4 \uac19\uc774 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4.\nlocal myStore = Store.GetStore(\"myStore\")\nlocal TextLabel = Class \"TextLabel\"\n\nmyStore.Text = \"0 \ucd08 \uc9c0\ub0a8\"\nmyStore.Color = Color3.fromRGB(255,100,255)\n\nTextLabel \"mainLabel\" {\n Size = UDim2.fromOffset(100,200);\n -- myStore \uc758 Text \uac12\uc774 \ubcc0\uacbd\ub428\uc744 \ucd94\uc801\ud558\uace0, Text \uac12\uc744\n -- \uc5c5\ub370\uc774\ud2b8 \uc2dc\ud0b5\ub2c8\ub2e4.\n Text = myStore \"Text\";\n\n -- \uc774\uac83\uc740 \ub808\uc9c0\uc2a4\ud130\ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uc774 \uc544\ub2c8\ub77c \ub2e8\uc21c\ud788 \uac12\ub9cc\n -- \ubd88\ub7ec\uc640 \ub123\uc5b4\uc8fc\ub294 \uac83\uc785\ub2c8\ub2e4. \uc790\ub3d9 \uc5c5\ub370\uc774\ud2b8\uac00 \uac00\ub2a5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n BackgroundColor3 = myStore.Color;\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainLabel\"))\n\n-- \ubc14\uafb8\ub354\ub77c\ub3c4 \ub808\uc9c0\uc2a4\ud130\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc544 \ubc18\uc601\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\nmyStore.Color = Color3.fromRGB(255,255,255)\n\nlocal Count = 1\nwhile task.wait(1) do\n -- \uac12\uc744 \uc5c5\ub370\uc774\ud2b8 \ud569\ub2c8\ub2e4. \ud14d\uc2a4\ud2b8 \ub77c\ubca8\ub3c4\n -- \uc790\ub3d9\uc801\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ub429\ub2c8\ub2e4.\n myStore.Text = Count .. \" \ucd08 \uc9c0\ub0a8\"\n Count = Count + 1\nend\n"},{"location":"tutorial/8_register/#_2","title":"\ub808\uc9c0\uc2a4\ud130 \uba54\uc18c\ub4dc","text":"\ub808\uc9c0\uc2a4\ud130\uc5d0\ub294 \uc5ec\ub7ec\uac00\uc9c0 \uba54\uc18c\ub4dc\uac00 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4. \uc774 \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74 \ub808\uc9c0\uc2a4\ud130\ub97c \ubcf4\ub2e4 \ub354 \ub2e4\uc591\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
register \ud2b9\uc218 \uba54\uc18c\ub4dc\uac00 \uc801\uc6a9\ub418\ub294 \uc21c\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
:Add(value:any)->register
\uac12\uc5d0 \ub354\ud558\uae30\ub97c \ucde8\ud569\ub2c8\ub2e4. \uc74c\uc218\ud615\ud0dc\uac00 \uc81c\uacf5\ub418\ub294 \uacbd\uc6b0 \ube7c\uae30 \ucc98\ub7fc \uc791\ub3d9\ud569\ub2c8\ub2e4. number, Udim, UDim2, Color3, Vector2 \ub4f1 \ub354\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0\uac83\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.pos = UDim2.fromOffset(100,0)\n\nFrame \"mainFrame\" {\n Position = myStore \"pos\":Add(UDim2.fromOffset(0,100));\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nwhile true do\n myStore.pos = myStore.pos + UDim2.fromOffset(10,0)\n task.wait(2)\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:With((store:valueStore, newValue:any, key:string)->())->register
\ud568\uc218 \ub610\ub294 \ud14c\uc774\ube14\uc5d0\uc11c \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. Add \ubcf4\ub2e4 \ub098\uc911\uc5d0 \uc218\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uac12\uc5d0\ub294 \ud3b8\uc758\uc0c1 \uc2a4\ud1a0\uc5b4 \uac12\uc774 \uc81c\uacf5\ub418\uba70, \uc0c8\ub85c\uc6b4 \uac12\uacfc, \ubc14\ub010 \uac12\uc5d0 \ub300\ud55c \ud0a4\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4
\uac04\ub7b5\ud55c \uc6a9\ubc95\uc608\uc81c - \ud568\uc218\uc608\uc81c - \ud14c\uc774\ube14myStore \"size\":With(function (_,value)\n return value * 2\nend)\n width \uac12\uc5d0 \ub9de\ucdb0 \uc790\ub3d9\uc73c\ub85c UI \uac00 \uc5c5\ub370\uc774\ud2b8\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.topbarSize = 60\nmyStore.width = 200\n\n-- \ub808\uc9c0\uc2a4\ud130\ub97c \ubcc0\uc218\ub85c \ub450\uace0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4\nlocal listItemSize = myStore \"width\":With(function()\n return UDim2.fromOffset(myStore.width,60)\nend)\n\nFrame \"mainFrame\" {\n Class \"UIListLayout\" { SortOrder = Enum.SortOrder.LayoutOrder };\n\n -- \uc0ac\uc774\uc988\uac00 width \uc5d0 \ub9de\uac8c \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4\n Size = myStore \"width\":With(function ()\n return UDim.fromOffset(store.width,400)\n end);\n\n Frame \"Topbar\" {\n LayoutOrder = 1;\n BackgroundColor3 = Color3.fromRGB(255,0,0);\n -- \uc774\ub807\uac8c \uc5ec\ub7ec \uac12\uc744 \ubb36\uc5b4\uc11c \ub450 \uac12\uc774 \ubcc0\uacbd\ub428, \ud639\uc740 \uadf8\uc774\uc0c1\uc744\n -- \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n Size = myStore \"topbarSize,width\":With(function()\n return UDim2.fromOffset(myStore.width,myStore.topbarSize)\n end);\n }\n Frame \"ListItem\" {\n LayoutOrder = 2;\n BackgroundColor3 = Color3.fromRGB(0,255,0);\n Size = listItemSize;\n };\n Frame \"ListItem\" {\n LayoutOrder = 3;\n BackgroundColor3 = Color3.fromRGB(0,0,255);\n Size = listItemSize;\n };\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- width \uac12\uc744 \ubcc0\uacbd\ud574\ubcf4\uc138\uc694\nwhile true do\n myStore.width = myStore.width + 10\n task.wait(1)\nend\n colors \ud14c\uc774\ube14 \uc548\uc5d0 \uc788\ub294 \uc0c9\uae54\ub4e4\uc744 \ub3cc\uc544\uac00\uba70 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nlocal colors = {\n Color3.fromRGB(255,255,255);\n Color3.fromRGB(255,255,0);\n Color3.fromRGB(0,255,255);\n Color3.fromRGB(255,0,255);\n Color3.fromRGB(255,0,0);\n Color3.fromRGB(0,255,0);\n Color3.fromRGB(0,0,255);\n}\nmyStore.color = 1\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n -- colors \uc5d0\uc11c \uc778\ub371\uc2f1\ud574 \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4\n BackgroundColor3 = myStore \"color\":With(colors);\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- \uc778\ub371\uc2a4\ub97c \uc21c\ud68c\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n myStore.color = (i-1)%(#colors)+2\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:Tween(options:TweenOptions)->register
\ud2b8\uc708\uc744 \uc774\uc6a9\ud574 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4(\ucc98\uc74c \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc74c) \uc635\uc158\uc740 Tween \ubb38\uc11c\uc5d0 \ub098\uc640\uc788\ub294 \uc635\uc158\uacfc \uac19\uc2b5\ub2c8\ub2e4.
\uac04\ub7b5\ud55c \uc6a9\ubc95\uc608\uc81c - \ud55c\uaebc\ubc88\uc5d0 \uc774\ub3d9-- Tween \uc635\uc158\uc744 \ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nmyStore \"size\":Tween{ Time = 2 }\n \ud504\ub808\uc784\uc744 \ud55c\uaebc\ubc88\uc5d0 \uc6c0\uc9c1\uc785\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Style = Quad.Style\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\nmyStore.pos = UDim2.fromOffset(50,0)\nStyle \"TweenFrame\" {\n Size = UDim2.fromOffset(50,50);\n BackgroundColor3 = Color3.fromRGB(255,100,255);\n}\n\nFrame \"mainFrame\" {\n BackgroundColor3 = Color3.fromRGB(255,255,255);\n Size = UDim2.fromOffset(500,500);\n Frame \"TweenFrame\" {\n Position = myStore \"pos\":Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,100))\n :Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,200))\n :Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,300))\n :Tween{Time = 2};\n }\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nlocal on = false\nwhile true do\n on = not on\n myStore.pos = on and UDim2.fromOffset(400,0) or UDim2.fromOffset(50,0)\n task.wait(1.5) -- \ud2b8\uc708\uc740 \ub36e\uc5b4 \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \ub530\ub77c\uc11c 2 \ucd08\uc778 \uae38\uc774\ubcf4\ub2e4 \ub354 \ube68\ub9ac \ubc14\uafd4\ub3c4 \uc624\ub958\uac00 \uc77c\uc5b4\ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:Default(value:any)->register
\uae30\ubcf8\uac12\uc744 \uc815\ud569\ub2c8\ub2e4. \ub9cc\uc57d \uac12\uc774 nil \uc778 \uacbd\uc6b0 \uc774 \uac12\uc744 \uc0ac\uc6a9\ud558\uac8c \ub429\ub2c8\ub2e4. Add \ub098 With \ub4f1 \ub2e4\ub978\uac83\uc5d0 \uc601\ud5a5\ubc1b\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n -- color \uac12\uc774 \uc5c6\uc73c\ubbc0\ub85c Default \uc548\uc758 \uac12\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\n BackgroundColor3 = myStore \"color\"\n :Default(Color3.fromRGB(255,0,0));\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\ntask.wait(5)\nmyStore.color = Color3.fromRGB(0,255,0)\n \uc8fc\uc758 :Register(<INPUT>(store:valueStore, newValue:any, key:string)->())->INPUT
\ub808\uc9c0\uc2a4\ud130\uc5d0 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4. \uac12\uc774 \ubcc0\uacbd\ub418\uba74 \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uac12\uc5d0\ub294 \ud3b8\uc758\uc0c1 \uc2a4\ud1a0\uc5b4 \uac12\uc774 \uc81c\uacf5\ub418\uba70, \uc0c8\ub85c\uc6b4 \uac12\uacfc, \ubc14\ub010 \uac12\uc5d0 \ub300\ud55c \ud0a4\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4
newValue \uc5d0\ub294 :Add, :With, :Tween, :Default \uac00 \ub530\ub85c \uacc4\uc0b0\ub418\uc9c0 \uc54a\uc73c\uba70, \uc124\uc815\ub41c \uac12\uc744 \uc544\ubb34 \uac00\uacf5 \uc5c6\uc774 \uc81c\uacf5\ud569\ub2c8\ub2e4
myStore.test = 1\n-- \ubc18\ud658 \uac12\uc740 \uc785\ub825\uc73c\ub85c \ub123\uc740 \ud568\uc218\uc785\ub2c8\ub2e4. !\uaf2d \uc800\uc7a5\ud574\uc57c\ud569\ub2c8\ub2e4\n-- :Register \ub294 \ud568\uc218\uac00 \uc0ac\ub77c\uc9c0\uc9c0 \uc54a\ub3c4\ub85d \uac12\uc744 \uc720\uc9c0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\n-- \ub9cc\uc57d \ubc84\ub9b4 \uacbd\uc6b0 \uc77c\uc815 \uc2dc\uac04 \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nlocal func = myStore \"test\":Register(function(_,newValue)\n -- \uac12 \ubcc0\uacbd\uc2dc \ucd9c\ub825\ub429\ub2c8\ub2e4\n print(newValue)\nend)\nmyStore.test = 2\n myStore.test1, myStore.test2 \uac00 \ubcc0\ud654\ud558\uba74 print \ud568\uc218\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\n\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.test1 = 1\nmyStore.test2 = \"Hello\"\n\nlocal func = myStore \"test1,test2\":Register(function()\n print(myStore.test1,myStore.test2)\nend)\n\nmyStore.test1 = 2\n \uc8fc\uc758 Register \uc548\uc5d0 \ub4e4\uc5b4\uac04 \ud568\uc218\ub294 GC \uc548\uc815\uc131\uc744 \uc704\ud574\uc11c \uc57d\ud55c \ucc38\uc870\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \ud568\uc218\ub97c \uc800\uc7a5\ud574\uc57c\ud569\ub2c8\ub2e4.
"},{"location":"tutorial/9_lang/","title":"Lang - \uc5b8\uc5b4\uad00\ub9ac","text":"\uc77d\uae30 \uc804...\ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Lang \uae30\ub2a5\uc774 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Lang \uc740 \uacf5\uc720\ub429\ub2c8\ub2e4
Quad \uc5d0\ub294 \uadc0\ucc2e\uc740 \uc5b8\uc5b4\uad00\ub9ac\ub97c \uc790\ub3d9\uc73c\ub85c \ud574\uc8fc\ub294 \uae30\ub2a5\uc774 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 register \uc640 \uc5f0\ub3d9\ud574 \uc801\uc740 \uc904\uc758 \ucf54\ub4dc\ub85c \ubcc0\ud558\ub294 \ud14d\uc2a4\ud2b8\ub3c4 \uc5b8\uc5b4\uc5d0 \ub9de\uac8c \ucd9c\ub825\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
\ubc88\uc5ed \ud14c\uc774\ube14\uc740 Lang.New(LangName:string,{ [Locale]: string|(options)->string }) \ub2e4\uc74c\uc744 \uc774\uc6a9\ud574 \ub9cc\ub4e4 \uc218 \uc788\uc73c\uba70. Lang(LangName:string)(options) \ub85c UI \uc5d0 \uc801\uc6a9\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Lang.New(\"Test\",{\n [Lang.Locales.Korean] = \"{won} \uc6d0\";\n [Lang.Locales.Default] = \"{won} Won\";\n})\nTextLabel {\n Lang \"Test\" {\n won = 100;\n };\n}\n 1\ucd08\uac00 \uc9c0\ub0a0 \ub54c \ub9c8\ub2e4 \uce74\uc6b4\ud2b8\ub97c \uc99d\uac00\ud569\ub2c8\ub2e4. \uc601\uc5b4 \uc0ac\uc6a9\uc790\uc5d0\uac90 \uc601\uc5b4\ub97c, \ud55c\uad6d\uc5b4 \uc0ac\uc6a9\uc790\uc5d0\uac90 \ud55c\uad6d\uc5b4\ub97c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Mount = Quad.Mount\nlocal Event = Quad.Event\nlocal Lang = Quad.Lang\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myStore = Store.GetStore(\"myStore\")\nmyStore.count = 0\n\nLang.New(\"TimePassed\",{\n [Lang.Locales.Korean] = \"{count}\ucd08 \uc9c0\ub0ac\uc5b4\uc694\";\n [Lang.Locales.Default] = function (options)\n -- \ud568\uc218 \ub610\ud55c \ub4f1\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n if options.count > 1 then\n return (\"%d seconds passed\"):format(options.count)\n else\n return (\"%d second passed\"):format(options.count)\n end\n end;\n})\n\nTextButton \"mainButton\" {\n Size = UDim2.fromOffset(100,100);\n Text = Lang \"TimePassed\" {\n -- count = 1 \uc77c\ubc18\uc801\uc778 \uac12\ub3c4 \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4\n count = myStore \"count\";\n };\n [Event \"MouseButton1Click\"] = function()\n -- \ud074\ub9ad\uc2dc \uc5b8\uc5b4\uac00 \ubcc0\uacbd\ub429\ub2c8\ub2e4\n if Lang.CurrentLocale == Lang.Locales.Default then\n Lang.CurrentLocale = Lang.Locales.Korean\n else\n Lang.CurrentLocale = Lang.Locales.Default\n end\n end\n}\nMount(ScreenGUIk,Store.GetObject(\"mainButton\"))\n\nwhile task.wait(1) do\n myStore.count = myStore.count + 1\nend\n"},{"location":"tutorial/9_lang/#locale","title":"Locale \ubaa9\ub85d","text":"\ub85c\ucf00\uc77c \uac12\ub4e4\uc740 Lang.Locales\uc5d0\uc11c \uac00\uc838\uc62c \uc218 \uc788\uc73c\uba70, \uc0ac\uc6a9\uac00\ub2a5\ud55c \ub85c\ucf00\uc77c \ubaa9\ub85d\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
Default (default) English (en_us) Spanish (es_es) French (fr_fr) Indonesian (id_id) Italian (it_it) Japanese (ja_jp) Korean (ko_kr) Russian (ru_ru) Thai (th_th) Turkish (tr_tr) Vietnamese (vi_vn) Portuguese (pt_br) German (de_de) ChineseSimplified (zh_cn) ChineseTraditional (zh_tw) Bulgarian (bg_bg) Bengali (bn_bd) Czech (cs_cz) Danish (da_dk) Greek (el_gr) Estonian (et_ee) Finnish (fi_fi) Hindi (hi_in) Croatian (hr_hr) Hungarian (hu_hu) Georgian (ka_ge) Kazakh (kk_kz) Khmer (km_kh) Lithuanian (lt_lt) Latvian (lv_lv) Malay (ms_my) Burmese (my_mm) Bokmal (nb_no) Dutch (nl_nl) Filipino (fil_ph) Polish (pl_pl) Romanian (ro_ro) Ukrainian (uk_ua) Sinhala (si_lk) Slovak (sk_sk) Slovenian (sl_sl) Albanian (sq_al) Bosnian (bs_ba) Serbian (sr_rs) Swedish (sv_se) Arabic (ar_001)
"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":[" "]},"docs":[{"location":"","title":"Quad","text":"\ucc98\uc74c\uc624\uc168\ub098\uc694? \ud29c\ud1a0\ub9ac\uc5bc \ubb38\uc11c\ub97c \uc77d\uc5b4\ubcf4\uc138\uc694! \ucc98\uc74c\ubd80\ud130 \ucc28\uadfc\ucc28\uadfc Quad \ubaa8\ub4c8\uc744 \uc815\ubcf5\ud560 \uc218 \uc788\uc5b4\uc694
"},{"location":"changelogs/","title":"\ubc84\uc804 \ubc88\uacbd\uc0ac\ud56d","text":""},{"location":"changelogs/#224","title":"2.24","text":"\ubaa8\ub4e0 \ubb38\uc11c\uac00 \uc815\ub9ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#223","title":"2.23","text":"\uac1d\uccb4 \uc0dd\uc131\uc2dc \uc77c\uc5b4\ub098\ub294 \uc624\ub958\ub97c \ud574\uacb0\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c Extend \uac1d\uccb4 \ub0b4\ubd80 \uc790\uc2dd\uc774 Unmount \ub418\ub294 \uacbd\uc6b0 __child \uc5d0\uc11c \uc81c\uac70\ub429\ub2c8\ub2e4. types \uc758 \uc624\ud0c0\ub97c \uace0\ucce4\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#222","title":"2.22","text":"\ub354\uc774\uc0c1 Event.Prop \uac00 \ucc98\uc74c \uc0dd\uc131\uc2dc \uc2e4\ud589\ub418\ub294 \uc77c\uc774 \uc77c\uc5b4\ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#221","title":"2.21","text":"Linker \uac00 \uc774\uc81c \ud074\ub798\uc2a4 \uc548 \ud074\ub798\uc2a4\uc5d0\uc11c \uc0ac\uc6a9\ub420 \uc218 \uc788\ub3c4\ub85d \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#220","title":"2.20","text":"Docments \uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub9ce\uc740\uc591\uc758 \uc0c8\ub85c\uc6b4 \ud29c\ud1a0\ub9ac\uc5bc\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4. Mkdocs \ud14c\ub9c8\uc640 \uc5ec\ub7ec\uac00\uc9c0 \uc124\uc815\uc774 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c Makefile \uc744 \ud1b5\ud574\uc11c rojo build \uc640 mkdocs build \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#219","title":"2.19","text":"Linker \uac1d\uccb4\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c GetPropertyChangedSignal \uc640, self \uc5d0 \ud2b9\uc815 \uc624\ube0c\uc81d\ud2b8 \ud639\uc740 \uc774\ubca4\ud2b8\ub97c \uc5f0\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#218","title":"2.18","text":"\uc774\uc81c \ub354\uc774\uc0c1 GC \uc5d0 \uc758\ud574 Store \uc758 Instance \uac12\uc774 \uc190\uc2e4\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#217","title":"2.17","text":"Tween \uc758 CallBack \ub4f1\ub85d \uc2dc \uc8fc\uc5b8\uc9c0\ub294 \ud30c\ub77c\uba54\ud130\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ub354\uc774\uc0c1 ~ \ubb38\uc774 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#215-breaking-changes","title":"2.15 BREAKING CHANGES","text":"\uc774\uc81c Lang \uc5d0\uc11c CurrentLocale, FailedMessage \uc744 \ubcc0\uacbd\ud558\uba74 \uc790\ub3d9\uc73c\ub85c \ubcc0\uacbd\uc0ac\ud56d\uc774 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4. \ub610\ud55c \uc77c\ubd80 \ud544\ub4dc\uc758 \ub124\uc774\ubc0d\uc774 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#214","title":"2.14","text":"Lang \ubaa8\ub4c8\uc774 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. register \ub97c \uc0ac\uc6a9\ud574 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ub2e4\uc911\uc5b8\uc5b4 \uc9c0\uc6d0\uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#213","title":"2.13","text":"Signal \ubaa8\ub4c8\uc774 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c Class.Extend \uc5d0\uc11c GetPropertyChangedSignal \uacfc EmitPropertyChangedSignal \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#212","title":"2.12","text":"Mount \ubc18\ud658 \uac1d\uccb4\uc5d0 Add \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d Mount \uac1d\uccb4\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#211","title":"2.11","text":"Store.GetObjects \uc5d0 \uc774\uc81c & \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#29","title":"2.9","text":"PreloadAsync \ub97c \ud1b5\ud574 \uc774\uc81c round.lua \uc5d0\uc11c \ub77c\uc6b4\ub4dc \uc774\ubbf8\uc9c0\ub97c \ubbf8\ub9ac \ub85c\ub4dc\ud569\ub2c8\ub2e4.
"},{"location":"changelogs/#28","title":"2.8","text":"\ubc18\ud658 \uad00\ub828 \ucf54\ub4dc\uac00 exports \ub85c \uc774\uc8fc\ub418\uc5c8\uc73c\uba70. init.lua \uc5d0\uc11c\ub294 \uc790\ub3d9\uc801\uc73c\ub85c types \ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
"},{"location":"changelogs/#27","title":"2.7","text":"\uc774\uc81c types \ub97c \uc644\uc804\ud788 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc9c1\uc811 \ubd88\ub7ec\uc640 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
"},{"location":"changelogs/#2126-breaking-changes","title":"2.1~2.6 BREAKING CHANGES","text":"\ubaa8\ub4e0 \ubaa8\ub4c8\uc758 \ud544\ub4dc\uc758 \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc5c8\uc73c\uba70, \ubaa8\ub4e0 \ud074\ub798\uc2a4\ub4e4\uc774 \uae30\ubcf8\uc801\uc73c\ub85c \ub300\ubb38\uc790 \uc2dc\uc791 \ub124\uc774\ubc0d\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \uba85\uba85\uaddc\uce59\uc744 \ubcc0\uacbd\ud588\uc2b5\ub2c8\ub2e4.
"},{"location":"changelogs/#20","title":"2.0","text":"\ubc84\uc804 \ud310\uc62c\ub9bc, BREAKING CHANGES \ub97c \uc704\ud574 \ubc84\uc804\uc744 \ud310\uc62c\ub9bc \ud558\uc600\uc2b5\ub2c8\ub2e4.
"},{"location":"gallery/","title":"\uac24\ub7ec\ub9ac","text":"\uc5ec\uae30\ub294 \uc5ec\ub7ec\ubd84\ub4e4\uc758 \uc791\ud488\uc744 \uc62c\ub824\ubcfc \uc218 \uc788\ub294 \uacf3\uc785\ub2c8\ub2e4! Quad \ub97c \uc0ac\uc6a9\ud55c \uc5ec\ub7ec\uac00\uc9c0 \ud6cc\ub96d\ud55c \uc791\ud488\ub4e4\uc744 \ubcf4\uc5ec\uc8fc\uc138\uc694!
"},{"location":"license/","title":"\ub77c\uc774\uc120\uc2a4","text":"QwreeyKawaii License v1.3
KoreanEnglish Permissions Limitations Conditions \u2705 \uc0c1\uc5c5\uc801 \uc0ac\uc6a9 \u274e \ubcf4\uc99d \u2753 \ub77c\uc774\uc120\uc2a4\uc640 \uc800\uc791\uad8c \uace0\uc9c0 (\uad8c\uace0\uc0ac\ud56d) \u2705 \ubc30\ud3ec \u274e \ubb34\ub840\ud558\uac8c \uad74\uae30 \u2705 \ubcc0\uacbd/\uc218\uc815/2\ucc28\uc800\uc791 \u274e \ub7ec\uc2dc\uc544\ub97c \ube44\ub86f\ud55c \uc804\uc7c1\uc744 \ub3d5\ub294 \u2705 \uac1c\uc778\uc801 \uc0ac\uc6a9 \u274e \uc544\ubb34\ub7f0 \ubcc0\uacbd\uc0ac\ud56d \uc5c6\uc774 \ubcf5\uc81c QwreeyKawaii license v1.3\nCopyright 2023. Qwreey [qwreey75@gmail.com]\n\n\uc774 \ub77c\uc774\uc120\uc2a4\ub294 DBAD \ub77c\uc774\uc120\uc2a4\ub97c \uae30\ubc18\uc73c\ub85c \ud569\ub2c8\ub2e4.\n\ub204\uad6c\ub4e0\uc9c0 \uc774 \ub77c\uc774\uc120\uc2a4 \ubb38\uc11c\uc758 \uc6d0\ubcf8 \ud639\uc740 \uc218\uc815\ubcf8\uc744\n\ubcf5\uc0ac, \ud3b8\uc9d1, \ubc30\ud3ec \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\nQwreeyKawaii \ub77c\uc774\uc120\uc2a4\uc758 \ubcf5\uc0ac \ubc30\ud3ec \ubc0f \uc218\uc815\uc5d0\n\uad00\ud55c \uaddc\uc815\uacfc \uc870\uac74.\n\n1. \ub2f9\uc2e0\uc740 \uc774 \uadc0\uc5ec\uc6b4 \ucc3d\uc791\ubb3c\uc744 \uac00\uc9c0\uace0 \uc5b4\ub5a0\ud55c\n\uac83\uc774\ub4e0 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e8, \ubb34\ub840\ud558\uc9c0 \ub9c8\uc138\uc694.\n\ubb34\ub840\ud55c \ud589\ub3d9\uc740 \ud1b5\uc0c1\uc801\uc73c\ub85c \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n\n\uac00. \uadc0\uc5ec\uc6b4 \uc774 \ucc3d\uc791\ubb3c\uc744 \uc5b4\ub5a0\ud55c \uac00\uacf5\ub3c4 \uc5c6\uc774\n \ubcf5\uc81c\ud558\uac70\ub098, \uc774\ub984\ub9cc \ubc14\uafb8\ub294 \uac83\uc740 \ubb34\ub840\ud558\uba70\n \ub178\uace8\uc801\uc778 \uc800\uc791\uad8c \uce68\ud574\uc785\ub2c8\ub2e4.\n\ub098. \uadc0\uc5ec\uc6b4 \uc774 \ucc3d\uc791\ubb3c\uc5d0 \uc74c\ub780\uc131 \ud639\uc740 \uc720\ud574\ud55c\n \ucf58\ud150\uce20\ub97c \ud3ec\ud568\uc2dc\ud0a4\ub294 \uac83\uc740 \ubb34\ub840\ud569\ub2c8\ub2e4.\n \uadc0\uc5ec\uc6b4 \ucf58\ud150\uce20\ub85c \ub2e4\ub978\uc774\ub97c \ud574\uce58\uc9c0 \ub9c8\uc2ed\uc2dc\uc624.\n\n\uadf8\ub7ec\ub098 \uc774\uc5d0\ub9cc \uad6d\ud55c\ub418\ub294\uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4.\n\ubb34\uc5c7\ubcf4\ub2e4\ub3c4, \uadc0\uc5ec\uc6b4 \ud0c0\uc778\uc744 \uc0c1\ucc98\uc8fc\uc9c0 \ub9c8\uc138\uc694.\n\n2. \ub2f9\uc2e0\uc774 \uc774 \ucc3d\uc791\ubb3c\uc744 \uc0ac\uc6a9\ud574 \ub9ce\uc740 \uc774\ub4dd\uc744 \ubcf8\n\uacbd\uc6b0, \uadc0\uc5ec\uc6b4 \ucc3d\uc791\uc790\uc5d0\uac8c \uc0ac\ub791\uc744 \ubc30\ud478\uc138\uc694.\n\uc778\uac04\uc801\uc778 \uc0ac\ub78c\uc740 \uadc0\uc5ec\uc6b4 \uc0ac\ub78c\ub4e4\uc744 \uc678\uba74\ud558\uc9c0\n\uc54a\uc2b5\ub2c8\ub2e4. \ub2f9\uc2e0\uc758 \ucee4\ud53c \ud55c\uc794\uc744 \ub098\ub220\uc8fc\uc138\uc694.\n\n3. \uc774 \ucc3d\uc791\ubb3c\uc740 \uc5b4\ub5a0\ud55c \ubcf4\uc99d \uc5c6\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.\n\uc774 \ucc3d\uc791\ubb3c\uc744 \uc0ac\uc6a9\ud558\ub2e4, \ucc3d\uc791\uc790\uc758 \uadc0\uc5ec\uc6b4\n\uc2e4\uc218\ub85c \uc778\ud574 \ubb34\uc5b8\uac00 \uc798\ubabb\ub418\uc5c8\ub2e4\uba74, \ubb38\uc81c\ub97c \uc9c1\uc811\n\ud574\uacb0\ud558\uc138\uc694. \ubb34\ub840\ud558\uc9c0 \uc54a\uc740 \uc0ac\ub78c\uc740 \uc801\uc5b4\ub3c4\n\uadc0\uc5ec\uc6b4 \ud0c0\uc778\ub4e4\uc744 \ube44\ub09c\ud558\uac70\ub098 \ubaa8\uc695\ud558\uc9c0\ub294 \uc54a\uc73c\uba70\n\uc218\uc815\ubcf8\uc744 \uc81c\ucd9c\ud558\uac70\ub098 \ubc84\uadf8\ub9ac\ud3ec\ud2b8\ub97c \uc81c\ucd9c \ud560\n\uac83\uc785\ub2c8\ub2e4.\n\n4. \ub2f9\uc2e0\uc774 \uc774 \uadc0\uc5ec\uc6b4 \ucc3d\uc791\ubb3c\uc744 \ud65c\uc6a9\ud574 \ub2e4\ub978 \ucc3d\uc791\ubb3c\n\uc744 \ub9cc\ub4e4\uace0 \uc2f6\uc740 \uacbd\uc6b0 \uc801\uc5b4\ub3c4 \uc0ac\uc6a9\ud588\ub2e4\ub294 \uace0\uc9c0\ub294\n\ub0a8\uaca8\uc8fc\uc138\uc694. \uadc0\uc5ec\uc6b4 \ucc3d\uc791\uc790\ub4e4\uc740 \uc790\uc2e0\uc758 \ucc3d\uc791\ubb3c\uc774\n\uc88b\uc740\uacf3\uc5d0 \uc0ac\uc6a9\ub418\uc5c8\uc74c\uc744 \uae30\ubed0\ud560 \uac83\uc785\ub2c8\ub2e4.\n* \uc774\ub294 \uad8c\uace0 \uc0ac\ud56d\uc785\ub2c8\ub2e4. \ud544\uc218\uac00 \uc544\ub2c8\uba70 \ubd88\uac00\ud53c\ud55c\n \uacbd\uc6b0 \ubb34\uc2dc\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n\n5. \ub7ec\uc2dc\uc544 \uad6d\uc801\uc758 \uc774\ub4e4\uc740 \uc774 \ucc3d\uc791\ubb3c\uc744 \uc601\ub9ac \ubaa9\uc801\uc73c\ub85c\n\uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. - \uc6b0\ub9ac\ub294 \uc804\uc7c1\uc790\uae08\uc744\n\uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uac19\uc740 \uc774\uc720\ub85c\uc368, \uc804\uc7c1\uc774 \uc9c0\uc6d0\ub420 \uc218 \uc788\ub294 \uacf3\uc5d0\uc11c\uc758\n\uc774 \ucc3d\uc791\ubb3c \uc0ac\uc6a9\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n Permissions Limitations Conditions \u2705 Commercial use \u274e Warranty \u2753 License and copyright notice (Recommendation) \u2705 Distribution \u274e Being Rude \u2705 Modification \u274e Russian, And supporting war \u2705 Private use \u274e Copy without any modification QwreeyKawaii license v1.3\n\nCopyright 2023. Qwreey [qwreey75@gmail.com]\n\nThis license is based on DBAD license.\nEveryone is permitted to copy and distribute\nverbatim or modified copies of this license\ndocument.\n\nTERMS, AND CONDITIONS FOR COPYING,\nDISTRIBUTION, AND MODIFICATION\n\n1. You can do anything with this original work,\nbut don't be rude\n\nIn general, being rude includes below\n\nFirst. Do not copy these cute works without\n any modification. changing the name\n only is outright copyright infringement\nSecond. Do not add some harmful or NSFW content.\n It's very rude and may harm others\n\nBeing rude is not limited to these instances.\nAbove all, don't hurt cute people\n\n2. If you get any benefit or profit from these cute\nworks, Share the love. A polite person may share\nthe love with cute people.\n3. These cute works are provided with no warranty.\nIf something goes wrong due to the creator's cute\nmistake, Fix it yourself. A polite person may\nsubmit the fix or bug report.\n4. If you create something with these works, Leave\nthe original creator's name in your work.\nthe cute creator will be happy if their works are\nused for good.\n* This is a recommendation. Not required.\n5. Russian nationality can not use this creation for\ncommercial purposes. \u2014 We do not support the war.\nSame reason, This creation cannot be used where\nit can support the war.\n"},{"location":"todo/","title":"\ud560\uc77c","text":""},{"location":"todo/#_2","title":"\uc9c4\ud589\uc911\uc774\uac70\ub098 \uac80\ud1a0\uc911","text":""},{"location":"todo/#easing","title":"Easing \ubb38\uc11c","text":"Easing \ubb38\uc11c\uc5d0 Out In Inout \ube44\uad50 \uc601\uc0c1 \ub9cc\ub4e4\uae30
"},{"location":"todo/#spring","title":"Spring","text":"Spring \ubb3c\ub9ac \uacc4\uc0b0\uc744 UI \uc560\ub2c8\uba54\uc774\uc158\uc5d0 \uc801\uc6a9\ud569\ub2c8\ub2e4 WIP. \uc544\uc9c1 \uc9c4\ud589\uc911\uc778 \ud504\ub85c\uc81d\ud2b8.
"},{"location":"todo/#quad-debuger","title":"Quad Debuger","text":"Register \uc758 \uc0c1\ud0dc\uc640 Store \uc758 \uac12, Class \uc758 \ub3d9\uc791 \uc5ec\ubd80 \ub4f1 Quad \uc758 \uc5ec\ub7ec \uc790\uc6d0\uc744 \uae34\ubc00\ud558\uac8c \ub514\ubc84\uadf8\ud569\ub2c8\ub2e4. WIP. \uc544\uc9c1 \uc9c4\ud589\uc911\uc778 \ud504\ub85c\uc81d\ud2b8.
"},{"location":"todo/#selection","title":"Selection","text":"Tab \ud0a4\ub4f1\uc73c\ub85c \ubc84\ud2bc \uc120\ud0dd\ud558\uae30 (... \uac00\ub2a5\ud568?) WIP. \uac80\ud1a0\uc911\uc778 \ud504\ub85c\uc81d\ud2b8.
"},{"location":"todo/#_3","title":"\uba3c \ubbf8\ub798\uc5d0 . . .","text":"\ud639\uc740 \uc774\ub8e8\uc6cc\uc9c0\uc9c0 \uc54a\ub294
"},{"location":"todo/#quad-component-studio","title":"Quad Component Studio","text":"\ub208\uc5d0 \ubcf4\uc774\ub294 \uc6cc\uc9c0\uc6cc\uadf8\uc2dd \ud3b8\uc9d1\uae30\ub97c \uc774\uc6a9\ud574 Quad Class \ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.
"},{"location":"todo/#quad-webrender","title":"Quad WebRender","text":"HTML, CSS, JS \ub85c\uc368 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ubcc0\ud615\ud574 \uc2a4\ud29c\ub514\uc624 \uc5c6\uc774 \uac1c\ubc1c\ud558\ub294 \uac00\ubcbc\uc6b4 \uac1c\ubc1c\ubc95\uc785\ub2c8\ub2e4.
"},{"location":"todo/#quad-prerender","title":"Quad Prerender","text":"\ubbf8\ub9ac \ub80c\ub354\ub9c1\ub41c rbxm \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. lua \uc2a4\ud06c\ub9bd\ud2b8\ub4e4\uc774 \ub9e4\ud551\ub418\uc5b4 \uc77c\ubc18\uc801\uc774\uac8c \ub3cc\uc544\uac11\ub2c8\ub2e4.
"},{"location":"include/bindable/","title":"Bindable","text":":Fire(...any)
\ub4f1\ub85d\ub41c \uc5f0\uacb0\ub4e4\uc744 \uc2e4\ud589\ud558\uace0, Wait \uc744 \ud480\uc5b4\uc90d\ub2c8\ub2e4.
:Wait()->(...any)
Fire \uac00 \ud638\ucd9c\ub420 \ub54c \uae4c\uc9c0 \uae30\ub2e4\ub9bd\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ubc18\ud658\ub429\ub2c8\ub2e4.
:Connect((...any)->())->Connection
Fire \uac00 \ud638\ucd9c \ub420 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ud638\ucd9c \uc778\uc790\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc5f0\uacb0\uc744 \ub04a\uc744 \uc218 \uc788\ub3c4\ub85d Connection \uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Once((...any)->())->Connection
Connect \uc640 \uc720\uc0ac\ud558\uc9c0\ub9cc, Fire \uac00 \ud55c\ubc88 \ud638\ucd9c\ub41c \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9d1\ub2c8\ub2e4/
:CheckConnected(func)->boolean
\ud568\uc218\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:DisconnectAll()
\ubaa8\ub4e0 \uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Wait \uc73c\ub85c \uae30\ub2e4\ub9ac\uace0 \uc788\ub294 \uacf3\uc5d0\ub294 nil \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
:Destroy()
:DisconnectAll() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
:Disconnect()
\uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Fire \uac00 \ud638\ucd9c\ub418\ub354\ub77c\ub3c4 Connect \ud639\uc740 Once \uc5d0 \uc0ac\uc6a9\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
:Destroy()
:Disconnect() \uc758 \ubcc4\uce6d\uc785\ub2c8\ub2e4.
Out \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.
In \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.
InOut \uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.
:Add(connection:Connection|RBXScriptConnection)
connection\uc744 \ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub098\uc911\uc5d0 :Disconnect\ub97c \ud638\ucd9c\ud558\uba74 \ucd94\uac00\ub41c \uc5f0\uacb0\uc774 \ud30c\uae30\ub429\ub2c8\ub2e4.
:Disconnect()
\ucd94\uac00\ub41c \ubaa8\ub4e0 \uc5f0\uacb0\uc5d0 Disconnect() \ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uc774 \ud638\ucd9c \ud6c4\uc5d0 \ucd94\uac00\ub41c \uc5f0\uacb0\uc740 \ubaa8\ub450 \uc0ac\ub77c\uc9c0\uba70. \uc774 \uc694\uccad \ud6c4\uc5d0\ub3c4 \ub2e4\uc2dc :Add \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Disconnecter \ub97c \uc644\uc804\ud788 \uc0ac\uc6a9\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\ub824\uba74 :Destroy \ub97c \ud638\ucd9c\ud558\uc138\uc694
:Destroy()
:Disconnect() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
\ubaa8\ub4e0 Easing \uc740 \uc5ec\uae30\uc5d0\uc11c \uc9c1\uc811\uc801\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Linear
\uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615 \ud568\uc218\uc785\ub2c8\ub2e4 i=x, x=0 to 1
Quint
5 \uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Quart \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^5) i=1-(1-x)^5, x=0 to 1
Quart
\ub124\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Cubic \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^4) i=1-(1-x)^4, x=0 to 1
Cubic
\uc138\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Quad \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^3) i=1-(1-x)^3, x=0 to 1
Quad
\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. (^2) i=1-(1-x)^2, x=0 to 1
Expo
\uc9c0\uc218\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. \ub9e4\uc6b0 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4. i=1-2^(-10*x), x=0 to 1
Sin
\uc0ac\uc778 \ud30c\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. i=sin(x*pi/2), x=0 to 1
Circle
\uc0ac\ubd84\uc6d0 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. i=sqrt(1-(1-x)^2), x=0 to 1
Back
\uc2dc\uc791\uc2dc \ub4a4\ub85c \uc774\ub3d9\uc774 \uc788\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
Elastic
\ud0c4\uc131\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
Bounce
\ud280\uc5b4\uc624\ub984\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
TODO: \uc560\ub2c8\uba54\uc774\uc158 \ubbf8\ub9ac\ubcf4\uae30 \uc601\uc0c1 \ucd94\uac00
"},{"location":"include/events/","title":"Events","text":"Event(name:string)
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 \uc774\ubca4\ud2b8\ub4e4\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4, MouseEnter, MouseLeave, MouseButton1Down, MouseButton1Up \ub4f1\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4 \uae30\ubcf8\uc801\uc73c\ub85c \ub85c\ube14\ub85d\uc2a4\uc758 \uae30\ubcf8 \uc774\ubca4\ud2b8\ub4e4\uacfc \ub2e4\ub974\uac8c, \uccab\ubc88\uc9f8 \uc778\uc790\ub85c self \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Frame {\n [Event \"MouseEnter\"] = function (self)\n print(self.Name .. \"\uc5d0 \ub9c8\uc6b0\uc2a4\uac00 \uc62c\ub77c\uc654\uc2b5\ub2c8\ub2e4\")\n end;\n}\n local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal TextButton = Class \"TextButton\"\n\nTextButton \"mainButton\" {\n Size = UDim2.fromOffset(200,200);\n [Event \"MouseEnter\"] = function (self)\n print(\"\ubc84\ud2bc\uc774 \ud074\ub9ad\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n end;\n}\nMount(ScreenGUI, Store.GetObject(\"mainButton\"))\n Event.Created
\uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub418\uc5c8\uc744 \ub54c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c self \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nFrame {\n [Event.Created] = function (self)\n print(self.Name .. \"\uc774 \uc0dd\uc131\ub418\uc5c8\uc5b4\uc694\")\n end;\n}\n \uc8fc\uc758 Event.Created \uac00 \uc2e4\ud589\ub420 \ub54c\ub294 Parent \uac12\uc774 \uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. self.Parent \ub294 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. Class.Extend \uc5d0\uc11c\ub294 AfterRender \ub97c \uc774\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.
Event.CreatedAsync
Event.Created \uc640 \ube44\uc2b7\ud558\uc9c0\ub9cc, \ucf54\ub8e8\ud2f4 \uc548\uc5d0\uc11c \uc791\ub3d9\ud569\ub2c8\ub2e4. objectList:EachAsync() \ucc98\ub7fc \ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nFrame {\n Frame {\n Name = \"A\";\n [Event.CreatedAsync] = function (self)\n -- \uc774 \ud568\uc218\uac00 \ub05d\ub098\uc9c0 \uc54a\ub354\ub77c\ub3c4 \ub2e4\uc74c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub420 \uc218 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4\n task.wait(5)\n end;\n };\n Frame {\n Name = \"B\";\n [Event.Created] = function (self)\n print(self.Name .. \"\uac00 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n end;\n };\n}\n \uc8fc\uc758 Event.CreatedAsync \uac00 \uc2e4\ud589\ub420 \ub54c\ub294 Parent \uac12\uc774 \uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. self.Parent \ub294 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4.
Event.Prop(propertyName:string)
\ud504\ub85c\ud37c\ud2f0 \uac12\uc774 \ubcc0\uacbd\ub428\uc744 \uc5f0\uacb0\ud569\ub2c8\ub2e4.
-- \uc6a9\ubc95\nTextBox {\n Text = \"\uc544\ubb34\uac70\ub098 \uc785\ub825\ud558\uc138\uc694\";\n [Event.Prop \"Text\"] = function (self,text)\n -- \ud3b8\uc758\uc0c1\uc758 \uc774\uc720\ub85c \ubcc0\uacbd\ub41c \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4\n print(text)\n end;\n}\n"},{"location":"include/extend/","title":"Extend","text":"self(name:string)->linker
Extend \uba54\uc18c\ub4dc \uc804\uc5ed\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4. \ub9c1\ucee4\ub97c \ub9cc\ub4e4\uba70, PropertyChangedSignal \ub97c \uc774\uc5b4\uc8fc\uac70\ub098, self \uc5d0 \uc6d0\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 Render \ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694.
Overwite REQUIRED :Render(props:valueStore)
\ud654\uba74\uc5d0 \uadf8\ub824\uc9c0\ub294 UI \ub97c \ub9cc\ub4e4\uc5b4\uc9c0\uac8c \ud558\ub294 \ud568\uc218\uc785\ub2c8\ub2e4. Extend \uac00 \uadf8\ub824\uc9c0\ub824\uba74 \ubb34\uc870\uac74 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4. \uc774 \uc624\ube0c\uc81d\ud2b8\ub97c \ub9cc\ub4dc\ub294\ub370 \ub4e4\uc5b4\uac04 \ud504\ub85c\ud37c\ud2f0 \ubaa9\ub85d\uc744 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc90d\ub2c8\ub2e4. \ub808\uc9c0\uc2a4\ud130 \ubb38\ubc95\uc774 \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Event = Quad.Event\nlocal Mount = Quad.Mount\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n [Event \"MouseButton1Click\"] = function (self,x,y)\n print((\"\ubc84\ud2bc\uc774 %d,%d \uc5d0\uc11c \ub20c\ub838\uc2b5\ub2c8\ub2e4\"):format(x,y))\n end;\n Size = props \"Size\";\n Text = props \"Text\"; -- \ub808\uc9c0\uc2a4\ud130\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4\n }\nend\n\nlocal myImported = Class(myClass)\nmyImported.Size = UDim2.fromOffset(200,200)\n\nlocal test = myImported {\n Text = \"wow\"\n}\nMount(ScreenGUI, test)\n\n-- \ud14d\uc2a4\ud2b8\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n test.Text = \"w\"..(\"o\"):rep(#test.Text-1)..\"w\"\nend\n Overwite Option :Init(props:valueStore)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub418\uae30 \uc804\uc5d0 \ubbf8\ub9ac props \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Init(props)\n -- Size \uac12\uc774 \uc5c6\ub2e4\uba74 \uae30\ubcf8\uac12\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.\n props:Default(\"Size\", UDim2.fromOffset(100,100))\n\n -- \uc55e\uc5d0 _ \ub97c \ubd87\uc5ec \ub0b4\ubd80 \ubcc0\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.\n -- \uc5b4\ub514\uc5d0\uc11c\ub098 \uc4f0\uc77c \uc218 \uc788\uc73c\uba70 register \uc5d0 \uc601\ud5a5\uc8fc\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n self._asdf = true\nend\nfunction myClass:Render(props)\n return TextButton {\n props \"Size\"\n }\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported() -- \uc635\uc158 \uc5c6\uc74c\nprint(myButton.Size)\n Overwite Option :AfterRender(object:any)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub41c \ud6c4 \ud560 \uc791\uc5c5\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c Render \uac00 \ubc18\ud658\ud55c \uac12\uc774 \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\"; -- \uc790\uae30 \uc790\uc2e0\uc5d0 \uc774 \ubc84\ud2bc\uc744 \ub123\uc2b5\ub2c8\ub2e4\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button == object) -- true\nend\n\nlocal myImported = Class(myClass)\nmyImported() -- \uc635\uc158 \uc5c6\uc74c\n Overwite Option :Update()
:Render \uc640 :AfterRender \ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uace0, \uc774\uc804\uc5d0 \uc788\ub358 \uc790\uc2dd\ub4e4\uc744 \ub2e4\uc2dc \ub04c\uc5b4\uc635\ub2c8\ub2e4. \uc774\uc804\uc758 Render \uacb0\uacfc\ub294 \uc81c\uac70\ub429\ub2c8\ub2e4
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:Update() -- update\nmyButton:Update() -- update\nmyButton:Update() -- update\n Overwite Option .Getter.<PropertyName>(self)
\uac12\uc744 \uc5bb\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {}\nend\n-- \uac12\uc744 \uc77d\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Getter.Test(self)\n return \"Hello World\"\nend\n\nlocal myImported = Class(myClass)\nprint(myImported().Test)\n Overwite Option .Setter.<PropertyName>(self,newValue:any)
\uac12\uc744 \uc124\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\";\n Text = \"wow\";\n }\nend\n-- \uac12\uc744 \uc9c0\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Setter.Test(self,newValue)\n self._button.Text = newValue\nend\nfunction myClass.Getter.Test(self)\n return self._button.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nprint(myButton.Test)\nmyButton.Test = \"Hello World\"\nprint(myButton.Test)\n Overwite Option .UpdateTriggers.<PropertyName> = boolean?
\ud574\ub2f9 \uac12\uc744 \ubcc0\uacbd\ud558\uba74 Update \uac00 \uc218\ud589\ub420\uc9c0 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n-- \uac12 \ubcc0\uacbd\uc2dc \uc5c5\ub370\uc774\ud2b8 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4\nmyClass.UpdateTriggers.Test = true\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\n Overwite Option :Unload(object)
:Destroy \uac00 \ud638\ucd9c\ub420 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub530\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4 \uc5f0\uacb0\uc744 \ubaa8\ub450 \ub04a\uace0 \uc5c6\uc5d0\uc8fc\uc9c0\ub9cc \ud544\uc694\ud55c \uacbd\uc6b0 \uc9c1\uc811 \uc5c6\uc5d0\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4
:GetPropertyChangedSignal(propertyName:string)->Bindable
\uac12 \ubcc0\uacbd\uc744 \uc5f0\uacb0\ud560 \uc218 \uc788\ub294 Bindable\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. :EmitPropertyChangedSignal \uc73c\ub85c \uc774 \uc2dc\uadf8\ub110\uc744 \uc791\ub3d9\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud3b8\uc758\uc0c1 \uc774 \uc2dc\uadf8\ub110\uc774 \uc791\ub3d9\ud560 \ub54c, \uc0c8\ub85c\uc6b4 \uac12\uc774 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
:EmitPropertyChangedSignal(propertyName:string,changedValue:any?)
\ud504\ub85c\ud37c\ud2f0 \ubcc0\uacbd\uc2dc :GetPropertyChangedSignal \uc5d0 \ub4f1\ub85d\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \uc774 \ud568\uc218\ub97c \ud638\ucd9c\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c self.a = 1 \uacfc \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \ubc14\ub85c \uac12\uc744 \uc124\uc815\ud558\ub294 \uacbd\uc6b0 \uc790\ub3d9\uc801\uc73c\ub85c \uc774 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0\ub9cc, \ud14d\uc2a4\ud2b8 \ubc15\uc2a4\uc758 \ud14d\uc2a4\ud2b8 \ucc98\ub7fc \uac1d\uccb4\uc758 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc5f0\ub3d9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. changedValue \ub294 \uc120\ud0dd\uc0ac\ud56d\uc774\uba70, \uc8fc\uc5b4\uc9c0\uc9c0 \uc54a\uc73c\uba74 self[propertyName]\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Evnet = Quad.Event\n\nlocal TextBox = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_box\";\n Text = \"test\";\n Size = UDim2.fromOffset(200,200);\n [Evnet.Prop \"Text\"] = function (this,newValue)\n self:EmitPropertyChangedSignal(\"Text\",newValue)\n end;\n -- [Evnet.Prop \"Text\"] = self \"Text\" \uc640 \ub3d9\uc77c\ud569\ub2c8\ub2e4.\n -- self(name:string) \ubb38\ubc95\uc73c\ub85c \ubcc0\uacbd \uc774\ubca4\ud2b8 \uc5ed\uc2dc \ub9c1\ud06c\n -- \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n }\nend\nfunction myClass.Getter.Text(self)\n return self._box.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:GetPropertyChangedSignal(\"Text\"):Connect(function()\n print(myButton.Text)\nend)\nMount(ScreenGUI, myButton)\n"},{"location":"include/locales/","title":"Locales","text":"Default (default) English (en_us) Spanish (es_es) French (fr_fr) Indonesian (id_id) Italian (it_it) Japanese (ja_jp) Korean (ko_kr) Russian (ru_ru) Thai (th_th) Turkish (tr_tr) Vietnamese (vi_vn) Portuguese (pt_br) German (de_de) ChineseSimplified (zh_cn) ChineseTraditional (zh_tw) Bulgarian (bg_bg) Bengali (bn_bd) Czech (cs_cz) Danish (da_dk) Greek (el_gr) Estonian (et_ee) Finnish (fi_fi) Hindi (hi_in) Croatian (hr_hr) Hungarian (hu_hu) Georgian (ka_ge) Kazakh (kk_kz) Khmer (km_kh) Lithuanian (lt_lt) Latvian (lv_lv) Malay (ms_my) Burmese (my_mm) Bokmal (nb_no) Dutch (nl_nl) Filipino (fil_ph) Polish (pl_pl) Romanian (ro_ro) Ukrainian (uk_ua) Sinhala (si_lk) Slovak (sk_sk) Slovenian (sl_sl) Albanian (sq_al) Bosnian (bs_ba) Serbian (sr_rs) Swedish (sv_se) Arabic (ar_001)
"},{"location":"include/mounts/","title":"Mounts","text":":Unmount()
\uc774\ub807\uac8c \ud558\uba74 \ub9c8\uc6b4\ud2b8\ub41c Instance \ub97c \uc9c0\uc6cc\ubc84\ub9bd\ub2c8\ub2e4. Quad \ub294 \uc548\uc804\ud55c \uba54\ubaa8\ub9ac \uad00\ub9ac\ub97c \uc704\ud574 gc \uc758 \uae30\ub2a5\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c, gc \uc2dc\uac04\ucc28\ub85c \uc778\ud574 Store.GetObject \uc5d0\uc11c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0ac\ub77c\uc9c0\ub294\ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui,mainFrame)\n\nlocal childFrame = Frame {}\nlocal childFrameMount = Mount(mainFrame,childFrame)\nchildFrameMount:Unmount()\n-- childFrame \uc740 \ub2e8\uc21c\ud788 .Parent = nil \ub418\ub294 \uac83\uc744 \ub118\uc5b4 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uc0ac\ub77c\uc9d1\ub2c8\ub2e4\n-- \uc989, Destroy() \uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4\n :Add(item:any)
Mount \uc5d0 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc124\uc815\ud55c to \uac12\uc744 \ub530\ub77c \ubd80\ubaa8\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4.
\uc774 \ub3d9\uc791\uc740 \ub9ac\uc2a4\ud2b8\ub97c \ub9cc\ub4e4 \ub54c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc\ub85c\ub4dc \ub3d9\uc791\uc2dc \uc9c1\uc811 \uc81c\uac70\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui, mainFrame)\n\nlocal lastListMount = Mount(mainFrame)\nlocal function refreshList()\n lastListMount:Unmount() -- \uc774\uc804 children \uc744 \uc54c\uc544\uc11c \uc81c\uac70\ud569\ub2c8\ub2e4\n for i = 1,10 do\n lastListMount:Add(Frame { Name = tostring(i) })\n end\nend\n\ntask.spawn(function()\n while true do\n refreshList()\n task.wait(2)\n end\nend)\n \ub2e4\uc74c\uacfc \uac19\uc774 \uc774\uc804 children \uc744 \uac04\uc811\uc801\uc73c\ub85c \uc81c\uac70\ud558\uace0 \uc0c8\ub85c\uc6b4 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e8 ScrollFrame \uc758 \uacbd\uc6b0 CanvasPosition\uc774 \ucd08\uae30\ud654 \ub418\uc5b4\ubc84\ub9ac\ubbc0\ub85c \uc790\uc2dd\ub4e4\uc744 :Unmount() \ud558\uae30 \uc804\uc5d0 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uace0 \ub2e4\uc2dc \ubd88\ub7ec\uc640\uc57c \ud569\ub2c8\ub2e4
:Each((item:any, index:number)->())
\uc77c\ubc18\uc801\uc778 \ubc18\ubcf5\uc785\ub2c8\ub2e4. for \ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uacfc \ud6a8\uacfc\uac00 \uac19\uc73c\ub098 \ud568\uc218\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4
:EachAsync((item:any, index:number)->())
\ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uace0 \ubc14\ub85c\ubc14\ub85c \ub2e4\uc74c \uc544\uc774\ud15c\uc73c\ub85c \ub118\uc5b4\uac11\ub2c8\ub2e4. \ucf54\ub8e8\ud2f4\uc774 \uc774\uc6a9\ub429\ub2c8\ub2e4. wrap() \ucf54\ub8e8\ud2f4\uc744 \ubaa8\ub974\uac70\ub098, \ud544\uc694\uc131\uc774 \uc5c6\ub294\uacbd\uc6b0 \uc77c\ubc18\uc801\uc73c\ub85c :Each \ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub429\ub2c8\ub2e4
:IsEmpty()
\uc774 ObjectList \uac00 \ube44\uc5b4\uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:Remove(indexOrItem:number|any)
objectList \uc5d0\uc11c \ud574\ub2f9\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. , & \ub97c \uc0ac\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
"},{"location":"include/quadProperty/","title":"quadProperty","text":"RoundSize:number?
ImageLabel, ImageButton \uc5d0\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc18d\uc131\uc785\ub2c8\ub2e4. \uc6d0\ud615 \uc774\ubbf8\uc9c0\uc5d0 Slice\ub97c \uc774\uc6a9\ud574 \ub465\uadfc \ud504\ub808\uc784\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c UICorner\ubcf4\ub2e4 \ubd80\ub4dc\ub7ec\uc6b4 \ucf54\ub108\ud6a8\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.
Corner:number?
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 UI\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. UICorner\ub97c \uc774\uc6a9\ud574 \ubaa8\uc11c\ub9ac \ubd80\ubd84\uc744 \ub465\uae00\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
PaddingAll:UDim?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc0c1\ud558\uc88c\uc6b0 \ubaa8\ub450 \uac19\uc740 \uac12\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. PaddingAllOffset \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
PaddingAllOffset:number?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. PaddingAll\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc791\ub3d9\ud558\ub098, Offset\uac12\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. PaddingAll \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Scale:number?
UIScale\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. UIScale.Scale \uacfc \uac19\uc740 \ud6a8\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4
register \ud2b9\uc218 \uba54\uc18c\ub4dc\uac00 \uc801\uc6a9\ub418\ub294 \uc21c\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
:Add(value:any)->register
\uac12\uc5d0 \ub354\ud558\uae30\ub97c \ucde8\ud569\ub2c8\ub2e4. \uc74c\uc218\ud615\ud0dc\uac00 \uc81c\uacf5\ub418\ub294 \uacbd\uc6b0 \ube7c\uae30 \ucc98\ub7fc \uc791\ub3d9\ud569\ub2c8\ub2e4. number, Udim, UDim2, Color3, Vector2 \ub4f1 \ub354\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0\uac83\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.pos = UDim2.fromOffset(100,0)\n\nFrame \"mainFrame\" {\n Position = myStore \"pos\":Add(UDim2.fromOffset(0,100));\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nwhile true do\n myStore.pos = myStore.pos + UDim2.fromOffset(10,0)\n task.wait(2)\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:With((store:valueStore, newValue:any, key:string)->())->register
\ud568\uc218 \ub610\ub294 \ud14c\uc774\ube14\uc5d0\uc11c \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. Add \ubcf4\ub2e4 \ub098\uc911\uc5d0 \uc218\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uac12\uc5d0\ub294 \ud3b8\uc758\uc0c1 \uc2a4\ud1a0\uc5b4 \uac12\uc774 \uc81c\uacf5\ub418\uba70, \uc0c8\ub85c\uc6b4 \uac12\uacfc, \ubc14\ub010 \uac12\uc5d0 \ub300\ud55c \ud0a4\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4
\uac04\ub7b5\ud55c \uc6a9\ubc95\uc608\uc81c - \ud568\uc218\uc608\uc81c - \ud14c\uc774\ube14myStore \"size\":With(function (_,value)\n return value * 2\nend)\n width \uac12\uc5d0 \ub9de\ucdb0 \uc790\ub3d9\uc73c\ub85c UI \uac00 \uc5c5\ub370\uc774\ud2b8\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.topbarSize = 60\nmyStore.width = 200\n\n-- \ub808\uc9c0\uc2a4\ud130\ub97c \ubcc0\uc218\ub85c \ub450\uace0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4\nlocal listItemSize = myStore \"width\":With(function()\n return UDim2.fromOffset(myStore.width,60)\nend)\n\nFrame \"mainFrame\" {\n Class \"UIListLayout\" { SortOrder = Enum.SortOrder.LayoutOrder };\n\n -- \uc0ac\uc774\uc988\uac00 width \uc5d0 \ub9de\uac8c \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4\n Size = myStore \"width\":With(function ()\n return UDim.fromOffset(store.width,400)\n end);\n\n Frame \"Topbar\" {\n LayoutOrder = 1;\n BackgroundColor3 = Color3.fromRGB(255,0,0);\n -- \uc774\ub807\uac8c \uc5ec\ub7ec \uac12\uc744 \ubb36\uc5b4\uc11c \ub450 \uac12\uc774 \ubcc0\uacbd\ub428, \ud639\uc740 \uadf8\uc774\uc0c1\uc744\n -- \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n Size = myStore \"topbarSize,width\":With(function()\n return UDim2.fromOffset(myStore.width,myStore.topbarSize)\n end);\n }\n Frame \"ListItem\" {\n LayoutOrder = 2;\n BackgroundColor3 = Color3.fromRGB(0,255,0);\n Size = listItemSize;\n };\n Frame \"ListItem\" {\n LayoutOrder = 3;\n BackgroundColor3 = Color3.fromRGB(0,0,255);\n Size = listItemSize;\n };\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- width \uac12\uc744 \ubcc0\uacbd\ud574\ubcf4\uc138\uc694\nwhile true do\n myStore.width = myStore.width + 10\n task.wait(1)\nend\n colors \ud14c\uc774\ube14 \uc548\uc5d0 \uc788\ub294 \uc0c9\uae54\ub4e4\uc744 \ub3cc\uc544\uac00\uba70 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nlocal colors = {\n Color3.fromRGB(255,255,255);\n Color3.fromRGB(255,255,0);\n Color3.fromRGB(0,255,255);\n Color3.fromRGB(255,0,255);\n Color3.fromRGB(255,0,0);\n Color3.fromRGB(0,255,0);\n Color3.fromRGB(0,0,255);\n}\nmyStore.color = 1\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n -- colors \uc5d0\uc11c \uc778\ub371\uc2f1\ud574 \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4\n BackgroundColor3 = myStore \"color\":With(colors);\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- \uc778\ub371\uc2a4\ub97c \uc21c\ud68c\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n myStore.color = (i-1)%(#colors)+2\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:Tween(options:TweenOptions)->register
\ud2b8\uc708\uc744 \uc774\uc6a9\ud574 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4(\ucc98\uc74c \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc74c) \uc635\uc158\uc740 Tween \ubb38\uc11c\uc5d0 \ub098\uc640\uc788\ub294 \uc635\uc158\uacfc \uac19\uc2b5\ub2c8\ub2e4.
\uac04\ub7b5\ud55c \uc6a9\ubc95\uc608\uc81c - \ud55c\uaebc\ubc88\uc5d0 \uc774\ub3d9-- Tween \uc635\uc158\uc744 \ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nmyStore \"size\":Tween{ Time = 2 }\n \ud504\ub808\uc784\uc744 \ud55c\uaebc\ubc88\uc5d0 \uc6c0\uc9c1\uc785\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Style = Quad.Style\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\nmyStore.pos = UDim2.fromOffset(50,0)\nStyle \"TweenFrame\" {\n Size = UDim2.fromOffset(50,50);\n BackgroundColor3 = Color3.fromRGB(255,100,255);\n}\n\nFrame \"mainFrame\" {\n BackgroundColor3 = Color3.fromRGB(255,255,255);\n Size = UDim2.fromOffset(500,500);\n Frame \"TweenFrame\" {\n Position = myStore \"pos\":Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,100))\n :Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,200))\n :Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,300))\n :Tween{Time = 2};\n }\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nlocal on = false\nwhile true do\n on = not on\n myStore.pos = on and UDim2.fromOffset(400,0) or UDim2.fromOffset(50,0)\n task.wait(1.5) -- \ud2b8\uc708\uc740 \ub36e\uc5b4 \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \ub530\ub77c\uc11c 2 \ucd08\uc778 \uae38\uc774\ubcf4\ub2e4 \ub354 \ube68\ub9ac \ubc14\uafd4\ub3c4 \uc624\ub958\uac00 \uc77c\uc5b4\ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:Default(value:any)->register
\uae30\ubcf8\uac12\uc744 \uc815\ud569\ub2c8\ub2e4. \ub9cc\uc57d \uac12\uc774 nil \uc778 \uacbd\uc6b0 \uc774 \uac12\uc744 \uc0ac\uc6a9\ud558\uac8c \ub429\ub2c8\ub2e4. Add \ub098 With \ub4f1 \ub2e4\ub978\uac83\uc5d0 \uc601\ud5a5\ubc1b\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n -- color \uac12\uc774 \uc5c6\uc73c\ubbc0\ub85c Default \uc548\uc758 \uac12\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\n BackgroundColor3 = myStore \"color\"\n :Default(Color3.fromRGB(255,0,0));\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\ntask.wait(5)\nmyStore.color = Color3.fromRGB(0,255,0)\n \uc8fc\uc758 :Register(<INPUT>(store:valueStore, newValue:any, key:string)->())->INPUT
\ub808\uc9c0\uc2a4\ud130\uc5d0 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4. \uac12\uc774 \ubcc0\uacbd\ub418\uba74 \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uac12\uc5d0\ub294 \ud3b8\uc758\uc0c1 \uc2a4\ud1a0\uc5b4 \uac12\uc774 \uc81c\uacf5\ub418\uba70, \uc0c8\ub85c\uc6b4 \uac12\uacfc, \ubc14\ub010 \uac12\uc5d0 \ub300\ud55c \ud0a4\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4
newValue \uc5d0\ub294 :Add, :With, :Tween, :Default \uac00 \ub530\ub85c \uacc4\uc0b0\ub418\uc9c0 \uc54a\uc73c\uba70, \uc124\uc815\ub41c \uac12\uc744 \uc544\ubb34 \uac00\uacf5 \uc5c6\uc774 \uc81c\uacf5\ud569\ub2c8\ub2e4
myStore.test = 1\n-- \ubc18\ud658 \uac12\uc740 \uc785\ub825\uc73c\ub85c \ub123\uc740 \ud568\uc218\uc785\ub2c8\ub2e4. !\uaf2d \uc800\uc7a5\ud574\uc57c\ud569\ub2c8\ub2e4\n-- :Register \ub294 \ud568\uc218\uac00 \uc0ac\ub77c\uc9c0\uc9c0 \uc54a\ub3c4\ub85d \uac12\uc744 \uc720\uc9c0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\n-- \ub9cc\uc57d \ubc84\ub9b4 \uacbd\uc6b0 \uc77c\uc815 \uc2dc\uac04 \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nlocal func = myStore \"test\":Register(function(_,newValue)\n -- \uac12 \ubcc0\uacbd\uc2dc \ucd9c\ub825\ub429\ub2c8\ub2e4\n print(newValue)\nend)\nmyStore.test = 2\n myStore.test1, myStore.test2 \uac00 \ubcc0\ud654\ud558\uba74 print \ud568\uc218\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\n\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.test1 = 1\nmyStore.test2 = \"Hello\"\n\nlocal func = myStore \"test1,test2\":Register(function()\n print(myStore.test1,myStore.test2)\nend)\n\nmyStore.test1 = 2\n \uc8fc\uc758 Register \uc548\uc5d0 \ub4e4\uc5b4\uac04 \ud568\uc218\ub294 GC \uc548\uc815\uc131\uc744 \uc704\ud574\uc11c \uc57d\ud55c \ucc38\uc870\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \ud568\uc218\ub97c \uc800\uc7a5\ud574\uc57c\ud569\ub2c8\ub2e4.
"},{"location":"include/tween/","title":"Tween","text":"Tween.RunTween(Item:any, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)->TweenHandler
\ud2b8\uc708\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \ud2b8\uc708 \uc635\uc158\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 TweenOptions \ubb38\uc11c\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Ended, OnStepped, Setter, Getter \uac12\uc774 \uc124\uc815\ub418\uba74 Option \uc548\uc758 \uac12\ubcf4\ub2e4 \uc6b0\uc120\uc801\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uae30\ub2a5\uc740 TweenOptions\uc758 \ub0b4\uc6a9\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0ac \uc218 \uc788\ub3c4\ub85d TweenHandler \uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. \ub2e4\ub978 \ud2b8\uc708\uc774 \ubcc0\uacbd\uc911\uc778 \uc18d\uc131\uc774 \ub2e4\uc2dc \ud2b8\uc708\ud558\ub3c4\ub85d \ud638\ucd9c\ub418\uba74, \uc774\uc804 \ud2b8\uc708\uc5d0\uc11c \ud574\ub2f9 \uc18d\uc131\uc740 \ud2b8\uc708\uc774 \uc911\ub2e8\ub418\uba70 \uc0c8\ub85c\uc6b4 \ud2b8\uc708\uc73c\ub85c \ub36e\uc5b4\uc4f0\uae30 \ub429\ub2c8\ub2e4.
Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.RunTweens(Items:{[number]:any}, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)
Tween.RunTween \uc640 \uac19\uc73c\ub098 \uc5ec\ub7ec \uc624\ube0c\uc81d\ud2b8\ub97c \ud55c\uaebc\ubc88\uc5d0 \ud2b8\uc708\ud569\ub2c8\ub2e4. \uc544\ubb34\uac83\ub3c4 \ubc18\ud658\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
Tween.RunTween({myFrame1, myFrame2, myFrame3},{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.StopTween(ItemOrHandler:TweenHandler|any)
\ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4. TweenHandler \ub610\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc5b4 \uba48\ucd9c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc73c\uba74 \uadf8 \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc2e4\ud589\uc911\uc778 \ubaa8\ub4e0 \ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4.
local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(Handler)\n local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(myFrame)\n Tween.StopPropertyTween(Item:any, PropertyName:string)
\uc624\ube0c\uc81d\ud2b8\uc5d0 \ud2b9\uc815 \ud504\ub85c\ud37c\ud2f0\uc758 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0b5\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.StopPropertyTween(ItemOrHandler:IsTweening|any)->boolean
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8 \ub610\ub294 TweenHandler \ub85c \ud2b8\uc708\uc774 \uc9c4\ud589\uc911\uc778\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4.
Tween.IsPropertyTweening(Item:any, PropertyName:string)
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8\uc758 \ud504\ub85c\ud37c\ud2f0\uac00 \ud2b8\uc708\uc911\uc774\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \uadf8\ub798\ud504\uc640 \ubbf8\ub9ac\ubcf4\uae30\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \uc790\uc138\ud55c \uc815\ubcf4\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4"},{"location":"include/tweenOptions/","title":"tweenOptions","text":"Option Time:number?
\ud2b8\uc708\uc758 \ucd1d \uae38\uc774\ub97c \uc815\ud569\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 1\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
Option Easing:string|(index:number)->number?
\ud2b8\uc708\uc758 \uac00\uac10\uc18d \uc815\ub3c4\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Easings.Linear\uc640 \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud639\uc740 \ud544\uc694\uc5d0 \ub530\ub77c \ud568\uc218\ub97c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ud568\uc218\ub97c Easing \uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c 1\ucc28 \uc9c4\ud589\ub3c4 (Linear, 0 \uc5d0\uc11c 1 \uc0ac\uc774\uc758 \uac12) \uac12\uc774 \uc8fc\uc5b4\uc9c0\uba70, \uacc4\uc0b0 \uacb0\uacfc\ub85c \uc2e4\uc81c \uc801\uc6a9\ub420 \uc704\uce58\ub97c \ubc18\ud658\ud574\uc57c\ud569\ub2c8\ub2e4. \ubc18\ud658\uac12\uc740 \uc74c\uc218\uc774\uac70\ub098 1 \ubcf4\ub2e4 \ud074 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Exp2\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \ud568\uc218\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option Direction:string?
\ud2b8\uc708\uc774 \uc9c4\ud589\ub418\ub294 \ubc29\ud5a5\uc785\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Directions.Out\uacfc \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Out\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \ubc29\ud5a5\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option CallBack:{[number|\"*\"|string]:(Item:any, Alpha:number, AbsolutePercent:number)->()}?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uc2e4\ud589\uc911\uc778 \ub3c4\uc911\uc5d0 \ud568\uc218\ub97c \uc2e4\ud589\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b8\uc708\uc758 \uc9c4\ud589 \uc815\ub3c4\uc5d0 \ub530\ub77c\uc11c \ud55c\ubc88 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uac70\ub098 \ud2b8\uc708 \uc9c4\ud589\uc911 \uacc4\uc18d\ud574\uc11c \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc778\ub371\uc2a4\uac00 \uc22b\uc790\uc778 \uacbd\uc6b0 \ud574\ub2f9 \uc9c0\uc810\uc744 \ub118\uc744 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc73c\uba70, \"*\" \ub97c \uc778\ub371\uc2a4\ub85c \uc0ac\uc6a9\ud558\uba74 \ubaa8\ub4e0 \ubd80\ubd84\uc5d0\uc11c \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \ud568\uc218\uc5d0\ub294 \ud3b8\uc758\uc0c1 \ud2b8\uc708\uc744 \ud558\uace0\uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \uc704\uce58\uac12, \uc2dc\uac04\ub9cc\uc744 \uace0\ub824\ud55c 1\ucc28 \uc704\uce58\uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Option OnStepped:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 \"*\" \ub97c \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Ended:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 1\uc744 \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Getter:(Item:any, Property:string)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc5bb\uc73c\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Option Getter:(Item:any, Property:string, Value:Lerpable)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc124\uc815\ud558\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984, \uc124\uc815\ud560 \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n"},{"location":"include/typeEasings/","title":"typeEasings","text":"type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n"},{"location":"reference/","title":"Reference","text":"\uc774 \uc139\uc158\uc740 api \ub0b4\uc6a9\uc744 \ub098\uc5f4\ud558\uc9c0\ub9cc, \uae4a\uac8c \uc124\uba85\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud29c\ud1a0\ub9ac\uc5bc \ubb38\uc11c\ub97c \uc77d\uc5b4\ubcf4\ub294\uac83\uc744 \uad8c\uc7a5\ud569\ub2c8\ub2e4.
"},{"location":"reference/event/","title":"Event","text":""},{"location":"reference/extend/","title":"Extend","text":"self(name:string)->linker
Extend \uba54\uc18c\ub4dc \uc804\uc5ed\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4. \ub9c1\ucee4\ub97c \ub9cc\ub4e4\uba70, PropertyChangedSignal \ub97c \uc774\uc5b4\uc8fc\uac70\ub098, self \uc5d0 \uc6d0\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 Render \ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694.
Overwite REQUIRED :Render(props:valueStore)
\ud654\uba74\uc5d0 \uadf8\ub824\uc9c0\ub294 UI \ub97c \ub9cc\ub4e4\uc5b4\uc9c0\uac8c \ud558\ub294 \ud568\uc218\uc785\ub2c8\ub2e4. Extend \uac00 \uadf8\ub824\uc9c0\ub824\uba74 \ubb34\uc870\uac74 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4. \uc774 \uc624\ube0c\uc81d\ud2b8\ub97c \ub9cc\ub4dc\ub294\ub370 \ub4e4\uc5b4\uac04 \ud504\ub85c\ud37c\ud2f0 \ubaa9\ub85d\uc744 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc90d\ub2c8\ub2e4. \ub808\uc9c0\uc2a4\ud130 \ubb38\ubc95\uc774 \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Event = Quad.Event\nlocal Mount = Quad.Mount\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n [Event \"MouseButton1Click\"] = function (self,x,y)\n print((\"\ubc84\ud2bc\uc774 %d,%d \uc5d0\uc11c \ub20c\ub838\uc2b5\ub2c8\ub2e4\"):format(x,y))\n end;\n Size = props \"Size\";\n Text = props \"Text\"; -- \ub808\uc9c0\uc2a4\ud130\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4\n }\nend\n\nlocal myImported = Class(myClass)\nmyImported.Size = UDim2.fromOffset(200,200)\n\nlocal test = myImported {\n Text = \"wow\"\n}\nMount(ScreenGUI, test)\n\n-- \ud14d\uc2a4\ud2b8\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n test.Text = \"w\"..(\"o\"):rep(#test.Text-1)..\"w\"\nend\n Overwite Option :Init(props:valueStore)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub418\uae30 \uc804\uc5d0 \ubbf8\ub9ac props \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Init(props)\n -- Size \uac12\uc774 \uc5c6\ub2e4\uba74 \uae30\ubcf8\uac12\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.\n props:Default(\"Size\", UDim2.fromOffset(100,100))\n\n -- \uc55e\uc5d0 _ \ub97c \ubd87\uc5ec \ub0b4\ubd80 \ubcc0\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.\n -- \uc5b4\ub514\uc5d0\uc11c\ub098 \uc4f0\uc77c \uc218 \uc788\uc73c\uba70 register \uc5d0 \uc601\ud5a5\uc8fc\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n self._asdf = true\nend\nfunction myClass:Render(props)\n return TextButton {\n props \"Size\"\n }\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported() -- \uc635\uc158 \uc5c6\uc74c\nprint(myButton.Size)\n Overwite Option :AfterRender(object:any)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub41c \ud6c4 \ud560 \uc791\uc5c5\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c Render \uac00 \ubc18\ud658\ud55c \uac12\uc774 \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\"; -- \uc790\uae30 \uc790\uc2e0\uc5d0 \uc774 \ubc84\ud2bc\uc744 \ub123\uc2b5\ub2c8\ub2e4\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button == object) -- true\nend\n\nlocal myImported = Class(myClass)\nmyImported() -- \uc635\uc158 \uc5c6\uc74c\n Overwite Option :Update()
:Render \uc640 :AfterRender \ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uace0, \uc774\uc804\uc5d0 \uc788\ub358 \uc790\uc2dd\ub4e4\uc744 \ub2e4\uc2dc \ub04c\uc5b4\uc635\ub2c8\ub2e4. \uc774\uc804\uc758 Render \uacb0\uacfc\ub294 \uc81c\uac70\ub429\ub2c8\ub2e4
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:Update() -- update\nmyButton:Update() -- update\nmyButton:Update() -- update\n Overwite Option .Getter.<PropertyName>(self)
\uac12\uc744 \uc5bb\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {}\nend\n-- \uac12\uc744 \uc77d\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Getter.Test(self)\n return \"Hello World\"\nend\n\nlocal myImported = Class(myClass)\nprint(myImported().Test)\n Overwite Option .Setter.<PropertyName>(self,newValue:any)
\uac12\uc744 \uc124\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\";\n Text = \"wow\";\n }\nend\n-- \uac12\uc744 \uc9c0\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Setter.Test(self,newValue)\n self._button.Text = newValue\nend\nfunction myClass.Getter.Test(self)\n return self._button.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nprint(myButton.Test)\nmyButton.Test = \"Hello World\"\nprint(myButton.Test)\n Overwite Option .UpdateTriggers.<PropertyName> = boolean?
\ud574\ub2f9 \uac12\uc744 \ubcc0\uacbd\ud558\uba74 Update \uac00 \uc218\ud589\ub420\uc9c0 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n-- \uac12 \ubcc0\uacbd\uc2dc \uc5c5\ub370\uc774\ud2b8 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4\nmyClass.UpdateTriggers.Test = true\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\n Overwite Option :Unload(object)
:Destroy \uac00 \ud638\ucd9c\ub420 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub530\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4 \uc5f0\uacb0\uc744 \ubaa8\ub450 \ub04a\uace0 \uc5c6\uc5d0\uc8fc\uc9c0\ub9cc \ud544\uc694\ud55c \uacbd\uc6b0 \uc9c1\uc811 \uc5c6\uc5d0\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4
:GetPropertyChangedSignal(propertyName:string)->Bindable
\uac12 \ubcc0\uacbd\uc744 \uc5f0\uacb0\ud560 \uc218 \uc788\ub294 Bindable\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. :EmitPropertyChangedSignal \uc73c\ub85c \uc774 \uc2dc\uadf8\ub110\uc744 \uc791\ub3d9\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud3b8\uc758\uc0c1 \uc774 \uc2dc\uadf8\ub110\uc774 \uc791\ub3d9\ud560 \ub54c, \uc0c8\ub85c\uc6b4 \uac12\uc774 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
:EmitPropertyChangedSignal(propertyName:string,changedValue:any?)
\ud504\ub85c\ud37c\ud2f0 \ubcc0\uacbd\uc2dc :GetPropertyChangedSignal \uc5d0 \ub4f1\ub85d\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \uc774 \ud568\uc218\ub97c \ud638\ucd9c\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c self.a = 1 \uacfc \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \ubc14\ub85c \uac12\uc744 \uc124\uc815\ud558\ub294 \uacbd\uc6b0 \uc790\ub3d9\uc801\uc73c\ub85c \uc774 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0\ub9cc, \ud14d\uc2a4\ud2b8 \ubc15\uc2a4\uc758 \ud14d\uc2a4\ud2b8 \ucc98\ub7fc \uac1d\uccb4\uc758 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc5f0\ub3d9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. changedValue \ub294 \uc120\ud0dd\uc0ac\ud56d\uc774\uba70, \uc8fc\uc5b4\uc9c0\uc9c0 \uc54a\uc73c\uba74 self[propertyName]\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Evnet = Quad.Event\n\nlocal TextBox = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_box\";\n Text = \"test\";\n Size = UDim2.fromOffset(200,200);\n [Evnet.Prop \"Text\"] = function (this,newValue)\n self:EmitPropertyChangedSignal(\"Text\",newValue)\n end;\n -- [Evnet.Prop \"Text\"] = self \"Text\" \uc640 \ub3d9\uc77c\ud569\ub2c8\ub2e4.\n -- self(name:string) \ubb38\ubc95\uc73c\ub85c \ubcc0\uacbd \uc774\ubca4\ud2b8 \uc5ed\uc2dc \ub9c1\ud06c\n -- \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n }\nend\nfunction myClass.Getter.Text(self)\n return self._box.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:GetPropertyChangedSignal(\"Text\"):Connect(function()\n print(myButton.Text)\nend)\nMount(ScreenGUI, myButton)\n"},{"location":"reference/lang/","title":"Lang","text":"Lang.FailedMessage:string
\uc544\ubb34\ub7f0 \ubc88\uc5ed \uac12\ub3c4 \uc5bb\uc5b4\uc624\uc9c0 \ubabb\ud558\uc600\uc744\ub54c \ubcf4\uc5ec\uc904 \ubb38\uc790\uc5f4\uc785\ub2c8\ub2e4. \ubcc0\uacbd\uc2dc \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\uac00 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.
Lang.CurrentLocale:Locale<item of Lang.Locales>
\ud604\uc81c \uc0ac\uc6a9\uc911\uc778 \uc5b8\uc5b4\uc785\ub2c8\ub2e4. \ubcc0\uacbd\uc2dc \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\uac00 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4. Lang.Locales \uc548\uc758 \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.
"},{"location":"reference/lang/#langlocales","title":"Lang.Locales","text":"Default (default) English (en_us) Spanish (es_es) French (fr_fr) Indonesian (id_id) Italian (it_it) Japanese (ja_jp) Korean (ko_kr) Russian (ru_ru) Thai (th_th) Turkish (tr_tr) Vietnamese (vi_vn) Portuguese (pt_br) German (de_de) ChineseSimplified (zh_cn) ChineseTraditional (zh_tw) Bulgarian (bg_bg) Bengali (bn_bd) Czech (cs_cz) Danish (da_dk) Greek (el_gr) Estonian (et_ee) Finnish (fi_fi) Hindi (hi_in) Croatian (hr_hr) Hungarian (hu_hu) Georgian (ka_ge) Kazakh (kk_kz) Khmer (km_kh) Lithuanian (lt_lt) Latvian (lv_lv) Malay (ms_my) Burmese (my_mm) Bokmal (nb_no) Dutch (nl_nl) Filipino (fil_ph) Polish (pl_pl) Romanian (ro_ro) Ukrainian (uk_ua) Sinhala (si_lk) Slovak (sk_sk) Slovenian (sl_sl) Albanian (sq_al) Bosnian (bs_ba) Serbian (sr_rs) Swedish (sv_se) Arabic (ar_001)
"},{"location":"reference/mounts/","title":"Mounts","text":":Unmount()
\uc774\ub807\uac8c \ud558\uba74 \ub9c8\uc6b4\ud2b8\ub41c Instance \ub97c \uc9c0\uc6cc\ubc84\ub9bd\ub2c8\ub2e4. Quad \ub294 \uc548\uc804\ud55c \uba54\ubaa8\ub9ac \uad00\ub9ac\ub97c \uc704\ud574 gc \uc758 \uae30\ub2a5\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c, gc \uc2dc\uac04\ucc28\ub85c \uc778\ud574 Store.GetObject \uc5d0\uc11c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0ac\ub77c\uc9c0\ub294\ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui,mainFrame)\n\nlocal childFrame = Frame {}\nlocal childFrameMount = Mount(mainFrame,childFrame)\nchildFrameMount:Unmount()\n-- childFrame \uc740 \ub2e8\uc21c\ud788 .Parent = nil \ub418\ub294 \uac83\uc744 \ub118\uc5b4 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uc0ac\ub77c\uc9d1\ub2c8\ub2e4\n-- \uc989, Destroy() \uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4\n :Add(item:any)
Mount \uc5d0 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc124\uc815\ud55c to \uac12\uc744 \ub530\ub77c \ubd80\ubaa8\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4.
\uc774 \ub3d9\uc791\uc740 \ub9ac\uc2a4\ud2b8\ub97c \ub9cc\ub4e4 \ub54c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc\ub85c\ub4dc \ub3d9\uc791\uc2dc \uc9c1\uc811 \uc81c\uac70\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui, mainFrame)\n\nlocal lastListMount = Mount(mainFrame)\nlocal function refreshList()\n lastListMount:Unmount() -- \uc774\uc804 children \uc744 \uc54c\uc544\uc11c \uc81c\uac70\ud569\ub2c8\ub2e4\n for i = 1,10 do\n lastListMount:Add(Frame { Name = tostring(i) })\n end\nend\n\ntask.spawn(function()\n while true do\n refreshList()\n task.wait(2)\n end\nend)\n \ub2e4\uc74c\uacfc \uac19\uc774 \uc774\uc804 children \uc744 \uac04\uc811\uc801\uc73c\ub85c \uc81c\uac70\ud558\uace0 \uc0c8\ub85c\uc6b4 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e8 ScrollFrame \uc758 \uacbd\uc6b0 CanvasPosition\uc774 \ucd08\uae30\ud654 \ub418\uc5b4\ubc84\ub9ac\ubbc0\ub85c \uc790\uc2dd\ub4e4\uc744 :Unmount() \ud558\uae30 \uc804\uc5d0 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uace0 \ub2e4\uc2dc \ubd88\ub7ec\uc640\uc57c \ud569\ub2c8\ub2e4
RoundSize:number?
ImageLabel, ImageButton \uc5d0\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc18d\uc131\uc785\ub2c8\ub2e4. \uc6d0\ud615 \uc774\ubbf8\uc9c0\uc5d0 Slice\ub97c \uc774\uc6a9\ud574 \ub465\uadfc \ud504\ub808\uc784\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c UICorner\ubcf4\ub2e4 \ubd80\ub4dc\ub7ec\uc6b4 \ucf54\ub108\ud6a8\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.
Corner:number?
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 UI\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. UICorner\ub97c \uc774\uc6a9\ud574 \ubaa8\uc11c\ub9ac \ubd80\ubd84\uc744 \ub465\uae00\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
PaddingAll:UDim?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc0c1\ud558\uc88c\uc6b0 \ubaa8\ub450 \uac19\uc740 \uac12\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. PaddingAllOffset \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
PaddingAllOffset:number?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. PaddingAll\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc791\ub3d9\ud558\ub098, Offset\uac12\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. PaddingAll \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Scale:number?
UIScale\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. UIScale.Scale \uacfc \uac19\uc740 \ud6a8\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4
Signal.Bindable.New(id:string)->Bindable
\uc0c8\ub85c\uc6b4 Bindable \uc744 \uc0dd\uc131\ud558\uac70\ub098 \uc774\uc804\uc758 Bindable \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
Signal.Disconnecter.New(id:string)->Disconnecter
\uc0c8\ub85c\uc6b4 Disconnecter \uc744 \uc0dd\uc131\ud558\uac70\ub098 \uc774\uc804\uc758 Disconnecter \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
"},{"location":"reference/signal/bindable/","title":"Bindable","text":":Fire(...any)
\ub4f1\ub85d\ub41c \uc5f0\uacb0\ub4e4\uc744 \uc2e4\ud589\ud558\uace0, Wait \uc744 \ud480\uc5b4\uc90d\ub2c8\ub2e4.
:Wait()->(...any)
Fire \uac00 \ud638\ucd9c\ub420 \ub54c \uae4c\uc9c0 \uae30\ub2e4\ub9bd\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ubc18\ud658\ub429\ub2c8\ub2e4.
:Connect((...any)->())->Connection
Fire \uac00 \ud638\ucd9c \ub420 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ud638\ucd9c \uc778\uc790\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc5f0\uacb0\uc744 \ub04a\uc744 \uc218 \uc788\ub3c4\ub85d Connection \uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Once((...any)->())->Connection
Connect \uc640 \uc720\uc0ac\ud558\uc9c0\ub9cc, Fire \uac00 \ud55c\ubc88 \ud638\ucd9c\ub41c \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9d1\ub2c8\ub2e4/
:CheckConnected(func)->boolean
\ud568\uc218\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:DisconnectAll()
\ubaa8\ub4e0 \uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Wait \uc73c\ub85c \uae30\ub2e4\ub9ac\uace0 \uc788\ub294 \uacf3\uc5d0\ub294 nil \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
:Destroy()
:DisconnectAll() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
:Add(connection:Connection|RBXScriptConnection)
connection\uc744 \ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub098\uc911\uc5d0 :Disconnect\ub97c \ud638\ucd9c\ud558\uba74 \ucd94\uac00\ub41c \uc5f0\uacb0\uc774 \ud30c\uae30\ub429\ub2c8\ub2e4.
:Disconnect()
\ucd94\uac00\ub41c \ubaa8\ub4e0 \uc5f0\uacb0\uc5d0 Disconnect() \ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uc774 \ud638\ucd9c \ud6c4\uc5d0 \ucd94\uac00\ub41c \uc5f0\uacb0\uc740 \ubaa8\ub450 \uc0ac\ub77c\uc9c0\uba70. \uc774 \uc694\uccad \ud6c4\uc5d0\ub3c4 \ub2e4\uc2dc :Add \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Disconnecter \ub97c \uc644\uc804\ud788 \uc0ac\uc6a9\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\ub824\uba74 :Destroy \ub97c \ud638\ucd9c\ud558\uc138\uc694
:Destroy()
:Disconnect() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
Store.GetStore(id:string?)->store
\uac12\ub4e4\uc744 \uc800\uc7a5\ud558\uace0 \ub808\uc9c0\uc2a4\ud130\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub294 \uac12 \uc800\uc7a5\uc18c\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
Store.GetObject(id:string)->Object?
\ud574\ub2f9 id \ub97c \uac00\uc9c4 \uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
Store.GetObjects(id:string)->objectList?
\ud574\ub2f9 id \ub97c \uac00\uc9c4 \uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8\ub4e4\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. \ubc18\ud658\uc740 objectList \ud0c0\uc785\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uace0\uae09 ID \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \uc0ac\ud56d\uc740 \ud29c\ud1a0\ub9ac\uc5bc \ubb38\uc11c\ub97c \ud655\uc778\ud558\uc138\uc694.
"},{"location":"reference/store/objectList/","title":"ObjectList","text":":Each((item:any, index:number)->())
\uc77c\ubc18\uc801\uc778 \ubc18\ubcf5\uc785\ub2c8\ub2e4. for \ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uacfc \ud6a8\uacfc\uac00 \uac19\uc73c\ub098 \ud568\uc218\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4
:EachAsync((item:any, index:number)->())
\ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uace0 \ubc14\ub85c\ubc14\ub85c \ub2e4\uc74c \uc544\uc774\ud15c\uc73c\ub85c \ub118\uc5b4\uac11\ub2c8\ub2e4. \ucf54\ub8e8\ud2f4\uc774 \uc774\uc6a9\ub429\ub2c8\ub2e4. wrap() \ucf54\ub8e8\ud2f4\uc744 \ubaa8\ub974\uac70\ub098, \ud544\uc694\uc131\uc774 \uc5c6\ub294\uacbd\uc6b0 \uc77c\ubc18\uc801\uc73c\ub85c :Each \ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub429\ub2c8\ub2e4
:IsEmpty()
\uc774 ObjectList \uac00 \ube44\uc5b4\uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:Remove(indexOrItem:number|any)
objectList \uc5d0\uc11c \ud574\ub2f9\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. , & \ub97c \uc0ac\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
"},{"location":"reference/tween/","title":"Tween","text":"Tween.RunTween(Item:any, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)->TweenHandler
\ud2b8\uc708\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \ud2b8\uc708 \uc635\uc158\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 TweenOptions \ubb38\uc11c\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Ended, OnStepped, Setter, Getter \uac12\uc774 \uc124\uc815\ub418\uba74 Option \uc548\uc758 \uac12\ubcf4\ub2e4 \uc6b0\uc120\uc801\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uae30\ub2a5\uc740 TweenOptions\uc758 \ub0b4\uc6a9\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0ac \uc218 \uc788\ub3c4\ub85d TweenHandler \uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. \ub2e4\ub978 \ud2b8\uc708\uc774 \ubcc0\uacbd\uc911\uc778 \uc18d\uc131\uc774 \ub2e4\uc2dc \ud2b8\uc708\ud558\ub3c4\ub85d \ud638\ucd9c\ub418\uba74, \uc774\uc804 \ud2b8\uc708\uc5d0\uc11c \ud574\ub2f9 \uc18d\uc131\uc740 \ud2b8\uc708\uc774 \uc911\ub2e8\ub418\uba70 \uc0c8\ub85c\uc6b4 \ud2b8\uc708\uc73c\ub85c \ub36e\uc5b4\uc4f0\uae30 \ub429\ub2c8\ub2e4.
Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.RunTweens(Items:{[number]:any}, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)
Tween.RunTween \uc640 \uac19\uc73c\ub098 \uc5ec\ub7ec \uc624\ube0c\uc81d\ud2b8\ub97c \ud55c\uaebc\ubc88\uc5d0 \ud2b8\uc708\ud569\ub2c8\ub2e4. \uc544\ubb34\uac83\ub3c4 \ubc18\ud658\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
Tween.RunTween({myFrame1, myFrame2, myFrame3},{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.StopTween(ItemOrHandler:TweenHandler|any)
\ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4. TweenHandler \ub610\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc5b4 \uba48\ucd9c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc73c\uba74 \uadf8 \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc2e4\ud589\uc911\uc778 \ubaa8\ub4e0 \ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4.
local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(Handler)\n local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(myFrame)\n Tween.StopPropertyTween(Item:any, PropertyName:string)
\uc624\ube0c\uc81d\ud2b8\uc5d0 \ud2b9\uc815 \ud504\ub85c\ud37c\ud2f0\uc758 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0b5\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.StopPropertyTween(ItemOrHandler:IsTweening|any)->boolean
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8 \ub610\ub294 TweenHandler \ub85c \ud2b8\uc708\uc774 \uc9c4\ud589\uc911\uc778\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4.
Tween.IsPropertyTweening(Item:any, PropertyName:string)
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8\uc758 \ud504\ub85c\ud37c\ud2f0\uac00 \ud2b8\uc708\uc911\uc774\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \uadf8\ub798\ud504\uc640 \ubbf8\ub9ac\ubcf4\uae30\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \uc790\uc138\ud55c \uc815\ubcf4\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4"},{"location":"reference/tween/directions/","title":"Tween.Directions","text":"Out \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.
In \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.
InOut \uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.
\ubaa8\ub4e0 Easing \uc740 \uc5ec\uae30\uc5d0\uc11c \uc9c1\uc811\uc801\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Linear
\uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615 \ud568\uc218\uc785\ub2c8\ub2e4 i=x, x=0 to 1
Quint
5 \uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Quart \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^5) i=1-(1-x)^5, x=0 to 1
Quart
\ub124\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Cubic \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^4) i=1-(1-x)^4, x=0 to 1
Cubic
\uc138\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. Quad \ubcf4\ub2e4 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4 (^3) i=1-(1-x)^3, x=0 to 1
Quad
\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. (^2) i=1-(1-x)^2, x=0 to 1
Expo
\uc9c0\uc218\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. \ub9e4\uc6b0 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4. i=1-2^(-10*x), x=0 to 1
Sin
\uc0ac\uc778 \ud30c\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. i=sin(x*pi/2), x=0 to 1
Circle
\uc0ac\ubd84\uc6d0 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. i=sqrt(1-(1-x)^2), x=0 to 1
Back
\uc2dc\uc791\uc2dc \ub4a4\ub85c \uc774\ub3d9\uc774 \uc788\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
Elastic
\ud0c4\uc131\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
Bounce
\ud280\uc5b4\uc624\ub984\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4.
TODO: \uc560\ub2c8\uba54\uc774\uc158 \ubbf8\ub9ac\ubcf4\uae30 \uc601\uc0c1 \ucd94\uac00
"},{"location":"reference/tween/tweenOptions/","title":"TweenOptions","text":"Option Time:number?
\ud2b8\uc708\uc758 \ucd1d \uae38\uc774\ub97c \uc815\ud569\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 1\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
Option Easing:string|(index:number)->number?
\ud2b8\uc708\uc758 \uac00\uac10\uc18d \uc815\ub3c4\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Easings.Linear\uc640 \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud639\uc740 \ud544\uc694\uc5d0 \ub530\ub77c \ud568\uc218\ub97c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ud568\uc218\ub97c Easing \uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c 1\ucc28 \uc9c4\ud589\ub3c4 (Linear, 0 \uc5d0\uc11c 1 \uc0ac\uc774\uc758 \uac12) \uac12\uc774 \uc8fc\uc5b4\uc9c0\uba70, \uacc4\uc0b0 \uacb0\uacfc\ub85c \uc2e4\uc81c \uc801\uc6a9\ub420 \uc704\uce58\ub97c \ubc18\ud658\ud574\uc57c\ud569\ub2c8\ub2e4. \ubc18\ud658\uac12\uc740 \uc74c\uc218\uc774\uac70\ub098 1 \ubcf4\ub2e4 \ud074 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Exp2\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \ud568\uc218\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option Direction:string?
\ud2b8\uc708\uc774 \uc9c4\ud589\ub418\ub294 \ubc29\ud5a5\uc785\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Directions.Out\uacfc \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Out\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \ubc29\ud5a5\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option CallBack:{[number|\"*\"|string]:(Item:any, Alpha:number, AbsolutePercent:number)->()}?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uc2e4\ud589\uc911\uc778 \ub3c4\uc911\uc5d0 \ud568\uc218\ub97c \uc2e4\ud589\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b8\uc708\uc758 \uc9c4\ud589 \uc815\ub3c4\uc5d0 \ub530\ub77c\uc11c \ud55c\ubc88 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uac70\ub098 \ud2b8\uc708 \uc9c4\ud589\uc911 \uacc4\uc18d\ud574\uc11c \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc778\ub371\uc2a4\uac00 \uc22b\uc790\uc778 \uacbd\uc6b0 \ud574\ub2f9 \uc9c0\uc810\uc744 \ub118\uc744 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc73c\uba70, \"*\" \ub97c \uc778\ub371\uc2a4\ub85c \uc0ac\uc6a9\ud558\uba74 \ubaa8\ub4e0 \ubd80\ubd84\uc5d0\uc11c \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \ud568\uc218\uc5d0\ub294 \ud3b8\uc758\uc0c1 \ud2b8\uc708\uc744 \ud558\uace0\uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \uc704\uce58\uac12, \uc2dc\uac04\ub9cc\uc744 \uace0\ub824\ud55c 1\ucc28 \uc704\uce58\uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Option OnStepped:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 \"*\" \ub97c \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Ended:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 1\uc744 \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Getter:(Item:any, Property:string)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc5bb\uc73c\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Option Getter:(Item:any, Property:string, Value:Lerpable)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc124\uc815\ud558\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984, \uc124\uc815\ud560 \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
\uc2e4\ud5d8\uc801\uc778 \ubaa8\ub4c8
\uc774 \ubaa8\ub4c8\uc740 \uc5c5\ub370\uc774\ud2b8\uac00 \ube48\ubc88\ud569\ub2c8\ub2e4! \ud56d\uc0c1 Github \ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694!
"},{"location":"tutorial/#_1","title":"\uba38\ub9ac\ub9d0","text":"\uc774 \ud398\uc774\uc9c0\ub294 Quad \ubaa8\ub4c8\uc744 \uc27d\uac8c \uc2dc\uc791\ud560 \uc218 \uc788\ub3c4\ub85d \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud398\uc774\uc9c0\ub97c \uc815\ub3c5\ud574 Quad \ubaa8\ub4c8\uc758 \uc804\ubc18\uc801\uc778 \uc0ac\uc6a9\ubc95\uc744 \ud30c\uc545\ud574\ubcf4\uc138\uc694!
\ubcc0\uacbd \uc0ac\ud56d\uc740 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
"},{"location":"tutorial/#_2","title":"\uc124\uce58","text":"3\uac00\uc9c0 \ubc29\ubc95\uc911 \uac00\uc7a5 \ud3b8\ud55c \ubc29\ubc95\uc744 \uc120\ud0dd\ud574 \ubaa8\ub4c8\uc744 \uc124\uce58\ud574\uc8fc\uc138\uc694.
"},{"location":"tutorial/#rbxmx","title":"\ub4dc\ub808\uadf8 \uc5d4 \ub4dc\ub86d / rbxmx \ud30c\uc77c","text":"\ub4dc\ub808\uadf8\ud574 \uc2a4\ud29c\ub514\uc624\uc5d0 \ub123\uc744 \uc218 \uc788\ub294 \ubaa8\ub4c8 \ud30c\uc77c\uc785\ub2c8\ub2e4.
RBXMX \ub2e4\uc6b4\ub85c\ub4dc
\ub2e4\uc6b4\ub85c\ub4dc\ud574 \uc2a4\ud29c\ub514\uc624\uc5d0 \uc62e\uaca8\uc8fc\uc138\uc694.
"},{"location":"tutorial/#git-clone","title":"git clone","text":"rojo \ub97c \uc0ac\uc6a9\ud574 \ube4c\ub4dc\ud558\ub294 \ubc29\ubc95\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4\uba74 Quad \ub97c \uc9c1\uc811 \ube4c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
git clone https://github.com/qwreey75/Quad Quad\ncd Quad\nmake build\n \uc708\ub3c4\uc6b0\uc758 \uacbd\uc6b0 make build \ub300\uc2e0 rojo build default.project.json -o output.rbxmx \ub97c \uc785\ub825\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4.
\ud504\ub85c\uc81d\ud2b8\uac00 rojo \ub97c \uc0ac\uc6a9\ud558\uace0 git \uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 submodule \ub85c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
# \uc774\ubbf8 submodule \uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\ub294 \uacbd\uc6b0 \uc785\ub825\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4\ngit submodule init\n# \uc11c\ube0c\ubaa8\ub4c8\uc758 \ub8e8\ud2b8\ub294 \uc9c1\uc811 \uc815\ud574\uc8fc\uc138\uc694\ngit submodule add https://github.com/qwreey75/Quad Quad\n"},{"location":"tutorial/#_3","title":"\ubaa8\ub4c8 \ubd88\ub7ec\uc624\uae30/\ucd08\uae30\ud654","text":"local Quad = require(path.to.module).Init()\n \ubaa8\ub4c8\uc744 \uc14b\uc5c5\ud558\uae30 \uc704\ud574\uc11c\ub294 .Init(QuadId:string?) \uc744 \uc774\uc6a9\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c QuadId \uac12\uc740 \ud544\uc694\ud558\uc9c0 \uc54a\uc9c0\ub9cc, \ub098\uc911\uc5d0 \uc18c\uac1c\ud560 Store \uc640 \uac19\uc740 \uc77c\ubd80 \uae30\ub2a5\ub4e4\uc774 QuadId:string \uc5d0 \uc601\ud5a5\ubc1b\uae30\ub3c4 \ud569\ub2c8\ub2e4.
.Init(QuadId:string) \ud568\uc218\ub294 QuadId \uac00 \uac19\uc740 \ubd88\ub7ec\uc624\uae30\uac00 \uc774\ubbf8 \uc788\uc5c8\ub358 \uacbd\uc6b0, \ucd08\uae30\ud654 \ud558\uc9c0 \uc54a\uace0 \ubd88\ub7ec\uc654\ub358\uac83\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \ubaa8\ub4c8\ub4e4 \ub07c\ub9ac QuadId \uac00 \uac19\uc740 \uacbd\uc6b0 Store \uac19\uc740\uac83\ub4e4\uc774 \uacf5\uc720\ub429\ub2c8\ub2e4.
QuadId \uac00 \ube44\uc6cc\uc9c4 \uacbd\uc6b0 \ud55c\ubc88\ub3c4 \uc0dd\uc131\ub41c \uc801 \uc5c6\ub294 \uc0c8\ub85c\uc6b4 Quad \uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n \ubd88\ub7ec\uc624\uae30\uac00 \ub05d\ub0ac\ub2e4\uba74 \uc774\uc81c Quad \uc758 \uc790\uc6d0\ub4e4\uc744 \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4! \ub2e4\uc74c \ud398\uc774\uc9c0\ub85c \ub118\uc5b4\uac00 \uc5b4\uc11c \ud65c\uc6a9\ud574 \ubd05\uc2dc\ub2e4
"},{"location":"tutorial/#_4","title":"\ucd94\uac00\uc801 \ud658\uacbd \uc124\uc815","text":""},{"location":"tutorial/#_5","title":"\ud0c0\uc785 \ubd88\ub7ec\uc624\uae30","text":"\uae30\ubcf8\uc801\uc73c\ub85c \uc774 \ubaa8\ub4c8\uc740 \ub85c\ub4dc\uc2dc \ud0c0\uc785\uc744 \ubc18\ud658\ud558\uc9c0\ub9cc. \uc9c1\uc811\uc801\uc73c\ub85c \ud0c0\uc785\uc744 \uc9c0\uc815\ud558\uace0 \uc2f6\uc740 \uacbd\uc6b0 types.lua \ub97c \ubd88\ub7ec\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4
local types = require(path.to.module.types)\nlocal Quad = (require(path.to.module)::types.module).Init()\n"},{"location":"tutorial/#_6","title":"\ud14c\uc2a4\ud2b8 \ud658\uacbd \uc900\ube44","text":"\ud14c\uc2a4\ud2b8 \ud658\uacbd\uc740 rojo \uc640\uc758 \uac1c\ubc1c\ud1b5\ud569\uc744 \uc704\ud574 Play \ubc84\ud2bc\uc744 \ub204\ub974\uc9c0 \uc54a\uace0 \ubbf8\ub9ac\ubcf4\uae30\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4e4\uc5b4\uc90d\ub2c8\ub2e4 \uc774\ub97c \ud1b5\ud574 \ub2e4\ub978 \ucf54\ub4dc \ubc29\uc2dd\uc758 UI \ud504\ub808\uc784 \uc6cc\ud06c\ubcf4\ub2e4 \ube60\ub978 \uac1c\ubc1c\uc18d\ub3c4\ub97c \ub2ec\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
\ud3b8\uc758\uc0c1\uc744 \uc704\ud574 \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub97c \uc124\uc815\ud574 \uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
\uc8fc\uc758rojo \ud658\uacbd\uc774 \uc544\ub2c8\ub77c\uba74 \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub294 \ub799\uc744 \ub3d9\ubc18\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
\uc77c\ubc18\uc801\uc73c\ub85c, \ub85c\uceec \ud3b8\uc9d1 \ud658\uacbd\uc5d0\uc11c \ub85c\ube14\ub85d\uc2a4\uc758 script editor \ub294 \ud55c\uae00\uc790 \ud55c\uae00\uc790 \ubcc0\uacbd\uc2dc \ub9c8\ub2e4 .Source \ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4. \uc774\ub294 \uacf3 \ud55c\uae00\uc790 \ud55c\uae00\uc790 \ud0c0\uc774\ud551 \uc2dc \ub9c8\ub2e4 UI \uac00 \uc5c5\ub370\uc774\ud2b8 \ub420 \uc218 \uc788\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. Quad \uc758 tracker \ubaa8\ub4c8\uc740 \uc21c\uac04\uc801\uc73c\ub85c \ub9ce\uc740\uc591\uc758 \ub9ac\ub85c\ub4dc\uac00 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub3c4\ub85d \uc801\uc808\ud55c \ucfe8\ud0c0\uc784\uacfc \uc2dc\uac04\ubd84\ubc30\ub97c \uac00\uc9c0\uace0 \uc788\uc9c0\ub9cc, \uc774 \uacbd\uc6b0\uc5d0\ub3c4 Ctrl+S \ub97c \ub20c\ub7ec \uc800\uc7a5\ud574\uc57c \uc801\uc6a9\ub418\ub294 vscode \uc640 \uac19\uc740 \ud0c0 \ud3b8\uc9d1\uae30\uc640\ub294 \ucc28\uc774\uac00 \ub0a0 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucf54\ub4dc\uac00 \ucee4\uc9d0\uc73c\ub85c \uc778\ud574 \uc790\ub3d9 \ub9ac\ub85c\ub4dc\uc5d0\uc11c \ud37c\ud3ec\uba3c\uc2a4\uc801 \uc774\uc288\ub97c \uacaa\ub294\ub2e4\uba74, rojo \ub97c \ud65c\uc6a9\ud574 \ucf54\ub4dc\ub97c \uc678\ubd80\ub85c \uc62e\uae34 \ud6c4, vscode \ub97c \uc2a4\ud29c\ub514\uc624 \uc704\uc5d0 \ub193\uace0 \ubbf8\ub9ac\ubcf4\uae30\uc640 \ucf54\ub4dc\ub97c \ub3d9\uc2dc\uc5d0 \ubcf4\uba74\uc11c \ud3b8\uc9d1\ud558\uc138\uc694. \ud504\ub85c\uc81d\ud2b8\uac00 \ub9e4\uc6b0 \uac70\ub300\ud558\uc9c0 \uc54a\ub2e4\uba74 \ud06c\uac8c \uac71\uc815\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4.
\ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc\ud2b8\ub9ac\ub97c \ub9cc\ub4e4\uc5b4\uc8fc\uc138\uc694.
| Main (ModuleScript)\n |-- Loader (LocalScript)\n |-- Test (ModuleScript)\n MainLoaderTest \uc2e4\uc81c\ub85c UI \ub4e4\uc744 \uadf8\ub9ac\ub294 \ucf54\ub4dc\ub4e4\uc774 \ub2f4\uae41\ub2c8\ub2e4.local Quad = require(path.to.module).Init()\nlocal IsTestMode = script.Name:match(\"_TESTING\") -- \ud14c\uc2a4\ud2b8\ubaa8\ub4dc \uc5ec\ubd80\nlocal LocalPlayer = game.Players.LocalPlayer\nlocal ScreenGUI = Instance.new(\"ScreenGui\",\n LocalPlayer and LocalPlayer.PlayerGui or game.StarterGui)\nScreenGUI.Name = \"MyGUI\"\nScreenGUI.ResetOnSpawn = false\n\n-- \uc2e4\uc81c \uadf8\ub9ac\ub294 \ucf54\ub4dc\ub4e4\uc774 \ub4e4\uc5b4\uac11\ub2c8\ub2e4.\n\nreturn function()\n -- \ud14c\uc2a4\ud2b8\uac00 \ub05d\ub098 \ub9cc\ub4e0\uac78 \uc9c0\uc6cc\uc57c \ud560 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\n -- \ucd94\ud6c4 \uc124\uba85\ub420 Unmount() \ub97c \uc774\uc6a9\ud558\uc138\uc694.\n ScreenGUI:Destroy()\nend\n \uac8c\uc784\uc744 \ud50c\ub808\uc774 \ud560 \ub54c \ucf54\ub4dc\uac00 \ub85c\ub4dc\ub420 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4dc\ub294 \ub85c\ub354\uc785\ub2c8\ub2e4.require(script.Parent)\n \uba85\ub839\ucc3d\uc5d0\uc11c \uba85\ub839\uc5b4 \uc785\ub825\uc73c\ub85c \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589 \ud560 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4dc\ub294 \ucf54\ub4dc\ub4e4\uc774 \ub2f4\uae41\ub2c8\ub2e4.-- \ubaa8\ub4c8 \uc704\uce58\ub85c \uc54c\ub9de\uac8c \ubcc0\uacbd\ud574\uc8fc\uc138\uc694\nlocal Quad = path.to.module\nlocal tracker = require(Quad.tracker)\n\nlocal module = {}\nlocal function reload()\n if module.unload then pcall(module.unload) end\n if module.testingModule then pcall(module.testingModule.Destroy,module.testingModule) end\n module.testingModule = script.Parent:Clone()\n module.testingModule.Parent = script.Parent.Parent\n module.testingModule.Archivable = false\n module.testingModule.Name = module.testingModule.Name .. \"_TESTING\"\n module.unload = require(module.testingModule)\nend\n\n-- \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub97c \ucf2d\ub2c8\ub2e4. \uc774\ubbf8 \ucf1c\uc838\uc788\uc73c\uba74 \ub2e4\uc2dc \ub85c\ub4dc\ud569\ub2c8\ub2e4\nfunction module.load()\n reload()\n if not module.autoreload then\n module.autoreload = tracker.new(script.Parent)\n module.autoreload:init(); wait()\n module.autoreload:connect(\"updated\",reload)\n end\nend\n\n-- \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub97c \ub044\uace0 \ud14c\uc2a4\ud2b8\ub85c \uc0dd\uae34\uac83\uc744 \uc9c0\uc6c1\ub2c8\ub2e4\nfunction module.unload()\n if module.autoreload then pcall(module.autoreload.deinit,module.autoreload) end\n if module.unload then pcall(module.unload) end\n if module.testingModule then pcall(module.testingModule.Destroy,module.testingModule) end\n module.autoreload = nil\n module.unload = nil\n module.testingModule = nil\nend\n\nreturn module\n \uc774\uc81c \uba85\ub839\uc5b4 \ucc3d\uc5d0\uc11c \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub97c \ucf1c\uac70\ub098 \ub04c \uc218 \uc788\uc2b5\ub2c8\ub2e4. rojo \ub098 \ud3b8\uc9d1\uae30\ub85c \uc778\ud574 \ucf54\ub4dc\uac00 \ubcc0\uacbd\ub418\uba74 \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4!
require(path.to.your.module).load()\n"},{"location":"tutorial/10_signal/","title":"Signal - \uc774\ubca4\ud2b8 \uc0dd\uc131\uacfc \uc5f0\uacb0","text":"\uc77d\uae30 \uc804... \ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Bindable, Disconnecter \uae30\ub2a5\uc774 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Bindable, Disconnecter \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4
Quad \uc5d0\ub294 \ud3b8\uc758\uc0c1\uc758 \uc774\uc720\ub85c \ub85c\ube14\ub85d\uc2a4\uc758 RBXScriptSignal \uc758 \uc720\uc0ac\ud488\uacfc, \ud55c\ubc88\uc5d0 \uc2dc\uadf8\ub110\uc744 \ub04a\uc5b4\uc8fc\ub294 Disconnecter \ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c Extend \uc758 GetPropertyChangedSignal \uac19\uc740 \uacf3\uc5d0\uc11c \uc0ac\uc6a9\ub418\uae30\ub3c4 \ud569\ub2c8\ub2e4.
Bindable \uc740 RBXScriptSignal \uacfc \uc720\uc0ac\ud55c \uac1d\uccb4\uc785\ub2c8\ub2e4. Signal.Bindable.New(id:string?) \uc73c\ub85c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub85c\ube14\ub85d\uc2a4\uc758 \uae30\ubcf8 BindableEvent \uc640\ub294 \ub2e4\ub974\uac8c :Fire \uac00 \ud55c\uacf3\uc5d0 \ud569\uccd0\uc838 \uc788\uc2b5\ub2c8\ub2e4.
\ub9cc\uc57d id \ub97c \uc9c0\uc815\ud55c \uacbd\uc6b0, \uac19\uc740 id \ub97c \uac00\uc9c4 Bindable \uc774 \uc788\uc73c\uba74 \uc774\uc804\uac83\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Signal = Quad.Signal\n\nlocal mySignal = Signal.Bindable.New()\n\nlocal connection = mySignal:Connect(function(v)\n print(v)\nend)\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\")\nconnection:Disconnect()\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uba74 \uc548\ub429\ub2c8\ub2e4.\")\n\ntask.spawn(function()\n task.wait(5)\n mySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \uc9c0\uc5f0\ub41c \ud6c4 \ucd9c\ub825\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\")\nend)\nprint(mySignal:Wait())\n\nmySignal:Once(function(v)\n print(v)\nend)\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\")\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uba74 \uc548\ub429\ub2c8\ub2e4.\")\n\nmySignal:Once(function(v)\n print(v)\nend):Disconnect()\nmySignal:Fire(\"\uc774 \uba54\uc2dc\uc9c0\ub294 \ucd9c\ub825\ub418\uba74 \uc548\ub429\ub2c8\ub2e4.\")\n"},{"location":"tutorial/10_signal/#bindable_1","title":"Bindable \uba54\uc18c\ub4dc","text":"Bindable \uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub4e4\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Fire(...any)
\ub4f1\ub85d\ub41c \uc5f0\uacb0\ub4e4\uc744 \uc2e4\ud589\ud558\uace0, Wait \uc744 \ud480\uc5b4\uc90d\ub2c8\ub2e4.
:Wait()->(...any)
Fire \uac00 \ud638\ucd9c\ub420 \ub54c \uae4c\uc9c0 \uae30\ub2e4\ub9bd\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ubc18\ud658\ub429\ub2c8\ub2e4.
:Connect((...any)->())->Connection
Fire \uac00 \ud638\ucd9c \ub420 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. Fire \uc5d0 \uc0ac\uc6a9\ub41c \uac12\uc774 \ud638\ucd9c \uc778\uc790\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc5f0\uacb0\uc744 \ub04a\uc744 \uc218 \uc788\ub3c4\ub85d Connection \uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Once((...any)->())->Connection
Connect \uc640 \uc720\uc0ac\ud558\uc9c0\ub9cc, Fire \uac00 \ud55c\ubc88 \ud638\ucd9c\ub41c \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9d1\ub2c8\ub2e4/
:CheckConnected(func)->boolean
\ud568\uc218\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:DisconnectAll()
\ubaa8\ub4e0 \uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Wait \uc73c\ub85c \uae30\ub2e4\ub9ac\uace0 \uc788\ub294 \uacf3\uc5d0\ub294 nil \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
:Destroy()
:DisconnectAll() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
Bindable:Connect \uc640 Bindable:Once \ub294 Connection \uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. Connection \uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub4e4\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
:Disconnect()
\uc5f0\uacb0\uc744 \ub04a\uc2b5\ub2c8\ub2e4. Fire \uac00 \ud638\ucd9c\ub418\ub354\ub77c\ub3c4 Connect \ud639\uc740 Once \uc5d0 \uc0ac\uc6a9\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
:Destroy()
:Disconnect() \uc758 \ubcc4\uce6d\uc785\ub2c8\ub2e4.
Disconnecter \ub294 \uc77c\uc885\uc758 Maid \ubaa8\ub4c8\uacfc \ube44\uc2b7\ud55c \uac1d\uccb4\uc785\ub2c8\ub2e4. \uc774 \uac1d\uccb4\uc5d0\ub294 Connection (\ub85c\ube14\ub85d\uc2a4, Quad \ubaa8\ub450 \ud638\ud658) \uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc73c\uba70, \ub098\uc911\uc5d0 \ucd94\uac00\ub41c Connection \uc744 \ud55c\uaebc\ubc88\uc5d0 Disconnect \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Signal.Disconnecter.New(id:string?) \uc73c\ub85c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
\ub9cc\uc57d id \ub97c \uc9c0\uc815\ud55c \uacbd\uc6b0, \uac19\uc740 id \ub97c \uac00\uc9c4 Bindable \uc774 \uc788\uc73c\uba74 \uc774\uc804\uac83\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
:Add(connection:Connection|RBXScriptConnection)
connection\uc744 \ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub098\uc911\uc5d0 :Disconnect\ub97c \ud638\ucd9c\ud558\uba74 \ucd94\uac00\ub41c \uc5f0\uacb0\uc774 \ud30c\uae30\ub429\ub2c8\ub2e4.
:Disconnect()
\ucd94\uac00\ub41c \ubaa8\ub4e0 \uc5f0\uacb0\uc5d0 Disconnect() \ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uc774 \ud638\ucd9c \ud6c4\uc5d0 \ucd94\uac00\ub41c \uc5f0\uacb0\uc740 \ubaa8\ub450 \uc0ac\ub77c\uc9c0\uba70. \uc774 \uc694\uccad \ud6c4\uc5d0\ub3c4 \ub2e4\uc2dc :Add \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Disconnecter \ub97c \uc644\uc804\ud788 \uc0ac\uc6a9\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\ub824\uba74 :Destroy \ub97c \ud638\ucd9c\ud558\uc138\uc694
:Destroy()
:Disconnect() \ub97c \uc218\ud589\ud55c \ud6c4, \uac1d\uccb4\ub97c \ub354\uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4. id \uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294\uacbd\uc6b0 \uc800\uc7a5\uc18c\uc5d0\uc11c \ud30c\uae30\ud558\uac8c \ub429\ub2c8\ub2e4.
Quad \uc5d0\uc11c\ub294 \ub85c\ube14\ub85d\uc2a4\uc758 Frame \uc774\ub098 TextButton \uac19\uc740 \uae30\ubcf8 \uc624\ube0c\uc81d\ud2b8\ub9cc \ub9cc\ub4e4 \uc218 \uc788\ub294\uac83\uc774 \uc544\ub2d9\ub2c8\ub2e4. Quad \ub294 \uc790\uc2e0\ub9cc\uc758 \ubc84\ud2bc, \ud639\uc740 \uc5ec\ub7ec \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc744 \ucd94\uc0c1\uc801\uc73c\ub85c \ub9cc\ub4e4\uace0. \ub2e4\uc2dc \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d Extend \ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.
Extend \ub294 Register \uc640 \ub354\ubd88\uc5b4 Quad \uc758 \uac00\uc7a5 \uc911\uc694\ud55c \uae30\ub2a5\uc73c\ub85c\uc368, \ub2e4\uc74c\uacfc \uac19\uc740 \uc7a5\uc810\uc744 \uc9c0\ub2d9\ub2c8\ub2e4.
Extend \uac1d\uccb4\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0dd\uc131\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\n-- extend \uac1d\uccb4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4\nlocal myClass = Class.Extend()\n \uc77c\ubc18\uc801\uc73c\ub85c Extend \ub294 \ud55c \ubaa8\ub4c8\uc5d0 \ud558\ub098\uc529 \ub123\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc \uad6c\uc870\ub97c \ub9cc\ub4e4\uc5b4\ubcf4\uc138\uc694. \uc544\ub798\uc758 \ucf54\ub4dc\ub294 \ubaa8\ub4e0 Extend \ubb38\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.
- ScreenGUI\n |-- localscript\n |-- myClass (ModuleScript)\n localscriptlocalscript.myClass Extend \ud074\ub798\uc2a4\ub97c \ubd88\ub7ec\uc624\uace0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Mount = Quad.Mount\nlocal Class = Quad.Class\nlocal Store = Quad.Store\n\nlocal myStore = Store.GetStore(\"myStore\")\nmyStore.bgColor = Color3.fromRGB(0,0,0)\n\n-- Class(require(script.myClass)) \uc640 \uac19\uc2b5\ub2c8\ub2e4.\n-- \uc904\uc5ec\uc11c Class(script.myClass) \ub85c \uc4f8 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\nlocal myClass = Class(script.myClass)\n\n-- \ud504\ub808\uc784\uc5d0 \ub123\uac70\ub098 \ud558\uc5ec\ub3c4 \ubb34\ubc29\ud569\ub2c8\ub2e4\n-- \uc77c\ubc18 \uc624\ube0c\uc81d\ud2b8\uc640 \ub611\uac19\uc774 id \ub97c \ub123\uace0 GetObject \ub85c\n-- \uac00\uc838\uc62c \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4\nlocal main = myClass \"main\" {\n Testing = 1;\n Text = \"Test\";\n -- \ub808\uc9c0\uc2a4\ud130 \uac12\uc744 \ub118\uaca8\uc904 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\n -- \ubc1b\ub294\ucabd\ub3c4 \ub808\uc9c0\uc2a4\ud130\uc778 \uacbd\uc6b0 \uac12\uc774 \uc5f0\ub3d9\ub429\ub2c8\ub2e4.\n BackgroundColor3 = myStore \"bgColor\";\n}\n\nMount(ScreenGUI, main)\nprint(Store.GetObject(\"main\") == main) -- true\n\n-- \uc774 \uac12\uc744 \ubc14\uafb8\uba74 \uc5f0\ub3d9\ub41c BackgroundColor3 \ub3c4 \ubc14\ub014\uac83\uc785\ub2c8\ub2e4\nmyStore.bgColor = Color3.fromRGB(255,255,255)\n\n-- \uac12 \ubcc0\uacbd\ub428\uc744 \uc5f0\uacb0\ud558\uae30\nmain\n :GetPropertyChangedSignal(\"AbsolutePosition\")\n :Connect(function()\n print(\"AbsolutePosition\",main.AbsolutePosition)\n end)\n\n-- main:Update()\n-- \uac15\uc81c\ub85c \ub2e4\uc2dc Render \ub97c \uc2e4\ud589\ud558\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4.\n\n-- main.Testing = 2\n-- \uc5c5\ub370\uc774\ud2b8 \ud2b8\ub9ac\uac70\uc774\ubbc0\ub85c \uc774 \uac12\uc744 \ubcc0\uacbd\ud558\uba74.\n-- main:Update() \uc640 \uac19\uc740 \ud6a8\uacfc\uac00 \ub0a9\ub2c8\ub2e4.\n Extend \ud074\ub798\uc2a4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \ub2e4\ub978\uacf3\uc5d0\uc11c \ubd88\ub7ec\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Event = Quad.Event\n\nlocal TextLabel = Class \"TextLabel\"\n\nlocal myClass = Class.Extend()\n\n-- Init \ub294 Render \uc804 props \ub97c \ucd08\uae30\ud654 \ud558\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4\n-- Init \uc5d0\ub294 \ud504\ub85c\ud37c\ud2f0 \ub9ac\uc2a4\ud2b8\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. Init \ub294 \uc5c6\ub354\ub77c\ub3c4 \ubb34\ubc29\ud569\ub2c8\ub2e4.\nfunction myClass:Init(props)\n -- \uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8\uc5d0 \ud504\ub77c\uc774\ube57 \uac12\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.\n -- \uc774\ub984 \uc55e\uc5d0 _ \uac00 \ubd87\uc73c\uba74 \uc678\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \ubaa9\uc801\uc774 \uc544\ub2cc\n -- \ub0b4\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \ubaa9\uc801\uc73c\ub85c\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \uc774 \uacbd\uc6b0 \uc548\uc804\uc131\uc744 \uc704\ud574 register \ub97c \uc0ac\uc6a9\ud560 \uc218\n -- \uc5c6\uc2b5\ub2c8\ub2e4.\n self._testValue = 2\n\n -- \ud504\ub85c\ud37c\ud2f0\uc758 \uae30\ubcf8\uac12\uc744 \uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n -- \uc0dd\uc131 \uc2dc \uac12\uc774 \ub204\ub77d\ub41c \uacbd\uc6b0 \uc0ac\uc6a9\ud560 \uac12\uc744 \uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \ud0a4, \uac12 \uc73c\ub85c \uad6c\uc131\ud569\ub2c8\ub2e4\n props:Default(\"Text\", \"Testing Label\")\n props:Default(\"ZIndex\", 1)\nend\n\n-- myClass \uac00 \uc9c4\uc9dc \uadf8\ub824\uc9c0\ub294 \ubd80\ubd84\uc785\ub2c8\ub2e4.\n-- Render \ub3c4 Init \ucc98\ub7fc \ud504\ub85c\ud37c\ud2f0 \ub9ac\uc2a4\ud2b8\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4.\nfunction myClass:Render(props)\n return TextLabel {\n Size = UDim2.fromOffset(200,200);\n -- self \uc5d0 _label \ub85c \uc774 TextLabel \uc744 \ub123\uc2b5\ub2c8\ub2e4.\n -- \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ubb38\ubc95\uc785\ub2c8\ub2e4.\n self \"_label\";\n\n -- _holder \ub294 \uc608\uc57d\ub41c \uac12\uc785\ub2c8\ub2e4. \uc790\uc2dd\ub4e4\uc774 \uc5ec\uae30\uc5d0 \ub4e4\uc5b4\uc640\uc57c\n -- \ud568\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \ub9ac\uc2a4\ud2b8\ub098 \uadf8\ub9ac\ub4dc\uac00 \uc788\ub294 \uacbd\uc6b0 \uc720\uc6a9\ud569\ub2c8\ub2e4.\n -- \ub530\ub85c \uc124\uc815\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 Render \uac00 \ub9ac\ud134\ud55c \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\n self \"_holder\";\n\n -- GetPropertyChangedSignal \uac00 \uc791\ub3d9\ud560 \uc218 \uc788\ub3c4\ub85d\n -- \ud504\ub85c\ud37c\ud2f0 \ubcc0\uacbd \uc774\ubca4\ud2b8\ub97c \uc5f0\uacb0\ud574\uc90d\ub2c8\ub2e4\n -- \uc774 \ub610\ud55c \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ubb38\ubc95\uc785\ub2c8\ub2e4.\n [Event.Prop \"AbsolutePosition\"] = self \"AbsolutePosition\";\n -- \ub9c8\uc6b0\uc2a4 \ud074\ub9ad\uac19\uc740 \ub2e4\ub978 \uc774\ubca4\ud2b8\ub97c GetPropertyChangedSignal \uc5d0\n -- \uc5f0\uacb0\ud558\ub824\uba74 :EmitPropertyChangedSignal() \ub97c \ud638\ucd9c\ud574\uc8fc\uba74 \ub429\ub2c8\ub2e4.\n [Event \"MouseEnter\"] = function (this,x,y)\n -- \ud0a4, \uac12\uc774 \ub4e4\uc5b4\uac11\ub2c8\ub2e4. \uac12\uc774 \uc5c6\uc73c\uba74 self[key] \ub85c \ub300\uc2e0\ud569\ub2c8\ub2e4.\n self:EmitPropertyChangedSignal(\"Testing2\",1)\n end;\n\n -- \ubc1b\uc740 \ub808\uc9c0\uc2a4\ud130\ub97c \uc5f0\ub3d9\ud569\ub2c8\ub2e4.\n -- \ub9cc\uc57d props.BackgroundColor3 \ub9cc \uc0ac\uc6a9\ud558\uba74\n -- \ucc98\uc74c\uc5d0\ub9cc \ub808\uc9c0\uc2a4\ud130\uc5d0\uc11c \uac12\uc744 \uc77d\uc5b4\uc635\ub2c8\ub2e4.\n -- \ub530\ub77c\uc11c \uac12\uc744 \ubcc0\uacbd\ud574\ub3c4 \ubcc0\uacbd\uc0ac\ud56d\uc774 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n BackgroundColor3 = props \"BackgroundColor3\":Tween();\n\n -- \uc785\ub825 \uac12\uacfc \uc0c1\uad00\uc5c6\uc774 \ub808\uc9c0\uc2a4\ud130\ub97c \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n -- \uc774 \uacbd\uc6b0 main.Text = \"New\" \ucc98\ub7fc \uc9c1\uc811 \ubcc0\uacbd\ud558\uba74\n -- \uadf8 \ubcc0\uacbd\uc774 \uc801\uc6a9\ub429\ub2c8\ub2e4.\n Text = props \"Text\";\n ZIndex = props \"ZIndex\";\n -- ... \uc790\uc2dd\uc744 \ub123\uc5b4\ub3c4 \ubb34\ubc29\ud569\ub2c8\ub2e4.\n -- Frame {\n -- [Event.Created] = function(self)\n -- print(self.Parent) -- nil \uc77c \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4\n -- \ub530\ub77c\uc11c \ubd80\ubaa8\ub97c \uac74\ub4e4\uc5ec\uc57c \ud558\ub294 \uacbd\uc6b0, self \"\" \ub97c \ud1b5\ud574\n -- self \uac12\uc5d0 \ub123\uc5b4\ub193\uace0 \ub098\uc911\uc5d0 AfterRender \ub85c \ud574\uacb0\ud574\uc57c\ud569\ub2c8\ub2e4.\n -- end;\n -- }\n }\nend\n\n\n-- AfterRender \ub294 Render \uc9c1\ud6c4 \uc2e4\ud589\ub429\ub2c8\ub2e4.\n-- \ub80c\ub354\ub9c1 \ud6c4 \uc2e4\ud589\ud574\uc57c \ud560 \uac83\uc744 \ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n-- object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4.\n-- AfterRender \ub294 \uc5c6\ub354\ub77c\ub3c4 \ubb34\ubc29\ud569\ub2c8\ub2e4.\nfunction myClass:AfterRender(object)\n print(self._label,\"\uc774 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n -- \uc774\ub807\uac8c \ud558\uba74 \ub808\uc9c0\uc2a4\ud130\ub85c \uc5f0\uacb0\ub41c \ubd80\ubd84\ub3c4 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4.\n self.ZIndex = 2\nend\n\n-- function myClass:Unload(object)\n-- :Destroy \uac00 \ud638\ucd9c\ub420 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub530\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4\n-- \uc5f0\uacb0\uc744 \ubaa8\ub450 \ub04a\uace0 \uc5c6\uc5d0\uc8fc\uc9c0\ub9cc \ud544\uc694\ud55c \uacbd\uc6b0 \uc9c1\uc811 \uc5c6\uc5d0\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n-- object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4\n\n-- AbsolutePosition \uac12\uc744 \ubc18\ud658\ud560 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4\nfunction myClass.Getter.AbsolutePosition(self)\n return self._label.AbsolutePosition\nend\n\n-- AbsolutePosition \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4\nfunction myClass.Setter.AbsolutePosition(self,newValue)\n -- \ud544\uc694\ud55c \uacbd\uc6b0 \uac12\uc744 \uc124\uc815\ud558\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n error(\"AbsolutePosition \uac12\uc740 \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4\")\nend\n\n-- main.Testing = 2 \ub2e4\uc74c\uacfc \uac19\uc774 \uac12\uc744 \ubcc0\uacbd\ud558\uba74 \uc624\ube0c\uc81d\ud2b8\uac00\n-- \uc644\uc804\ud788 \ub2e4\uc2dc \uadf8\ub824\uc9d1\ub2c8\ub2e4. \uc989 \uc5c5\ub370\uc774\ud2b8 \ud2b8\ub9ac\uac70\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\nmyClass.UpdateTriggers.Testing = true\n\n-- \ub9cc\ub4e0 \ud074\ub798\uc2a4\ub97c \ubc18\ud658\ud574\uc90d\uc2dc\ub2e4.\nreturn myClass\n"},{"location":"tutorial/11_extend/#extend_1","title":"Extend","text":"Extend \uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uac12\ub4e4\uacfc \uba54\uc18c\ub4dc\uc785\ub2c8\ub2e4.
self(name:string)->linker
Extend \uba54\uc18c\ub4dc \uc804\uc5ed\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4. \ub9c1\ucee4\ub97c \ub9cc\ub4e4\uba70, PropertyChangedSignal \ub97c \uc774\uc5b4\uc8fc\uac70\ub098, self \uc5d0 \uc6d0\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 Render \ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694.
Overwite REQUIRED :Render(props:valueStore)
\ud654\uba74\uc5d0 \uadf8\ub824\uc9c0\ub294 UI \ub97c \ub9cc\ub4e4\uc5b4\uc9c0\uac8c \ud558\ub294 \ud568\uc218\uc785\ub2c8\ub2e4. Extend \uac00 \uadf8\ub824\uc9c0\ub824\uba74 \ubb34\uc870\uac74 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4. \uc774 \uc624\ube0c\uc81d\ud2b8\ub97c \ub9cc\ub4dc\ub294\ub370 \ub4e4\uc5b4\uac04 \ud504\ub85c\ud37c\ud2f0 \ubaa9\ub85d\uc744 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc90d\ub2c8\ub2e4. \ub808\uc9c0\uc2a4\ud130 \ubb38\ubc95\uc774 \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Event = Quad.Event\nlocal Mount = Quad.Mount\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n [Event \"MouseButton1Click\"] = function (self,x,y)\n print((\"\ubc84\ud2bc\uc774 %d,%d \uc5d0\uc11c \ub20c\ub838\uc2b5\ub2c8\ub2e4\"):format(x,y))\n end;\n Size = props \"Size\";\n Text = props \"Text\"; -- \ub808\uc9c0\uc2a4\ud130\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4\n }\nend\n\nlocal myImported = Class(myClass)\nmyImported.Size = UDim2.fromOffset(200,200)\n\nlocal test = myImported {\n Text = \"wow\"\n}\nMount(ScreenGUI, test)\n\n-- \ud14d\uc2a4\ud2b8\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n test.Text = \"w\"..(\"o\"):rep(#test.Text-1)..\"w\"\nend\n Overwite Option :Init(props:valueStore)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub418\uae30 \uc804\uc5d0 \ubbf8\ub9ac props \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Init(props)\n -- Size \uac12\uc774 \uc5c6\ub2e4\uba74 \uae30\ubcf8\uac12\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.\n props:Default(\"Size\", UDim2.fromOffset(100,100))\n\n -- \uc55e\uc5d0 _ \ub97c \ubd87\uc5ec \ub0b4\ubd80 \ubcc0\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.\n -- \uc5b4\ub514\uc5d0\uc11c\ub098 \uc4f0\uc77c \uc218 \uc788\uc73c\uba70 register \uc5d0 \uc601\ud5a5\uc8fc\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n self._asdf = true\nend\nfunction myClass:Render(props)\n return TextButton {\n props \"Size\"\n }\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported() -- \uc635\uc158 \uc5c6\uc74c\nprint(myButton.Size)\n Overwite Option :AfterRender(object:any)
\uc120\ud0dd\uc801\uc778 \uba54\uc18c\ub4dc\ub85c, Render \uac00 \uc218\ud589 \ub41c \ud6c4 \ud560 \uc791\uc5c5\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c Render \uac00 \ubc18\ud658\ud55c \uac12\uc774 \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\"; -- \uc790\uae30 \uc790\uc2e0\uc5d0 \uc774 \ubc84\ud2bc\uc744 \ub123\uc2b5\ub2c8\ub2e4\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button == object) -- true\nend\n\nlocal myImported = Class(myClass)\nmyImported() -- \uc635\uc158 \uc5c6\uc74c\n Overwite Option :Update()
:Render \uc640 :AfterRender \ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uace0, \uc774\uc804\uc5d0 \uc788\ub358 \uc790\uc2dd\ub4e4\uc744 \ub2e4\uc2dc \ub04c\uc5b4\uc635\ub2c8\ub2e4. \uc774\uc804\uc758 Render \uacb0\uacfc\ub294 \uc81c\uac70\ub429\ub2c8\ub2e4
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:Update() -- update\nmyButton:Update() -- update\nmyButton:Update() -- update\n Overwite Option .Getter.<PropertyName>(self)
\uac12\uc744 \uc5bb\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {}\nend\n-- \uac12\uc744 \uc77d\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Getter.Test(self)\n return \"Hello World\"\nend\n\nlocal myImported = Class(myClass)\nprint(myImported().Test)\n Overwite Option .Setter.<PropertyName>(self,newValue:any)
\uac12\uc744 \uc124\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_button\";\n Text = \"wow\";\n }\nend\n-- \uac12\uc744 \uc9c0\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ud560 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4\nfunction myClass.Setter.Test(self,newValue)\n self._button.Text = newValue\nend\nfunction myClass.Getter.Test(self)\n return self._button.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nprint(myButton.Test)\nmyButton.Test = \"Hello World\"\nprint(myButton.Test)\n Overwite Option .UpdateTriggers.<PropertyName> = boolean?
\ud574\ub2f9 \uac12\uc744 \ubcc0\uacbd\ud558\uba74 Update \uac00 \uc218\ud589\ub420\uc9c0 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\nlocal count = 0\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n print(\"Rendering!\")\n count = count + 1\n return TextButton {\n self \"_button\";\n Name = tostring(count);\n }\nend\nfunction myClass:AfterRender(object)\n print(self._button.Name)\nend\n-- \uac12 \ubcc0\uacbd\uc2dc \uc5c5\ub370\uc774\ud2b8 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4\nmyClass.UpdateTriggers.Test = true\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\nmyButton.Test = 1 -- update\n Overwite Option :Unload(object)
:Destroy \uac00 \ud638\ucd9c\ub420 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub530\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4 \uc5f0\uacb0\uc744 \ubaa8\ub450 \ub04a\uace0 \uc5c6\uc5d0\uc8fc\uc9c0\ub9cc \ud544\uc694\ud55c \uacbd\uc6b0 \uc9c1\uc811 \uc5c6\uc5d0\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. object \ub294 :Render \uac00 \ubc18\ud658\ud55c \uac12\uc785\ub2c8\ub2e4
:GetPropertyChangedSignal(propertyName:string)->Bindable
\uac12 \ubcc0\uacbd\uc744 \uc5f0\uacb0\ud560 \uc218 \uc788\ub294 Bindable\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. :EmitPropertyChangedSignal \uc73c\ub85c \uc774 \uc2dc\uadf8\ub110\uc744 \uc791\ub3d9\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud3b8\uc758\uc0c1 \uc774 \uc2dc\uadf8\ub110\uc774 \uc791\ub3d9\ud560 \ub54c, \uc0c8\ub85c\uc6b4 \uac12\uc774 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4.
:EmitPropertyChangedSignal(propertyName:string,changedValue:any?)
\ud504\ub85c\ud37c\ud2f0 \ubcc0\uacbd\uc2dc :GetPropertyChangedSignal \uc5d0 \ub4f1\ub85d\ub41c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \uc774 \ud568\uc218\ub97c \ud638\ucd9c\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c self.a = 1 \uacfc \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \ubc14\ub85c \uac12\uc744 \uc124\uc815\ud558\ub294 \uacbd\uc6b0 \uc790\ub3d9\uc801\uc73c\ub85c \uc774 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uc9c0\ub9cc, \ud14d\uc2a4\ud2b8 \ubc15\uc2a4\uc758 \ud14d\uc2a4\ud2b8 \ucc98\ub7fc \uac1d\uccb4\uc758 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc5f0\ub3d9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. changedValue \ub294 \uc120\ud0dd\uc0ac\ud56d\uc774\uba70, \uc8fc\uc5b4\uc9c0\uc9c0 \uc54a\uc73c\uba74 self[propertyName]\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Evnet = Quad.Event\n\nlocal TextBox = Class \"TextButton\"\n\nlocal myClass = Class.Extend()\nfunction myClass:Render(props)\n return TextButton {\n self \"_box\";\n Text = \"test\";\n Size = UDim2.fromOffset(200,200);\n [Evnet.Prop \"Text\"] = function (this,newValue)\n self:EmitPropertyChangedSignal(\"Text\",newValue)\n end;\n -- [Evnet.Prop \"Text\"] = self \"Text\" \uc640 \ub3d9\uc77c\ud569\ub2c8\ub2e4.\n -- self(name:string) \ubb38\ubc95\uc73c\ub85c \ubcc0\uacbd \uc774\ubca4\ud2b8 \uc5ed\uc2dc \ub9c1\ud06c\n -- \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n }\nend\nfunction myClass.Getter.Text(self)\n return self._box.Text\nend\n\nlocal myImported = Class(myClass)\nlocal myButton = myImported()\nmyButton:GetPropertyChangedSignal(\"Text\"):Connect(function()\n print(myButton.Text)\nend)\nMount(ScreenGUI, myButton)\n"},{"location":"tutorial/1_import/","title":"Import - \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131","text":""},{"location":"tutorial/1_import/#_1","title":"\ub85c\ube14\ub85d\uc2a4 \uc624\ube0c\uc81d\ud2b8 \ubd88\ub7ec\uc624\uae30","text":"Frame \uacfc \uac19\uc740 UI \uc624\ube0c\uc81d\ud2b8\ub97c \ub9cc\ub4e4\uace0 \uc2f6\uc740 \uacbd\uc6b0 \uba3c\uc800 import \ub97c \uc774\uc6a9\ud574\uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc774 \uc785\ub825\ud574\ubcf4\uc138\uc694!
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal Frame = Class \"Frame\"\n\nprint(\n Frame {\n Name = \"Wow!\";\n -- \ub2e4\uc74c\uacfc \uac19\uc774 \uc790\uc2dd\uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n Frame {\n Name = \"Child\";\n };\n }\n)\n \ub098\uc911\uc5d0 \uc790\uc2e0\ub9cc\uc758 UI \uc624\ube0c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc9c0\ub9cc, \uc77c\ubc18\uc801\uc778 \ub85c\ube14\ub85d\uc2a4\uac00 \uc9c0\uc6d0\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\uc758 \uacbd\uc6b0 Class(ClassName:string) \uc73c\ub85c \ubd88\ub7ec\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4
\ubd88\ub7ec\uc628 Class \uc5d0 \uae30\ubcf8\uac12\uc744 \uc124\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 BorderSizePixel \uc640 \uac19\uc774 \uc790\uc8fc \uc0ac\uc6a9\ub420 \uc218 \uc788\ub294 \ud504\ub85c\ud37c\ud2f0\ub97c \ubbf8\ub9ac \uc9c0\uc815\ud574 \ub458 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n\nlocal FrameWithoutBorder = Class \"Frame\"\nFrameWithoutBorder.BorderSizePixel = 0\n\nlocal FrameWithBorder = Class \"Frame\"\nFrameWithBorder.BorderSizePixel = 1\n\nlocal frame1 = FrameWithoutBorder {}\nlocal frame2 = FrameWithBorder {}\nlocal frame3 = FrameWithBorder {\n -- \uac12\uc744 \ub36e\uc5b4 \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \uc774\ub807\uac8c \ud558\uba74 \uae30\ubcf8\uac12\uc774 \ubb34\uc2dc\ub429\ub2c8\ub2e4.\n BorderSizePixel = 0;\n}\n\nprint(frame1.FrameWithBorder.BorderSizePixel)\nprint(frame2.FrameWithBorder.BorderSizePixel)\nprint(frame3.FrameWithBorder.BorderSizePixel)\n \uc774\uc81c \uadf8\ub824\ub0b8 \ud504\ub808\uc784\uc744 \ud654\uba74\uc5d0 \uadf8\ub824\ubcf4\uace0 \uc2f6\ub098\uc694? \ub2e4\uc74c \ud29c\ud1a0\ub9ac\uc5bc Mount \ub97c \ud655\uc778\ud574\ubcf4\uc138\uc694!
"},{"location":"tutorial/2_mount/","title":"Mount - \ud654\uba74\uc5d0 UI \ud45c\ud604","text":""},{"location":"tutorial/2_mount/#ui","title":"\ud654\uba74\uc5d0 UI \ub97c \ud45c\uc2dc\ud558\uae30","text":"Quad \ubaa8\ub4c8\uc5d0\uc11c \ubaa8\ub4e0 Parent \ucc98\ub9ac\ub294 Mount \ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4. Mount(to:any,...item:any?)->mounts \ud568\uc218\ub97c \uc774\uc6a9\ud558\uba74 \ub2e4\ub8e8\ub294 \uc624\ube0c\uc81d\ud2b8\uac00 \ub85c\ube14\ub85d\uc2a4 Instance \uc778\uc9c0, \ud5a5\ud6c4 \uc18c\uac1c\ub420 Quad \ud655\uc7a5 \ud074\ub798\uc2a4\uc778\uc9c0 \uc0c1\uad00\uc5c6\uc774 \uc54c\uc544\uc11c Parent \uac00 \ucc98\ub9ac\ub429\ub2c8\ub2e4.
--- StarterGui \uc548\uc5d0 ScreenGui \ub97c \ub123\uace0 \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\ub85c \uc785\ub825\ud574\ubcf4\uc138\uc694\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nMount(ScreenGui,\n Frame {\n Name = \"Wow!\";\n }\n --[[\n , Frame {} , Frame {}\n \ub354\ub9ce\uc740 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\uac19\uc774 Mount \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n ]]\n)\n"},{"location":"tutorial/2_mount/#_1","title":"\ub9c8\uc6b4\ud2b8 \uac1d\uccb4","text":"\ud3b8\uc758\ub97c \uc704\ud574\uc11c Mount \ud568\uc218\ub294 mounts \ub77c\ub294 \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. \uc774\uac83\uc744 \uc774\uc6a9\ud558\uba74 \ud544\uc694\uc5d0 \ub530\ub77c\uc11c Mount \uc0c1\ud0dc\ub97c \ud574\uc81c\ud558\uac70\ub098 \ucd94\uac00 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. mounts \uac1d\uccb4\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub97c \uac00\uc9d1\ub2c8\ub2e4.
:Unmount()
\uc774\ub807\uac8c \ud558\uba74 \ub9c8\uc6b4\ud2b8\ub41c Instance \ub97c \uc9c0\uc6cc\ubc84\ub9bd\ub2c8\ub2e4. Quad \ub294 \uc548\uc804\ud55c \uba54\ubaa8\ub9ac \uad00\ub9ac\ub97c \uc704\ud574 gc \uc758 \uae30\ub2a5\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c, gc \uc2dc\uac04\ucc28\ub85c \uc778\ud574 Store.GetObject \uc5d0\uc11c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0ac\ub77c\uc9c0\ub294\ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui,mainFrame)\n\nlocal childFrame = Frame {}\nlocal childFrameMount = Mount(mainFrame,childFrame)\nchildFrameMount:Unmount()\n-- childFrame \uc740 \ub2e8\uc21c\ud788 .Parent = nil \ub418\ub294 \uac83\uc744 \ub118\uc5b4 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uc0ac\ub77c\uc9d1\ub2c8\ub2e4\n-- \uc989, Destroy() \uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4\n :Add(item:any)
Mount \uc5d0 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc124\uc815\ud55c to \uac12\uc744 \ub530\ub77c \ubd80\ubaa8\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4.
\uc774 \ub3d9\uc791\uc740 \ub9ac\uc2a4\ud2b8\ub97c \ub9cc\ub4e4 \ub54c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc\ub85c\ub4dc \ub3d9\uc791\uc2dc \uc9c1\uc811 \uc81c\uac70\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount = Quad.Class,Quad.Mount\n\nlocal Frame = Class \"Frame\"\n\nlocal mainFrame = Frame {}\nMount(ScreenGui, mainFrame)\n\nlocal lastListMount = Mount(mainFrame)\nlocal function refreshList()\n lastListMount:Unmount() -- \uc774\uc804 children \uc744 \uc54c\uc544\uc11c \uc81c\uac70\ud569\ub2c8\ub2e4\n for i = 1,10 do\n lastListMount:Add(Frame { Name = tostring(i) })\n end\nend\n\ntask.spawn(function()\n while true do\n refreshList()\n task.wait(2)\n end\nend)\n \ub2e4\uc74c\uacfc \uac19\uc774 \uc774\uc804 children \uc744 \uac04\uc811\uc801\uc73c\ub85c \uc81c\uac70\ud558\uace0 \uc0c8\ub85c\uc6b4 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e8 ScrollFrame \uc758 \uacbd\uc6b0 CanvasPosition\uc774 \ucd08\uae30\ud654 \ub418\uc5b4\ubc84\ub9ac\ubbc0\ub85c \uc790\uc2dd\ub4e4\uc744 :Unmount() \ud558\uae30 \uc804\uc5d0 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uace0 \ub2e4\uc2dc \ubd88\ub7ec\uc640\uc57c \ud569\ub2c8\ub2e4
\ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Store.GetObject \uac00 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Store.GetObject \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4
\ubcc0\uc218\uc5d0 \ub9cc\ub4e4\uc5b4\uc9c4 \uc624\ube0c\uc81d\ud2b8\ub97c \ud558\ub098\ud558\ub098 \uc800\uc7a5\ud574\uc57c\ud558\ub098\uc694? \uc544\ub2c8\uc694, Quad \uc5d0\ub294 \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount,Store = Quad.Class,Quad.Mount,Quad.Store\n\nlocal Frame = Class \"Frame\"\n\nFrame \"mainFrame\" {\n Size = UDim2.fromScale(1,1);\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n \uc544\uc774\ub514\uc5d0 \ud5c8\uc6a9\ub418\ub294 \uae00\uc790\ub294 \ubcc0\uc218\uba85\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ub300\uc18c\ubb38\uc790, \uc22b\uc790, \uc5b8\ub354\ubc14(_) \ub97c \ud5c8\uc6a9\ud569\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc Frame \"mainFrame\" {} \uc640 \uac19\uc774 id \uac12\uc744 \uc9c0\uc815\ud574 \uc900\ub2e4\uba74 \uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8\ub294 \uadf8 \uc544\uc774\ub514\ub97c \uac00\uc9c0\uac8c \ub429\ub2c8\ub2e4. Store.GetObject(id:string)->Object? \ub294 \uc0dd\uc131\ub41c \uac1d\uccb4\uc911 \uac00\uc7a5 \uccab\ubc88\uc9f8\uc758 id \uac00 \uc77c\uce58\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ubc18\ud658\ud574 \uc90d\ub2c8\ub2e4.
local index = 1\nFrame (\"mainFrame\" .. index) {}\nprint(Store.GetObject(\"mainFrame\" .. index))\n \uc704\ucc98\ub7fc \uc0dd\uc131\uc774\ub098 \uac00\uc838\uc624\uae30\uc5d0\uc11c \uc2dd\uc744 \ub9cc\ub4e4\uc5b4 \ub123\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
"},{"location":"tutorial/3_getObject/#_2","title":"\ub2e4\ub7c9\uc758 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\ub8e8\uae30","text":"\uc8fc\uc758Store.GetObjects\uc758 \ubc18\ud658\uac12\uc778 objectList\ub294 \uce90\uc2dc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. objectList\ub97c local \uc5d0 \ub123\uace0 \uacc4\uc18d\ud574\uc11c \uc720\uc9c0\uc2dc\ud0a4\uc9c0 \ub9c8\uc2ed\uc2dc\uc624, \ubc18\ud658\uac12\uc740 \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Quad \ub294 \ub2e4\ub7c9\uc758 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\ub8e8\uae30 \ud3b8\ud558\ub3c4\ub85d Store.GetObjects(id:string)->objectList \ub77c\ub294 \ud568\uc218\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.
\uc2e4\ud5d8\uc73c\ub85c, \uc0c9\uae54\uc774 \ub79c\ub364\ud558\uac8c \ubc14\ub00c\ub294 \ud504\ub808\uc784\ub4e4\uc744 \ub9cc\ub4e4\uc5b4 \ubd05\uc2dc\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class,Mount,Store = Quad.Class,Quad.Mount,Quad.Store\n\nlocal Frame = Class \"Frame\"\n\nFrame \"mainFrame\" {\n Size = UDim2.fromScale(1,1);\n Frame \"Child\" {\n Size = UDim2.fromOffset(20,20);\n };\n Frame \"Child\" {\n Size = UDim2.fromOffset(20,20);\n Position = UDim2.fromOffset(30,0);\n };\n Frame \"Child\" {\n Size = UDim2.fromOffset(20,20);\n Position = UDim2.fromOffset(60,0);\n };\n Frame \"Child\" {\n Size = UDim2.fromOffset(20,20);\n Position = UDim2.fromOffset(90,0);\n };\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uac12\uc744 \uc77d\uac70\ub098 :Connect \ud560 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4\nStore.GetObjects(\"Child\").Size = UDim2.fromOffset(30,30)\n\n-- \ud544\uc694\uc5d0 \ub530\ub77c Store.GetObjects(\"Child\") \ub97c pairs \uc5d0 \ub123\uc5b4 for \ubb38\uc744 \uc0ac\uc6a9\ud558\uac70\ub098\n-- :Each , :EachAsync , :IsEmpty \ud568\uc218\ub97c \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\ntask.spawn(function()\n while true do\n Store.GetObjects(\"Child\"):Each(function (item, index)\n item.BackgroundColor3 = Color3.fromRGB(\n math.random(0,255),\n math.random(0,255),\n math.random(0,255)\n )\n end)\n task.wait(1)\n end)\nend\n\n-- for \ubb38\uc744 \uc774\uc6a9\ud574\uc11c \ucd9c\ub825\ud569\ub2c8\ub2e4\nfor _,child in ipairs(Store.GetObjects(\"Child\")) do\n print(child)\nend\n"},{"location":"tutorial/3_getObject/#objectlist","title":"objectList","text":"Store.GetObjects() \uc758 \ubc18\ud658 objectList \uc758 \uba54\uc18c\ub4dc\ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
:Each((item:any, index:number)->())
\uc77c\ubc18\uc801\uc778 \ubc18\ubcf5\uc785\ub2c8\ub2e4. for \ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uacfc \ud6a8\uacfc\uac00 \uac19\uc73c\ub098 \ud568\uc218\ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4
:EachAsync((item:any, index:number)->())
\ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uace0 \ubc14\ub85c\ubc14\ub85c \ub2e4\uc74c \uc544\uc774\ud15c\uc73c\ub85c \ub118\uc5b4\uac11\ub2c8\ub2e4. \ucf54\ub8e8\ud2f4\uc774 \uc774\uc6a9\ub429\ub2c8\ub2e4. wrap() \ucf54\ub8e8\ud2f4\uc744 \ubaa8\ub974\uac70\ub098, \ud544\uc694\uc131\uc774 \uc5c6\ub294\uacbd\uc6b0 \uc77c\ubc18\uc801\uc73c\ub85c :Each \ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub429\ub2c8\ub2e4
:IsEmpty()
\uc774 ObjectList \uac00 \ube44\uc5b4\uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
:Remove(indexOrItem:number|any)
objectList \uc5d0\uc11c \ud574\ub2f9\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. , & \ub97c \uc0ac\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
"},{"location":"tutorial/3_getObject/#id","title":"\uace0\uae09 ID \uc0ac\uc6a9\ud558\uae30","text":"id \uae30\ub2a5\uc744 \uc870\uae08\ub354 \uace0\uae09\uc801\uc778 \ubc29\ubc95\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
\uc6a9\ubc95\uc608\uc81c-- \ub450 \uc544\uc774\ub514\ub97c \uac00\uc9c4 \ud504\ub808\uc784\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4\nFrame \"a,b\" {}\n-- a \ub97c \uac00\uc9c4\uac83\uacfc, a \uc640 b \ub97c \uac00\uc9c4\uac83\uc744 \uac00\uc838\uc635\ub2c8\ub2e4\nStore.GetObjects(\"a,a&b\"):Each(function(item)\n print(item)\nend)\n \uc880\ub354 \uc9c1\uad00\uc801\uc778 \ud655\uc778\uc744 \uc704\ud574\uc11c \uc791\ub3d9\uc2dc\ucf1c\ubcf4\uc138\uc694.local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Mount\nlocal Mount = Quad.Store\nlocal Store = Quad.Class\n\nlocal Frame = Class \"Frame\"\n\n--\ub2e4\uc74c\uacfc \uac19\uc774 a \uc640 b \ubaa8\ub450 \uac00\uc9c4 \ud504\ub808\uc784\uc744 \uc0dd\uc131\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\nFrame \"a,b\" {\n Name = \"main\";\n Frame \"a\" {\n Name = \"Child1\";\n };\n Frame \"b\" {\n Name = \"Child2\";\n };\n}\n\n-- \ub2e4\uc74c\uacfc \uac19\uc774 a \uc640 b \ub458\ub2e4 \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nStore.GetObjects(\"a,b\"):Each(function(item, index)\n print(item.Name)\nend)\nprint(\"----\")\n\n-- \ub2e4\uc74c\uacfc \uac19\uc774 a \uc640 b \ub97c \ub3d9\uc2dc\uc5d0 \uac00\uc9c4 \uac83\uc744 \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nStore.GetObjects(\"a&b\"):Each(function(item, index)\n print(item.Name)\nend)\nprint(\"----\")\n\n-- \ub2e4\uc74c\uacfc \uac19\uc774 a\uc640b \ub97c \ub3d9\uc2dc\uc5d0 \uac00\uc9c4\uac83\uacfc, b \ub97c \uac00\uc9c4\uac83\uc744 \uc120\ud0dd\n-- \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nStore.GetObjects(\"a&b,b\"):Each(function(item, index)\n print(item.Name)\nend)\n , & GetObjects \uc5d0\ub294 \uc774 \ub450 \uc5f0\uc0b0\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0, \uc0dd\uc131\uc2dc\uc5d0\ub294 , \uc73c\ub85c \uc5ec\ub7ec \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub744\uc5b4\uc4f0\uae30\ub294 \ubb34\uc2dc\ub429\ub2c8\ub2e4
GetObject \uc5d0\ub294 \uc774 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. objectList:Remove \uba54\uc18c\ub4dc\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uacbd\uc6b0\uc5d0 \ub530\ub77c \uc774\ubbf8 \uc0dd\uc131\ud55c \uc624\ube0c\uc81d\ud2b8\uc5d0 id \ub97c \ucd94\uac00 \ud639\uc740 \uc81c\uac70\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Store = Quad.Store\n\nlocal Frame = Class \"Frame\"\n\nFrame \"testing\" {}\n\n-- \uc544\uc774\ub514\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4\nStore.AddObject(\n \"a,b\", Store.GetObject(\"testing\")\n)\n\n-- \uc544\uc774\ub514\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4\nStore.GetObjects(\"a\"):Remove(Store.GetObject(\"testing\"))\n Store.AddObject(ids:string, item:any) \ub97c \uc774\uc6a9\ud574 item \uc5d0 \uc544\uc774\ub514\ub97c \ucd94\uac00\ud558\uace0 :Remove(item:any) \ub97c \uc774\uc6a9\ud574 item \uc5d0 \uc544\uc774\ub514\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4
\ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Style \uae30\ub2a5\uc774 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Style \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4
Quad \uc5d0\uc11c\ub294 \ubc18\ubcf5\uc801\uc778 \uc18d\uc131\ub4e4\uc744 \uc904\uc5ec \uc4f8 \uc218 \uc788\ub3c4\ub85d Style \uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Style = Quad.Style\n\nlocal Frame = Class \"Frame\"\n\n-- \uc0c8\ub85c\uc6b4 \uc2a4\ud0c0\uc77c\uc744 \ud558\ub098 \ub9cc\ub4ed\ub2c8\ub2e4\nlocal myStyle = Style {\n Size = UDim2.fromOffset(20,20);\n BackgroundColor3 = Color3.fromRGB(255,255,0);\n BackgroundTransparency = 0.5;\n}\n\nFrame \"mainFrame\" {\n Size = UDim2.fromScale(1,1);\n Frame \"Child\" {\n myStyle; -- \uc2a4\ud0c0\uc77c\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4!\n };\n Frame \"Child\" {\n Position = UDim2.fromOffset(30,0);\n myStyle;\n };\n Frame \"Child\" {\n Position = UDim2.fromOffset(60,0);\n myStyle;\n };\n Frame \"Child\" {\n Position = UDim2.fromOffset(90,0);\n -- \uc2a4\ud0c0\uc77c\uc740 \ub36e\uc5b4\uc368 \uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n BackgroundColor3 = Color3.fromRGB(255,0,0);\n myStyle;\n };\n}\n\nMount(ScreenGUI,Store.GetObject(\"mainFrame\"))\n Style\uc744 \uc0ac\uc6a9\ud558\uba74 \ub9ce\uc740 \uc591\uc758 \uc18d\uc131\uc744 \ud558\ub098\uc5d0 \ubcc0\uc218\ub85c \uc9d1\uc5b4\ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Style\uc744 \uc0ac\uc6a9\ud574\uc11c \ub9ce\uc740 \uc591\uc758 \ucf54\ub4dc\ub97c \uc904\uc5ec\ubcf4\uc138\uc694
Style\uc5d0\ub294 \ud0c0\uac9f id\ub97c \uc9c0\uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Style = Quad.Style\n\nlocal Frame = Class \"Frame\"\n\n-- \uc5ec\uae30\uc5d0\ub294 & \ub098 , \uac00 \uc801\uc6a9\ub418\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4!\nStyle \"Child\" {\n Size = UDim2.fromOffset(20,20);\n BackgroundColor3 = Color3.fromRGB(255,255,0);\n BackgroundTransparency = 0.5;\n}\n\n-- \ub2e8, Style\uc740 \uba3c\uc800 \uc120\uc5b8\ud574\uc57c\ud569\ub2c8\ub2e4, Frame\uc744 \uba3c\uc800 \ub9cc\ub4e4\uace0\n-- Style\uc744 \uc120\uc5b8\ud558\uba74 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\nFrame \"mainFrame\" {\n Size = UDim2.fromScale(1,1);\n Frame \"Child\" {};\n Frame \"Child\" { Position = UDim2.fromOffset(30,0) };\n}\n\nMount(ScreenGUI,Store.GetObject(\"mainFrame\"))\n Style(id:string){ any }\ub97c \uc774\uc6a9\ud574 \uc2a4\ud0c0\uc77c\uc744 \uc120\uc5b8\ud574\uc8fc\uba74 \ub098\uc911\uc5d0 \ud574\ub2f9 id\ub97c \uac00\uc9c4 \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc \ud574\ub2f9 \uc2a4\ud0c0\uc77c\uc774 \uc801\uc6a9\ub429\ub2c8\ub2e4.
MouseButton1Click \ud639\uc740 GetPropertyChangedSignal \uac19\uc740 \ub85c\ube14 \uae30\ubcf8 \uc774\ubca4\ud2b8\ub97c \uac04\ub2e8\ud558\uac8c \ub4f1\ub85d\ud558\uace0 \uc2f6\uc73c\uc2e0\uac00\uc694? Event \ub97c \uc774\uc6a9\ud574\ubcf4\uc138\uc694.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Event = Quad.Event\nlocal Store = Quad.Store\n\nlocal TextButton = Class \"TextButton\"\nlocal Count = 0\n\nTextButton \"mainButton\" {\n Size = UDim2.fromOffset(200,200);\n Text = \"0 \ubc88 \ud074\ub9ad\ud588\uc2b5\ub2c8\ub2e4\";\n [Event \"MouseButton1Click\"] = function(self,x,y)\n Count = Count + 1\n self.Text = Count .. \" \ubc88 \ud074\ub9ad\ud588\uc2b5\ub2c8\ub2e4\"\n end;\n}\nMount(ScreenGUI, Store.GetObject(\"mainButton\"))\n"},{"location":"tutorial/5_event/#_2","title":"\uc774\ubc34\ud2b8 \ub9ac\uc2a4\ud2b8","text":"\uc801\uc6a9\uac00\ub2a5\ud55c Event \ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4
Event(name:string)
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 \uc774\ubca4\ud2b8\ub4e4\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4, MouseEnter, MouseLeave, MouseButton1Down, MouseButton1Up \ub4f1\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4 \uae30\ubcf8\uc801\uc73c\ub85c \ub85c\ube14\ub85d\uc2a4\uc758 \uae30\ubcf8 \uc774\ubca4\ud2b8\ub4e4\uacfc \ub2e4\ub974\uac8c, \uccab\ubc88\uc9f8 \uc778\uc790\ub85c self \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Frame {\n [Event \"MouseEnter\"] = function (self)\n print(self.Name .. \"\uc5d0 \ub9c8\uc6b0\uc2a4\uac00 \uc62c\ub77c\uc654\uc2b5\ub2c8\ub2e4\")\n end;\n}\n local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal TextButton = Class \"TextButton\"\n\nTextButton \"mainButton\" {\n Size = UDim2.fromOffset(200,200);\n [Event \"MouseEnter\"] = function (self)\n print(\"\ubc84\ud2bc\uc774 \ud074\ub9ad\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n end;\n}\nMount(ScreenGUI, Store.GetObject(\"mainButton\"))\n Event.Created
\uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub418\uc5c8\uc744 \ub54c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c self \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nFrame {\n [Event.Created] = function (self)\n print(self.Name .. \"\uc774 \uc0dd\uc131\ub418\uc5c8\uc5b4\uc694\")\n end;\n}\n \uc8fc\uc758 Event.Created \uac00 \uc2e4\ud589\ub420 \ub54c\ub294 Parent \uac12\uc774 \uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. self.Parent \ub294 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. Class.Extend \uc5d0\uc11c\ub294 AfterRender \ub97c \uc774\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.
Event.CreatedAsync
Event.Created \uc640 \ube44\uc2b7\ud558\uc9c0\ub9cc, \ucf54\ub8e8\ud2f4 \uc548\uc5d0\uc11c \uc791\ub3d9\ud569\ub2c8\ub2e4. objectList:EachAsync() \ucc98\ub7fc \ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nFrame {\n Frame {\n Name = \"A\";\n [Event.CreatedAsync] = function (self)\n -- \uc774 \ud568\uc218\uac00 \ub05d\ub098\uc9c0 \uc54a\ub354\ub77c\ub3c4 \ub2e4\uc74c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub420 \uc218 \uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4\n task.wait(5)\n end;\n };\n Frame {\n Name = \"B\";\n [Event.Created] = function (self)\n print(self.Name .. \"\uac00 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4\")\n end;\n };\n}\n \uc8fc\uc758 Event.CreatedAsync \uac00 \uc2e4\ud589\ub420 \ub54c\ub294 Parent \uac12\uc774 \uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. self.Parent \ub294 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4.
Event.Prop(propertyName:string)
\ud504\ub85c\ud37c\ud2f0 \uac12\uc774 \ubcc0\uacbd\ub428\uc744 \uc5f0\uacb0\ud569\ub2c8\ub2e4.
-- \uc6a9\ubc95\nTextBox {\n Text = \"\uc544\ubb34\uac70\ub098 \uc785\ub825\ud558\uc138\uc694\";\n [Event.Prop \"Text\"] = function (self,text)\n -- \ud3b8\uc758\uc0c1\uc758 \uc774\uc720\ub85c \ubcc0\uacbd\ub41c \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4\n print(text)\n end;\n}\n"},{"location":"tutorial/6_tween/","title":"Tween - \ud2b8\uc708\ud6a8\uacfc","text":""},{"location":"tutorial/6_tween/#_1","title":"\ud2b8\uc704\ub2dd","text":"Quad\uc5d0\ub294 \ud2b8\uc708\uc744 \ub3c4\uc640\uc8fc\ub294 \ubaa8\ub4c8\uc774 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud2b8\uc708 \ubaa8\ub4c8\uc740 \ub2e8\uc21c\ud55c Instance\ub4e4\uc744 \ub118\uc5b4\uc11c table \ud615\uc2dd\ub3c4 \ud2b8\uc708\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ub098\uc911\uc5d0 \ucee4\uc2a4\ud140 \uc624\ube0c\uc81d\ud2b8\ub97c \ud2b8\uc708\ud560 \ub54c \uc720\uc6a9\ud569\ub2c8\ub2e4. Quad \uc5d0\uc11c\ub294 \uc2e4\uc81c\ub85c \uc9c1\uc811\uc801\uc73c\ub85c Tween \uc744 \uc0ac\uc6a9\ud560 \uc77c\uc740 \uc801\uc73c\uba70 \ucd94\ud6c4 \uc124\uba85\ub418\ub294 register:Tween()\ub85c \uc0ac\uc6a9\ud558\ub294\uac83\uc774 \uad8c\uc7a5\ub429\ub2c8\ub2e4.
\ud2b8\uc708\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ub2e4\uc74c\uacfc \uac19\uc774 \uc218\ud589\ud569\ub2c8\ub2e4.
\uc6a9\ubc95\uc608\uc81c - \uc6c0\uc9c1\uc774\ub294 \ubc84\ud2bcTween.RunTween(myFrame,{\n -- \ud2b8\uc708 \uc635\uc158\n Easing = Tween.Easing.Expo;\n Direction = Tween.Directions.Out;\n Time = 1;\n ...\n},{\n -- \ud504\ub85c\ud37c\ud2f0 \ubaa9\ub85d\n})\n \ud074\ub9ad\uc2dc \uc6c0\uc9c1\uc774\ub294 \ubc84\ud2bc\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4.local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Tween = Quad.Tween\n\nlocal Frame = Class \"Frame\"\nlocal TextButton = Class \"TextButton\"\nlocal on = false\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(300,300);\n BackgroundColor3 = Color3.fromRGB(255,255,255);\n TextButton \"Child\" {\n Text = \"Click Me!\";\n BackgroundColor3 = Color3.fromRGB(255,100,255);\n Position = UDim2.fromOffset(80,100);\n Size = UDim2.fromOffset(20,20);\n [Event \"MouseButton1Click\"] = function(self,x,y)\n on = not on\n Tween.RunTween(self,{\n -- \ud2b8\uc708 \uc635\uc158\uc785\ub2c8\ub2e4. \uc544\ub798\uc5d0\uc11c \uc124\uba85\ub429\ub2c8\ub2e4\n Easing = Tween.Easing.Expo;\n Direction = Tween.Directions.Out;\n Time = 1;\n },{\n -- \ud2b8\uc708\ud560 \ubaa9\ud45c \ud504\ub85c\ud37c\ud2f0\uc785\ub2c8\ub2e4\n Position = on\n and UDim2.fromOffset(200,100)\n or UDim2.fromOffset(80,100);\n })\n end;\n };\n}\n\nMount(ScreenGUI, Store.GetObejct(\"mainFrame\"))\n"},{"location":"tutorial/6_tween/#_2","title":"\ud2b8\uc708 \uc635\uc158","text":"\ud2b8\uc708\uc5d0\ub294 \ud2b8\uc708 \uc635\uc158\uc774 \ub4e4\uc5b4\uac00\uba70, \uc5ec\uae30\uc5d0\ub294 \ud2b8\uc708\uc758 \ubc29\ud5a5, \uac00\uac10\uc18d, \uc2dc\uac04 \ub4f1\uc744 \uc124\uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub123\uc744 \uc218 \uc788\ub294 \ud2b8\uc708 \uc635\uc158\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
Option Time:number?
\ud2b8\uc708\uc758 \ucd1d \uae38\uc774\ub97c \uc815\ud569\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 1\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
Option Easing:string|(index:number)->number?
\ud2b8\uc708\uc758 \uac00\uac10\uc18d \uc815\ub3c4\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Easings.Linear\uc640 \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud639\uc740 \ud544\uc694\uc5d0 \ub530\ub77c \ud568\uc218\ub97c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ud568\uc218\ub97c Easing \uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uccab\ubc88\uc9f8 \uc778\uc790\ub85c 1\ucc28 \uc9c4\ud589\ub3c4 (Linear, 0 \uc5d0\uc11c 1 \uc0ac\uc774\uc758 \uac12) \uac12\uc774 \uc8fc\uc5b4\uc9c0\uba70, \uacc4\uc0b0 \uacb0\uacfc\ub85c \uc2e4\uc81c \uc801\uc6a9\ub420 \uc704\uce58\ub97c \ubc18\ud658\ud574\uc57c\ud569\ub2c8\ub2e4. \ubc18\ud658\uac12\uc740 \uc74c\uc218\uc774\uac70\ub098 1 \ubcf4\ub2e4 \ud074 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Exp2\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \ud568\uc218\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option Direction:string?
\ud2b8\uc708\uc774 \uc9c4\ud589\ub418\ub294 \ubc29\ud5a5\uc785\ub2c8\ub2e4. \ubb38\uc790\uc5f4 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, Tween.Directions.Out\uacfc \uac19\uc774 \uc5f4\uac70\ud615 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ubb34 \uac12\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 Out\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \ubc29\ud5a5\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc124\uba85\uacfc \ubbf8\ub9ac\ubcf4\uae30\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694 Option CallBack:{[number|\"*\"|string]:(Item:any, Alpha:number, AbsolutePercent:number)->()}?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uc2e4\ud589\uc911\uc778 \ub3c4\uc911\uc5d0 \ud568\uc218\ub97c \uc2e4\ud589\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b8\uc708\uc758 \uc9c4\ud589 \uc815\ub3c4\uc5d0 \ub530\ub77c\uc11c \ud55c\ubc88 \ud568\uc218\uac00 \uc2e4\ud589\ub418\uac70\ub098 \ud2b8\uc708 \uc9c4\ud589\uc911 \uacc4\uc18d\ud574\uc11c \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc778\ub371\uc2a4\uac00 \uc22b\uc790\uc778 \uacbd\uc6b0 \ud574\ub2f9 \uc9c0\uc810\uc744 \ub118\uc744 \ub54c \ud568\uc218\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc73c\uba70, \"*\" \ub97c \uc778\ub371\uc2a4\ub85c \uc0ac\uc6a9\ud558\uba74 \ubaa8\ub4e0 \ubd80\ubd84\uc5d0\uc11c \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \ud568\uc218\uc5d0\ub294 \ud3b8\uc758\uc0c1 \ud2b8\uc708\uc744 \ud558\uace0\uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \uc704\uce58\uac12, \uc2dc\uac04\ub9cc\uc744 \uace0\ub824\ud55c 1\ucc28 \uc704\uce58\uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Option OnStepped:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 \"*\" \ub97c \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Ended:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack \uc5d0 1\uc744 \ub123\uc740\uac83\uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac00\uc9c0\ub294 \ubcc4\uce6d\uc785\ub2c8\ub2e4
Option Getter:(Item:any, Property:string)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc5bb\uc73c\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Option Getter:(Item:any, Property:string, Value:Lerpable)->any?
\uc120\ud0dd\uc801\uc778 \ud544\ub4dc\uc774\uba70, \ud2b8\uc708\uc774 \uac12\uc744 \uc124\uc815\ud558\ub824 \ud560 \ub54c \uc0ac\uc6a9\ud560 \ud568\uc218\uc785\ub2c8\ub2e4. \ud568\uc218\uc5d0 \ud2b8\uc708\ud558\uace0 \uc788\ub294 \uc624\ube0c\uc81d\ud2b8, \ud504\ub85c\ud37c\ud2f0 \uc774\ub984, \uc124\uc815\ud560 \uac12\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.
Warningregister:Tween() \uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Quad \uc758 \ud2b8\uc708\uc5d0\ub294 \ud2b8\uc708\uc744 \uba48\ucd94\uac70\ub098 \ud2b8\uc708\uc911\uc778\uc9c0 \ud655\uc778\ud558\ub294 \ub4f1\uc758 \uc791\uc5c5\uc744 \ud560 \uc218 \uc788\ub294 \uc5ec\ub7ec \ud568\uc218\ub4e4\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4. Tween \uc548\uc758 \ubaa8\ub4e0 \ud568\uc218\uc640 \uac12\ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
Tween.RunTween(Item:any, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)->TweenHandler
\ud2b8\uc708\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \ud2b8\uc708 \uc635\uc158\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 TweenOptions \ubb38\uc11c\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Ended, OnStepped, Setter, Getter \uac12\uc774 \uc124\uc815\ub418\uba74 Option \uc548\uc758 \uac12\ubcf4\ub2e4 \uc6b0\uc120\uc801\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uae30\ub2a5\uc740 TweenOptions\uc758 \ub0b4\uc6a9\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0ac \uc218 \uc788\ub3c4\ub85d TweenHandler \uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. \ub2e4\ub978 \ud2b8\uc708\uc774 \ubcc0\uacbd\uc911\uc778 \uc18d\uc131\uc774 \ub2e4\uc2dc \ud2b8\uc708\ud558\ub3c4\ub85d \ud638\ucd9c\ub418\uba74, \uc774\uc804 \ud2b8\uc708\uc5d0\uc11c \ud574\ub2f9 \uc18d\uc131\uc740 \ud2b8\uc708\uc774 \uc911\ub2e8\ub418\uba70 \uc0c8\ub85c\uc6b4 \ud2b8\uc708\uc73c\ub85c \ub36e\uc5b4\uc4f0\uae30 \ub429\ub2c8\ub2e4.
Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.RunTweens(Items:{[number]:any}, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)
Tween.RunTween \uc640 \uac19\uc73c\ub098 \uc5ec\ub7ec \uc624\ube0c\uc81d\ud2b8\ub97c \ud55c\uaebc\ubc88\uc5d0 \ud2b8\uc708\ud569\ub2c8\ub2e4. \uc544\ubb34\uac83\ub3c4 \ubc18\ud658\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
Tween.RunTween({myFrame1, myFrame2, myFrame3},{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n Tween.StopTween(ItemOrHandler:TweenHandler|any)
\ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4. TweenHandler \ub610\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc5b4 \uba48\ucd9c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8\ub97c \ub123\uc73c\uba74 \uadf8 \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc2e4\ud589\uc911\uc778 \ubaa8\ub4e0 \ud2b8\uc708\uc744 \uba48\ucda5\ub2c8\ub2e4.
local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(Handler)\n local Handler = Tween.RunTween(myFrame,{\n Time = 1;\n},{\n Position = UDim2.new(1,0,1,0);\n})\n\nTween.StopTween(myFrame)\n Tween.StopPropertyTween(Item:any, PropertyName:string)
\uc624\ube0c\uc81d\ud2b8\uc5d0 \ud2b9\uc815 \ud504\ub85c\ud37c\ud2f0\uc758 \ud2b8\uc708\uc744 \uc911\ub2e8\uc2dc\ud0b5\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.StopPropertyTween(ItemOrHandler:IsTweening|any)->boolean
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8 \ub610\ub294 TweenHandler \ub85c \ud2b8\uc708\uc774 \uc9c4\ud589\uc911\uc778\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4.
Tween.IsPropertyTweening(Item:any, PropertyName:string)
\ud574\ub2f9 \uc624\ube0c\uc81d\ud2b8\uc758 \ud504\ub85c\ud37c\ud2f0\uac00 \ud2b8\uc708\uc911\uc774\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud569\ub2c8\ub2e4. TweenHandler \ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Easing =\n\"Linear\" // \uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615\n|\"Quint\" // 5 \uc81c\uacf1\n|\"Quart\" // \ub124\uc81c\uacf1\n|\"Cubic\" // \uc138\uc81c\uacf1\n|\"Quad\" // \uc81c\uacf1\n|\"Sin\" // \uc0ac\uc778 \ud30c\ud615\n|\"Circle\" // \uc0ac\ubd84\uc6d0\n|\"Expo\" // \uc9c0\uc218\ud615\n|\"Elastic\" // \ud0c4\uc131\n|\"Bounce\" // \ud280\uc5b4\uc624\ub984\n|\"Back\" // \ub4a4\ub85c \uac00\uac10\uc18d\n|\"Exp2\" // \ub35c \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 to 2\n|\"Exp4\" // \ub354 \uac00\ud30c\ub978 \uc9c0\uc218 i=exp(x)/max, x=-4 ~ 4\n|EasingFunction?;\n \uadf8\ub798\ud504\uc640 \ubbf8\ub9ac\ubcf4\uae30\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 Tween.Easings: { [string]: EasingFunction }
\uc774\uc9d5 \ud568\uc218\ub4e4\uc774 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4.
type Direction =\n// \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4.\n\"Out\"\n// \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4.\n|\"In\"\n//\uc911\uac04\uc5d0\uc11c \uac00\uc7a5 \ube60\ub978 \uc18d\ub3c4\ub97c \uac00\uc9c0\uba70, \ud6c4\ubc18 \ucd08\ubc18 \ubaa8\ub450 \uac10\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9d1\ub2c8\ub2e4.\n|\"InOut\"\n \uc790\uc138\ud55c \uc815\ubcf4\ub294 Easings \uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4"},{"location":"tutorial/7_quadProperty/","title":"QuadProperty - \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0","text":"\uc8fc\uc758\uc0ac\ud56d \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0\ub294 Tween \uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 register\uc758 :Tween()\uc758 \uacbd\uc6b0 \ud638\ud658\ub418\ubbc0\ub85c, \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0 \uac12\uc744 \ud2b8\uc708\ud558\ub824\uba74 \ud5a5\ud6c4 \uc124\uba85\ub418\ub294 register \uc640 \ud568\uae68 \uc0ac\uc6a9\ud574\uc57c\ud569\ub2c8\ub2e4.
Tween.RunTween, Tween.RunTweens \uc640\ub294 \uac19\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Quad \uc5d0\uc11c\ub294 \ud3b8\ub9ac\uc131\uc744 \uc704\ud574 \uc77c\ubd80 \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubaa8\ub4e0 \ud2b9\uc218 \ud504\ub85c\ud37c\ud2f0\ub294 \ud5a5\ud6c4 \uc18c\uac1c\ub418\ub294 register\uc640 \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal ImageFrame = Class \"ImageFrame\"\nImageFrame.BackgroundTransparency = 1\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n PaddingAllOffset = 50; -- Padding \uc744 50 \uc529 \ubaa8\ub4e0 \ubc29\ud5a5\uc73c\ub85c \uc90d\ub2c8\ub2e4\n BackgroundColor3 = Color3.fromRGB(40,40,40);\n ImageFrame {\n ImageColor3 = Color3.fromRGB(60,60,60);\n RoundSize = 16; -- \uc774\ubbf8\uc9c0\ub85c \ub77c\uc6b4\ub4dc \ud504\ub808\uc784\uc744 \ub9cc\ub4ed\ub2c8\ub2e4\n Size = UDim2.fromScale(1,1);\n ImageFrame {\n BackgroundColor3 = Color3.fromRGB(80,80,80);\n };\n };\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud504\ub85c\ud37c\ud2f0\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
RoundSize:number?
ImageLabel, ImageButton \uc5d0\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc18d\uc131\uc785\ub2c8\ub2e4. \uc6d0\ud615 \uc774\ubbf8\uc9c0\uc5d0 Slice\ub97c \uc774\uc6a9\ud574 \ub465\uadfc \ud504\ub808\uc784\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c UICorner\ubcf4\ub2e4 \ubd80\ub4dc\ub7ec\uc6b4 \ucf54\ub108\ud6a8\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.
Corner:number?
\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 UI\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. UICorner\ub97c \uc774\uc6a9\ud574 \ubaa8\uc11c\ub9ac \ubd80\ubd84\uc744 \ub465\uae00\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc790\uc2dd \uc624\ube0c\uc81d\ud2b8\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
PaddingAll:UDim?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc0c1\ud558\uc88c\uc6b0 \ubaa8\ub450 \uac19\uc740 \uac12\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. PaddingAllOffset \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
PaddingAllOffset:number?
UIPadding\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. PaddingAll\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc791\ub3d9\ud558\ub098, Offset\uac12\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. PaddingAll \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
Scale:number?
UIScale\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. UIScale.Scale \uacfc \uac19\uc740 \ud6a8\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4
\ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Store.GetStore \uac00 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Store.GetStore \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4
\ub808\uc9c0\uc2a4\ud130\ub294 \ud55c \uac12\uc774 \ubcc0\uacbd\ub420 \ub54c, \uadf8 \uac12\uc744 \uc0ac\uc6a9\ud55c \uacf3\uc774 \uc5c5\ub370\uc774\ud2b8 \ub420 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4e4\uc5b4\uc8fc\ub294 Quad \uc758 \uc8fc\uc694 \uae30\uc220\uc785\ub2c8\ub2e4. \ucd94\ud6c4 \uc124\uba85\ub420 Class.Extend \uc640\ub3c4 \uac19\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
\ub808\uc9c0\uc2a4\ud130\ub294 \uc774\ub7ec\ud55c \uc2dc\ub098\ub9ac\uc624\uc5d0\uc11c \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
\uc774\uc678\uc5d0\ub3c4 \ub808\uc9c0\uc2a4\ud130\uc758 \ud65c\uc6a9 \ubc29\ubc95\uc740 \ubb34\uad81\ubb34\uc9c4\ud569\ub2c8\ub2e4. \ub808\uc9c0\uc2a4\ud130\uc758 \uc0ac\uc6a9\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
local myStore = Store.GetStore(\"myStore\")\nmyStore.color = Color3.fromRGB(255,255,255)\nFrame { BackgroundColor3 = myStore \"color\" }\n-- \uc5f0\ub3d9\ub41c \ud504\ub808\uc784\ub3c4 \uc5c5\ub370\uc774\ud2b8 \ub429\ub2c8\ub2e4\nmyStore.color = Color3.fromRGB(0,0,0)\n \uc8fc\uc758 \uad6c\ud604\uc758 \ubcf5\uc7a1\uc131\uc758 \uc774\uc720\ub85c \ub808\uc9c0\uc2a4\ud130\ub294 \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc\uc5d0\ub9cc \ub4f1\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
local myFrame = Frame{}\nFrame.BackgroundColor3 = myStore \"color\"\n \uc704\ucc98\ub7fc \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc608\uc2dc \ucf54\ub4dc\ub85c \uc815\ud655\ud558\uac8c \ud655\uc778\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\n-- \ub808\uc9c0\uc2a4\ud130\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub294 \ud14c\uc774\ube14\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.\n-- \uc5ec\uae30\uc5d0 \ub2f4\uc544\ub0b4\ub294 \uac12\uc744 \uc5c5\ub370\uc774\ud2b8 \ud558\ub294 \uacbd\uc6b0 \ub808\uc9c0\uc2a4\ud130\ub85c \uc5f0\uacb0\ub41c\n-- \uc624\ube0c\uc81d\ud2b8\ub4e4\ub3c4 \uac19\uc774 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4.\nlocal myStore = Store.GetStore(\"myStore\")\nlocal TextLabel = Class \"TextLabel\"\n\nmyStore.Text = \"0 \ucd08 \uc9c0\ub0a8\"\nmyStore.Color = Color3.fromRGB(255,100,255)\n\nTextLabel \"mainLabel\" {\n Size = UDim2.fromOffset(100,200);\n -- myStore \uc758 Text \uac12\uc774 \ubcc0\uacbd\ub428\uc744 \ucd94\uc801\ud558\uace0, Text \uac12\uc744\n -- \uc5c5\ub370\uc774\ud2b8 \uc2dc\ud0b5\ub2c8\ub2e4.\n Text = myStore \"Text\";\n\n -- \uc774\uac83\uc740 \ub808\uc9c0\uc2a4\ud130\ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uc774 \uc544\ub2c8\ub77c \ub2e8\uc21c\ud788 \uac12\ub9cc\n -- \ubd88\ub7ec\uc640 \ub123\uc5b4\uc8fc\ub294 \uac83\uc785\ub2c8\ub2e4. \uc790\ub3d9 \uc5c5\ub370\uc774\ud2b8\uac00 \uac00\ub2a5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n BackgroundColor3 = myStore.Color;\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainLabel\"))\n\n-- \ubc14\uafb8\ub354\ub77c\ub3c4 \ub808\uc9c0\uc2a4\ud130\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc544 \ubc18\uc601\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\nmyStore.Color = Color3.fromRGB(255,255,255)\n\nlocal Count = 1\nwhile task.wait(1) do\n -- \uac12\uc744 \uc5c5\ub370\uc774\ud2b8 \ud569\ub2c8\ub2e4. \ud14d\uc2a4\ud2b8 \ub77c\ubca8\ub3c4\n -- \uc790\ub3d9\uc801\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ub429\ub2c8\ub2e4.\n myStore.Text = Count .. \" \ucd08 \uc9c0\ub0a8\"\n Count = Count + 1\nend\n"},{"location":"tutorial/8_register/#_2","title":"\ub808\uc9c0\uc2a4\ud130 \uba54\uc18c\ub4dc","text":"\ub808\uc9c0\uc2a4\ud130\uc5d0\ub294 \uc5ec\ub7ec\uac00\uc9c0 \uba54\uc18c\ub4dc\uac00 \ub2f4\uaca8\uc788\uc2b5\ub2c8\ub2e4. \uc774 \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74 \ub808\uc9c0\uc2a4\ud130\ub97c \ubcf4\ub2e4 \ub354 \ub2e4\uc591\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
register \ud2b9\uc218 \uba54\uc18c\ub4dc\uac00 \uc801\uc6a9\ub418\ub294 \uc21c\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
:Add(value:any)->register
\uac12\uc5d0 \ub354\ud558\uae30\ub97c \ucde8\ud569\ub2c8\ub2e4. \uc74c\uc218\ud615\ud0dc\uac00 \uc81c\uacf5\ub418\ub294 \uacbd\uc6b0 \ube7c\uae30 \ucc98\ub7fc \uc791\ub3d9\ud569\ub2c8\ub2e4. number, Udim, UDim2, Color3, Vector2 \ub4f1 \ub354\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0\uac83\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.pos = UDim2.fromOffset(100,0)\n\nFrame \"mainFrame\" {\n Position = myStore \"pos\":Add(UDim2.fromOffset(0,100));\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nwhile true do\n myStore.pos = myStore.pos + UDim2.fromOffset(10,0)\n task.wait(2)\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:With((store:valueStore, newValue:any, key:string)->())->register
\ud568\uc218 \ub610\ub294 \ud14c\uc774\ube14\uc5d0\uc11c \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. Add \ubcf4\ub2e4 \ub098\uc911\uc5d0 \uc218\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uac12\uc5d0\ub294 \ud3b8\uc758\uc0c1 \uc2a4\ud1a0\uc5b4 \uac12\uc774 \uc81c\uacf5\ub418\uba70, \uc0c8\ub85c\uc6b4 \uac12\uacfc, \ubc14\ub010 \uac12\uc5d0 \ub300\ud55c \ud0a4\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4
\uac04\ub7b5\ud55c \uc6a9\ubc95\uc608\uc81c - \ud568\uc218\uc608\uc81c - \ud14c\uc774\ube14myStore \"size\":With(function (_,value)\n return value * 2\nend)\n width \uac12\uc5d0 \ub9de\ucdb0 \uc790\ub3d9\uc73c\ub85c UI \uac00 \uc5c5\ub370\uc774\ud2b8\ub418\ub3c4\ub85d \ub9cc\ub4ed\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.topbarSize = 60\nmyStore.width = 200\n\n-- \ub808\uc9c0\uc2a4\ud130\ub97c \ubcc0\uc218\ub85c \ub450\uace0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4\nlocal listItemSize = myStore \"width\":With(function()\n return UDim2.fromOffset(myStore.width,60)\nend)\n\nFrame \"mainFrame\" {\n Class \"UIListLayout\" { SortOrder = Enum.SortOrder.LayoutOrder };\n\n -- \uc0ac\uc774\uc988\uac00 width \uc5d0 \ub9de\uac8c \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4\n Size = myStore \"width\":With(function ()\n return UDim.fromOffset(store.width,400)\n end);\n\n Frame \"Topbar\" {\n LayoutOrder = 1;\n BackgroundColor3 = Color3.fromRGB(255,0,0);\n -- \uc774\ub807\uac8c \uc5ec\ub7ec \uac12\uc744 \ubb36\uc5b4\uc11c \ub450 \uac12\uc774 \ubcc0\uacbd\ub428, \ud639\uc740 \uadf8\uc774\uc0c1\uc744\n -- \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n Size = myStore \"topbarSize,width\":With(function()\n return UDim2.fromOffset(myStore.width,myStore.topbarSize)\n end);\n }\n Frame \"ListItem\" {\n LayoutOrder = 2;\n BackgroundColor3 = Color3.fromRGB(0,255,0);\n Size = listItemSize;\n };\n Frame \"ListItem\" {\n LayoutOrder = 3;\n BackgroundColor3 = Color3.fromRGB(0,0,255);\n Size = listItemSize;\n };\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- width \uac12\uc744 \ubcc0\uacbd\ud574\ubcf4\uc138\uc694\nwhile true do\n myStore.width = myStore.width + 10\n task.wait(1)\nend\n colors \ud14c\uc774\ube14 \uc548\uc5d0 \uc788\ub294 \uc0c9\uae54\ub4e4\uc744 \ub3cc\uc544\uac00\uba70 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nlocal colors = {\n Color3.fromRGB(255,255,255);\n Color3.fromRGB(255,255,0);\n Color3.fromRGB(0,255,255);\n Color3.fromRGB(255,0,255);\n Color3.fromRGB(255,0,0);\n Color3.fromRGB(0,255,0);\n Color3.fromRGB(0,0,255);\n}\nmyStore.color = 1\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n -- colors \uc5d0\uc11c \uc778\ub371\uc2f1\ud574 \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4\n BackgroundColor3 = myStore \"color\":With(colors);\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\n-- \uc778\ub371\uc2a4\ub97c \uc21c\ud68c\ud569\ub2c8\ub2e4\nwhile task.wait(1) do\n myStore.color = (i-1)%(#colors)+2\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:Tween(options:TweenOptions)->register
\ud2b8\uc708\uc744 \uc774\uc6a9\ud574 \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4(\ucc98\uc74c \uc624\ube0c\uc81d\ud2b8 \uc0dd\uc131\uc2dc\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc74c) \uc635\uc158\uc740 Tween \ubb38\uc11c\uc5d0 \ub098\uc640\uc788\ub294 \uc635\uc158\uacfc \uac19\uc2b5\ub2c8\ub2e4.
\uac04\ub7b5\ud55c \uc6a9\ubc95\uc608\uc81c - \ud55c\uaebc\ubc88\uc5d0 \uc774\ub3d9-- Tween \uc635\uc158\uc744 \ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nmyStore \"size\":Tween{ Time = 2 }\n \ud504\ub808\uc784\uc744 \ud55c\uaebc\ubc88\uc5d0 \uc6c0\uc9c1\uc785\ub2c8\ub2e4.
local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\nlocal Style = Quad.Style\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\nmyStore.pos = UDim2.fromOffset(50,0)\nStyle \"TweenFrame\" {\n Size = UDim2.fromOffset(50,50);\n BackgroundColor3 = Color3.fromRGB(255,100,255);\n}\n\nFrame \"mainFrame\" {\n BackgroundColor3 = Color3.fromRGB(255,255,255);\n Size = UDim2.fromOffset(500,500);\n Frame \"TweenFrame\" {\n Position = myStore \"pos\":Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,100))\n :Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,200))\n :Tween{Time = 2};\n };\n Frame \"TweenFrame\" {\n Position = myStore \"pos\"\n :Add(UDim2.fromOffset(0,300))\n :Tween{Time = 2};\n }\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nlocal on = false\nwhile true do\n on = not on\n myStore.pos = on and UDim2.fromOffset(400,0) or UDim2.fromOffset(50,0)\n task.wait(1.5) -- \ud2b8\uc708\uc740 \ub36e\uc5b4 \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\n -- \ub530\ub77c\uc11c 2 \ucd08\uc778 \uae38\uc774\ubcf4\ub2e4 \ub354 \ube68\ub9ac \ubc14\uafd4\ub3c4 \uc624\ub958\uac00 \uc77c\uc5b4\ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\nend\n \uc8fc\uc758 \uad6c\uc870\uc758 \ubcf5\uc7a1\uc131\uc744 \ud53c\ud558\uace0\uc790, \uc5ec\ub7ec\ubc88 \ud638\ucd9c\uc2dc \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \ud638\ucd9c\ub41c \uac83\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4
:Default(value:any)->register
\uae30\ubcf8\uac12\uc744 \uc815\ud569\ub2c8\ub2e4. \ub9cc\uc57d \uac12\uc774 nil \uc778 \uacbd\uc6b0 \uc774 \uac12\uc744 \uc0ac\uc6a9\ud558\uac8c \ub429\ub2c8\ub2e4. Add \ub098 With \ub4f1 \ub2e4\ub978\uac83\uc5d0 \uc601\ud5a5\ubc1b\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-- \uc6a9\ubc95\nlocal ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Class = Quad.Class\nlocal Mount = Quad.Mount\n\nlocal Frame = Class \"Frame\"\nlocal myStore = Store.GetStore(\"myStore\")\n\nFrame \"mainFrame\" {\n Size = UDim2.fromOffset(200,200);\n -- color \uac12\uc774 \uc5c6\uc73c\ubbc0\ub85c Default \uc548\uc758 \uac12\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\n BackgroundColor3 = myStore \"color\"\n :Default(Color3.fromRGB(255,0,0));\n}\n\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\ntask.wait(5)\nmyStore.color = Color3.fromRGB(0,255,0)\n \uc8fc\uc758 :Register(<INPUT>(store:valueStore, newValue:any, key:string)->())->INPUT
\ub808\uc9c0\uc2a4\ud130\uc5d0 \ud568\uc218\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4. \uac12\uc774 \ubcc0\uacbd\ub418\uba74 \ud568\uc218\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uac12\uc5d0\ub294 \ud3b8\uc758\uc0c1 \uc2a4\ud1a0\uc5b4 \uac12\uc774 \uc81c\uacf5\ub418\uba70, \uc0c8\ub85c\uc6b4 \uac12\uacfc, \ubc14\ub010 \uac12\uc5d0 \ub300\ud55c \ud0a4\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4
newValue \uc5d0\ub294 :Add, :With, :Tween, :Default \uac00 \ub530\ub85c \uacc4\uc0b0\ub418\uc9c0 \uc54a\uc73c\uba70, \uc124\uc815\ub41c \uac12\uc744 \uc544\ubb34 \uac00\uacf5 \uc5c6\uc774 \uc81c\uacf5\ud569\ub2c8\ub2e4
myStore.test = 1\n-- \ubc18\ud658 \uac12\uc740 \uc785\ub825\uc73c\ub85c \ub123\uc740 \ud568\uc218\uc785\ub2c8\ub2e4. !\uaf2d \uc800\uc7a5\ud574\uc57c\ud569\ub2c8\ub2e4\n-- :Register \ub294 \ud568\uc218\uac00 \uc0ac\ub77c\uc9c0\uc9c0 \uc54a\ub3c4\ub85d \uac12\uc744 \uc720\uc9c0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\n-- \ub9cc\uc57d \ubc84\ub9b4 \uacbd\uc6b0 \uc77c\uc815 \uc2dc\uac04 \ub4a4 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4\nlocal func = myStore \"test\":Register(function(_,newValue)\n -- \uac12 \ubcc0\uacbd\uc2dc \ucd9c\ub825\ub429\ub2c8\ub2e4\n print(newValue)\nend)\nmyStore.test = 2\n myStore.test1, myStore.test2 \uac00 \ubcc0\ud654\ud558\uba74 print \ud568\uc218\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.
local Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\n\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.test1 = 1\nmyStore.test2 = \"Hello\"\n\nlocal func = myStore \"test1,test2\":Register(function()\n print(myStore.test1,myStore.test2)\nend)\n\nmyStore.test1 = 2\n \uc8fc\uc758 Register \uc548\uc5d0 \ub4e4\uc5b4\uac04 \ud568\uc218\ub294 GC \uc548\uc815\uc131\uc744 \uc704\ud574\uc11c \uc57d\ud55c \ucc38\uc870\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \ud568\uc218\ub97c \uc800\uc7a5\ud574\uc57c\ud569\ub2c8\ub2e4.
"},{"location":"tutorial/9_lang/","title":"Lang - \uc5b8\uc5b4\uad00\ub9ac","text":"\uc77d\uae30 \uc804...\ubaa8\ub4c8 \uc124\uc815\uc2dc .Init() \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 Lang \uae30\ub2a5\uc774 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc .Init(\"Project1\") \ucc98\ub7fc \uc544\uc774\ub514\ub97c \ubd80\uc5ec\ud558\ub294 \uacbd\uc6b0 \ub2e4\ub978 \ubaa8\ub4c8, \ub85c\uceec\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc811\uadfc\ud558\ub354\ub77c\ub3c4 \uac19\uc740 QuadId \ub97c \uac00\uc84c\ub2e4\uba74 Lang \uc740 \uacf5\uc720\ub429\ub2c8\ub2e4
Quad \uc5d0\ub294 \uadc0\ucc2e\uc740 \uc5b8\uc5b4\uad00\ub9ac\ub97c \uc790\ub3d9\uc73c\ub85c \ud574\uc8fc\ub294 \uae30\ub2a5\uc774 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 register \uc640 \uc5f0\ub3d9\ud574 \uc801\uc740 \uc904\uc758 \ucf54\ub4dc\ub85c \ubcc0\ud558\ub294 \ud14d\uc2a4\ud2b8\ub3c4 \uc5b8\uc5b4\uc5d0 \ub9de\uac8c \ucd9c\ub825\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
\ubc88\uc5ed \ud14c\uc774\ube14\uc740 Lang.New(LangName:string,{ [Locale]: string|(options)->string }) \ub2e4\uc74c\uc744 \uc774\uc6a9\ud574 \ub9cc\ub4e4 \uc218 \uc788\uc73c\uba70. Lang(LangName:string)(options) \ub85c UI \uc5d0 \uc801\uc6a9\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.
Lang.New(\"Test\",{\n [Lang.Locales.Korean] = \"{won} \uc6d0\";\n [Lang.Locales.Default] = \"{won} Won\";\n})\nTextLabel {\n Lang \"Test\" {\n won = 100;\n };\n}\n 1\ucd08\uac00 \uc9c0\ub0a0 \ub54c \ub9c8\ub2e4 \uce74\uc6b4\ud2b8\ub97c \uc99d\uac00\ud569\ub2c8\ub2e4. \uc601\uc5b4 \uc0ac\uc6a9\uc790\uc5d0\uac90 \uc601\uc5b4\ub97c, \ud55c\uad6d\uc5b4 \uc0ac\uc6a9\uc790\uc5d0\uac90 \ud55c\uad6d\uc5b4\ub97c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.local ScreenGUI = script.Parent\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\nlocal Mount = Quad.Mount\nlocal Event = Quad.Event\nlocal Lang = Quad.Lang\nlocal Class = Quad.Class\n\nlocal TextButton = Class \"TextButton\"\n\nlocal myStore = Store.GetStore(\"myStore\")\nmyStore.count = 0\n\nLang.New(\"TimePassed\",{\n [Lang.Locales.Korean] = \"{count}\ucd08 \uc9c0\ub0ac\uc5b4\uc694\";\n [Lang.Locales.Default] = function (options)\n -- \ud568\uc218 \ub610\ud55c \ub4f1\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n if options.count > 1 then\n return (\"%d seconds passed\"):format(options.count)\n else\n return (\"%d second passed\"):format(options.count)\n end\n end;\n})\n\nTextButton \"mainButton\" {\n Size = UDim2.fromOffset(100,100);\n Text = Lang \"TimePassed\" {\n -- count = 1 \uc77c\ubc18\uc801\uc778 \uac12\ub3c4 \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4\n count = myStore \"count\";\n };\n [Event \"MouseButton1Click\"] = function()\n -- \ud074\ub9ad\uc2dc \uc5b8\uc5b4\uac00 \ubcc0\uacbd\ub429\ub2c8\ub2e4\n if Lang.CurrentLocale == Lang.Locales.Default then\n Lang.CurrentLocale = Lang.Locales.Korean\n else\n Lang.CurrentLocale = Lang.Locales.Default\n end\n end\n}\nMount(ScreenGUIk,Store.GetObject(\"mainButton\"))\n\nwhile task.wait(1) do\n myStore.count = myStore.count + 1\nend\n"},{"location":"tutorial/9_lang/#locale","title":"Locale \ubaa9\ub85d","text":"\ub85c\ucf00\uc77c \uac12\ub4e4\uc740 Lang.Locales\uc5d0\uc11c \uac00\uc838\uc62c \uc218 \uc788\uc73c\uba70, \uc0ac\uc6a9\uac00\ub2a5\ud55c \ub85c\ucf00\uc77c \ubaa9\ub85d\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.
Default (default) English (en_us) Spanish (es_es) French (fr_fr) Indonesian (id_id) Italian (it_it) Japanese (ja_jp) Korean (ko_kr) Russian (ru_ru) Thai (th_th) Turkish (tr_tr) Vietnamese (vi_vn) Portuguese (pt_br) German (de_de) ChineseSimplified (zh_cn) ChineseTraditional (zh_tw) Bulgarian (bg_bg) Bengali (bn_bd) Czech (cs_cz) Danish (da_dk) Greek (el_gr) Estonian (et_ee) Finnish (fi_fi) Hindi (hi_in) Croatian (hr_hr) Hungarian (hu_hu) Georgian (ka_ge) Kazakh (kk_kz) Khmer (km_kh) Lithuanian (lt_lt) Latvian (lv_lv) Malay (ms_my) Burmese (my_mm) Bokmal (nb_no) Dutch (nl_nl) Filipino (fil_ph) Polish (pl_pl) Romanian (ro_ro) Ukrainian (uk_ua) Sinhala (si_lk) Slovak (sk_sk) Slovenian (sl_sl) Albanian (sq_al) Bosnian (bs_ba) Serbian (sr_rs) Swedish (sv_se) Arabic (ar_001)
"}]} \ No newline at end of file diff --git a/docs/kr/sitemap.xml.gz b/docs/kr/sitemap.xml.gz index 93b79ba..6835101 100644 Binary files a/docs/kr/sitemap.xml.gz and b/docs/kr/sitemap.xml.gz differ diff --git a/docs/kr/todo/index.html b/docs/kr/todo/index.html index 45d9411..41a9cc4 100644 --- a/docs/kr/todo/index.html +++ b/docs/kr/todo/index.html @@ -20,7 +20,7 @@ - + @@ -56,13 +56,17 @@ + - + + + +
Quad 한국어 문서
@@ -433,6 +457,13 @@
Quad 한국어 문서
diff --git a/docs/kr/tutorial/11_extend/index.html b/docs/kr/tutorial/11_extend/index.html
index 6d8f5c0..c8447dd 100644
--- a/docs/kr/tutorial/11_extend/index.html
+++ b/docs/kr/tutorial/11_extend/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/tutorial/1_import/index.html b/docs/kr/tutorial/1_import/index.html
index 5a58c2a..31efacd 100644
--- a/docs/kr/tutorial/1_import/index.html
+++ b/docs/kr/tutorial/1_import/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/tutorial/2_mount/index.html b/docs/kr/tutorial/2_mount/index.html
index b064d16..50647c6 100644
--- a/docs/kr/tutorial/2_mount/index.html
+++ b/docs/kr/tutorial/2_mount/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
@@ -1113,7 +1137,6 @@
:Unmount()
이렇게 하면 마운트된 Instance 를 지워버립니다. Quad 는 안전한 메모리 관리를 위해 gc 의 기능에 의존하므로, gc 시간차로 인해
-Store.GetObject에서 오브젝트가 사라지는데 시간이 걸릴 수 있습니다.
1 2 3 @@ -1144,11 +1167,11 @@ -- childFrame 은 단순히 .Parent = nil 되는 것을 넘어 메모리에서 사라집니다 -- 즉, Destroy() 가 호출됩니다 |
:Add(item:any)
Mount 에 오브젝트를 추가합니다. 처음 설정한
-to값을 따라 부모가 결정됩니다.
이 동작은 리스트를 만들 때 유용할 수 있습니다. 다시로드 동작시 직접 제거가 필요하지 않습니다
1 2 @@ -1196,7 +1219,8 @@ end end) |
다음과 같이 이전 children 을 간접적으로 제거하고 새로운 오브젝트를 추가합니다. 단 ScrollFrame 의 경우 CanvasPosition이 초기화 되어버리므로 자식들을 :Unmount() 하기 전에 위치를 저장하고 다시 불러와야 합니다
다음과 같이 이전 children 을 간접적으로 제거하고 새로운 오브젝트를 추가합니다. 단 ScrollFrame 의 경우 CanvasPosition이 초기화 되어버리므로 자식들을 :Unmount() 하기 전에 위치를 저장하고 다시 불러와야 합니다
Quad 한국어 문서
diff --git a/docs/kr/tutorial/4_style/index.html b/docs/kr/tutorial/4_style/index.html
index 01f43ed..33c8107 100644
--- a/docs/kr/tutorial/4_style/index.html
+++ b/docs/kr/tutorial/4_style/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/tutorial/5_event/index.html b/docs/kr/tutorial/5_event/index.html
index 0bae947..4b4a24e 100644
--- a/docs/kr/tutorial/5_event/index.html
+++ b/docs/kr/tutorial/5_event/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/tutorial/6_tween/index.html b/docs/kr/tutorial/6_tween/index.html
index 351dec8..e4d6af0 100644
--- a/docs/kr/tutorial/6_tween/index.html
+++ b/docs/kr/tutorial/6_tween/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/tutorial/7_quadProperty/index.html b/docs/kr/tutorial/7_quadProperty/index.html
index 7e3c157..6bcc95c 100644
--- a/docs/kr/tutorial/7_quadProperty/index.html
+++ b/docs/kr/tutorial/7_quadProperty/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/tutorial/8_register/index.html b/docs/kr/tutorial/8_register/index.html
index f945f1a..de3f5d5 100644
--- a/docs/kr/tutorial/8_register/index.html
+++ b/docs/kr/tutorial/8_register/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/tutorial/9_lang/index.html b/docs/kr/tutorial/9_lang/index.html
index f46cde2..36a33fb 100644
--- a/docs/kr/tutorial/9_lang/index.html
+++ b/docs/kr/tutorial/9_lang/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
diff --git a/docs/kr/tutorial/index.html b/docs/kr/tutorial/index.html
index 30f0853..329d95b 100644
--- a/docs/kr/tutorial/index.html
+++ b/docs/kr/tutorial/index.html
@@ -20,7 +20,7 @@
-
+
@@ -56,13 +56,17 @@
+
-
+
+
+
+
Quad 한국어 문서
@@ -1117,7 +1141,9 @@ git submodule add
11
12
13
-14local Quad = require(path.to.module).Init()
+14
+15local Quad = require(path.to.module).Init()
+local IsTestMode = script.Name:match("_TESTING") -- 테스트모드 여부
local LocalPlayer = game.Players.LocalPlayer
local ScreenGUI = Instance.new("ScreenGui",
LocalPlayer and LocalPlayer.PlayerGui or game.StarterGui)
diff --git a/md/kr/assets/Quad_Logo.png b/md/kr/assets/Quad_Logo.png
new file mode 100644
index 0000000..852903e
Binary files /dev/null and b/md/kr/assets/Quad_Logo.png differ
diff --git a/md/kr/assets/Quad_MiniLogo.png b/md/kr/assets/Quad_MiniLogo.png
new file mode 100644
index 0000000..06d7abc
Binary files /dev/null and b/md/kr/assets/Quad_MiniLogo.png differ
diff --git a/md/kr/assets/Quad_MiniLogoWhite.png b/md/kr/assets/Quad_MiniLogoWhite.png
new file mode 100644
index 0000000..af58237
Binary files /dev/null and b/md/kr/assets/Quad_MiniLogoWhite.png differ
diff --git a/md/kr/assets/easingVideo.mp4 b/md/kr/assets/easingVideo.mp4
new file mode 100644
index 0000000..a141906
Binary files /dev/null and b/md/kr/assets/easingVideo.mp4 differ
diff --git a/md/kr/assets/extra.css b/md/kr/assets/extra.css
index 21ce090..1b0023f 100644
--- a/md/kr/assets/extra.css
+++ b/md/kr/assets/extra.css
@@ -38,6 +38,14 @@ table.pretty {
-webkit-backdrop-filter: blur(3px);
}
+/* 검색 열면 배경 블러효과 주기 */
+@media screen and (min-width: 60em) {
+ .md-search__overlay {
+ backdrop-filter: blur(5px);
+ -webkit-backdrop-filter: blur(5px);
+ }
+}
+
/* 디테일 안에 글자크기 */
.md-typeset details {
font-size: .72rem !important;
@@ -90,7 +98,73 @@ td {
} */
/*테마 설정*/
-[data-md-color-scheme="custom"] {
+[data-md-color-scheme="darker"] {
+ /*글자 색깔*/
+ --md-default-fg-color: rgb(225, 215, 225);
+ --md-default-fg-color--light: rgb(235, 215, 252);
+ --md-default-fg-color--lighter: rgb(105, 105, 105);
+ --md-default-fg-color--lightest: rgb(70, 70, 70);
+
+ /* 마커 */
+ --md-typeset-mark-color: hsl(271, 81%, 46%) !important;
+
+ /*배경 색깔*/
+ --md-default-bg-color: rgb(28, 25, 39);
+ --md-default-bg-color--light: hsla(259, 15%, 21%, 0.54);
+ --md-default-bg-color--lighter: hsla(259, 15%, 21%, 0.26);
+ --md-default-bg-color--lightest: hsla(259, 15%, 21%, 0.07);
+
+ /*하이라이팅 색깔 (탑바, 링크)*/
+ --md-primary-fg-color: hsl(268, 100%, 53%);
+ --md-primary-fg-color--light: hsl(271, 100%, 77%);
+ --md-primary-fg-color--dark :hsl(271, 82%, 72%);
+ --md-primary-bg-color: #f9e1ff;
+ --md-primary-bg-color--light: #f1d2ff;
+
+ /*기타 (링크 마우스 온, 탭 컬러)*/
+ --md-accent-fg-color: #bd78f5;
+ --md-accent-fg-color--transparent: hsla(0, 0%, 0%, 0.1);
+ --md-accent-bg-color: hsla(0, 0%, 100%, 1);
+ --md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
+
+ /*모르겠음*/
+ --md-typeset-color: var(--md-default-fg-color);
+ --md-typeset-a-color: var(--md-primary-fg-color--light);
+ --md-typeset-del-color: hsla(6, 90%, 60%, 0.15); /*내용 비교 하이라이터 : 지움*/
+ --md-typeset-ins-color: hsla(150, 90%, 44%, 0.15); /*내용 비교 하이라이터 : 만듬*/
+ --md-typeset-kbd-color: hsla(232, 15%, 94%, 0.12);
+ --md-typeset-kbd-accent-color: hsla(232, 15%, 94%, 0.2);
+ --md-typeset-kbd-border-color: hsla(232, 15%, 14%, 1);
+ --md-admonition-fg-color: var(--md-default-fg-color);
+ --md-admonition-bg-color: hsla(232, 0%, 100%, 0.025);
+
+ /* Footer */
+ --md-footer-fg-color: hsla(0, 0%, 100%, 1);
+ --md-footer-fg-color--light: hsla(0, 0%, 100%, 0.7);
+ --md-footer-fg-color--lighter: hsla(0, 0%, 100%, 0.3);
+ --md-footer-bg-color: hsla(232, 15%, 12%, 0.87);
+ --md-footer-bg-color--dark: hsla(232, 15%, 10%, 1);
+
+ /*Code block , Code highlighting*/
+ --md-code-fg-color: rgb(249, 235, 255); /*일반 텍스트*/
+ --md-code-bg-color: rgb(38, 31, 51); /*배경*/
+ --md-code-hl-color: hsla(218, 100%, 63%, 0.15); /*수직선(왼쪽 숫자 옆)*/
+ --md-code-hl-number-color:#f0b680; /*숫자*/
+ --md-code-hl-special-color: #d17eeb;
+ --md-code-hl-function-color: #7db9eb; /*함수명 색깔*/
+ --md-code-hl-constant-color: #50A8B3; /*내장함수 색깔*/
+ --md-code-hl-keyword-color:#C577DC; /*local, function, do, for ...*/
+ --md-code-hl-string-color: #98C279; /*문자열*/
+ --md-code-hl-name-color: var(--md-code-fg-color); /*변수명 색깔*/
+ --md-code-hl-operator-color: #50A8B3; /*연산자( = < > ^ * - + ) 색깔*/
+ --md-code-hl-punctuation-color: #A9B0BD; /*구두점 문자 ( ) , ;*/
+ --md-code-hl-comment-color: #5B626F; /*주석 색깔*/
+ --md-code-hl-generic-color: var(--md-default-fg-color--light);
+ --md-code-hl-variable-color: var(--md-default-fg-color--light);
+}
+
+/*테마 설정*/
+[data-md-color-scheme="dark"] {
/*글자 색깔*/
--md-default-fg-color: rgb(225, 215, 225);
--md-default-fg-color--light: rgb(235, 215, 252);
diff --git a/md/kr/include/easings.md b/md/kr/include/easings.md
index 7cc7736..0a769a2 100644
--- a/md/kr/include/easings.md
+++ b/md/kr/include/easings.md
@@ -1,5 +1,14 @@
-
+=== "미리보기"
+
+
+
+
+=== "그래프 개형"
+
+ 
+
+
[모든 Easing 은 여기에서 직접적으로 확인할 수 있습니다.](https://easings.net/)
`Linear`
diff --git a/md/kr/include/mounts.md b/md/kr/include/mounts.md
index 0361ef2..ce43e8c 100644
--- a/md/kr/include/mounts.md
+++ b/md/kr/include/mounts.md
@@ -1,5 +1,7 @@
`#!ts :Unmount()`
-> 이렇게 하면 마운트된 Instance 를 지워버립니다. Quad 는 안전한 메모리 관리를 위해 gc 의 기능에 의존하므로, gc 시간차로 인해 `#!ts Store.GetObject` 에서 오브젝트가 사라지는데 시간이 걸릴 수 있습니다.
+
+
+이렇게 하면 마운트된 Instance 를 지워버립니다. Quad 는 안전한 메모리 관리를 위해 gc 의 기능에 의존하므로, gc 시간차로 인해 `#!ts Store.GetObject` 에서 오브젝트가 사라지는데 시간이 걸릴 수 있습니다.
```lua
-- 용법
@@ -18,11 +20,14 @@ childFrameMount:Unmount()
-- childFrame 은 단순히 .Parent = nil 되는 것을 넘어 메모리에서 사라집니다
-- 즉, Destroy() 가 호출됩니다
```
+
---
`#!ts :Add(item:any)`
-> Mount 에 오브젝트를 추가합니다. 처음 설정한 `to` 값을 따라 부모가 결정됩니다.
+
+
+Mount 에 오브젝트를 추가합니다. 처음 설정한 `to` 값을 따라 부모가 결정됩니다.
이 동작은 리스트를 만들 때 유용할 수 있습니다. *다시로드 동작시 직접 제거가 필요하지 않습니다*
@@ -53,4 +58,4 @@ end)
```
다음과 같이 이전 children 을 간접적으로 제거하고 새로운 오브젝트를 추가합니다. 단 `ScrollFrame` 의 경우 `CanvasPosition`이 초기화 되어버리므로 자식들을 `#!ts :Unmount()` 하기 전에 위치를 저장하고 다시 불러와야 합니다
-
+
diff --git a/md/kr/license.md b/md/kr/license.md
index 7417bb1..6d61b12 100644
--- a/md/kr/license.md
+++ b/md/kr/license.md
@@ -1,6 +1,8 @@
# 라이선스
+QwreeyKawaii License v1.3
+
=== "Korean"
| Permissions | Limitations | Conditions |
@@ -11,14 +13,14 @@
| ✅ 개인적 사용 | ❎ 아무런 변경사항 없이 복제 | |
```
- qwreeykawaii license v1.3
+ QwreeyKawaii license v1.3
Copyright 2023. Qwreey [qwreey75@gmail.com]
이 라이선스는 DBAD 라이선스를 기반으로 합니다.
누구든지 이 라이선스 문서의 원본 혹은 수정본을
복사, 편집, 배포 할 수 있습니다.
- qwreeykawaii 라이선스의 복사 배포 및 수정에
+ QwreeyKawaii 라이선스의 복사 배포 및 수정에
관한 규정과 조건.
1. 당신은 이 귀여운 창작물을 가지고 어떠한
@@ -72,7 +74,7 @@
| ✅ Private use | ❎ Copy without any modification | |
```
- qwreeykawaii license v1.3
+ QwreeyKawaii license v1.3
Copyright 2023. Qwreey [qwreey75@gmail.com]
diff --git a/md/kr/todo.md b/md/kr/todo.md
index 570fb1a..994e0d4 100644
--- a/md/kr/todo.md
+++ b/md/kr/todo.md
@@ -2,6 +2,10 @@
## 진행중이거나 검토중
+### Easing 문서
+
+Easing 문서에 Out In Inout 비교 영상 만들기
+
### Spring
Spring 물리 계산을 UI 애니메이션에 적용합니다
diff --git a/md/kr/tutorial/index.md b/md/kr/tutorial/index.md
index 1433819..aba101d 100644
--- a/md/kr/tutorial/index.md
+++ b/md/kr/tutorial/index.md
@@ -112,6 +112,7 @@ local Quad = (require(path.to.module)::types.module).Init()
```lua title="실제로 UI 들을 그리는 코드들이 담깁니다."
local Quad = require(path.to.module).Init()
+ local IsTestMode = script.Name:match("_TESTING") -- 테스트모드 여부
local LocalPlayer = game.Players.LocalPlayer
local ScreenGUI = Instance.new("ScreenGui",
LocalPlayer and LocalPlayer.PlayerGui or game.StarterGui)
diff --git a/mkdocs_en.yml b/mkdocs_en.yml
index 90e4903..e30f8e4 100644
--- a/mkdocs_en.yml
+++ b/mkdocs_en.yml
@@ -58,9 +58,21 @@ theme:
# mkdocs 덮어쓰기 폴더(일반적으로 없어도 됨)
# custom_dir: overrides
+ # 테마
# 테마
palette:
- scheme: custom #youtube
+ - scheme: darker
+ toggle:
+ icon: material/brightness-3
+ name: Switch to light theme
+ # - scheme: dark
+ # toggle:
+ # icon: material/brightness-4
+ # name: Switch to light theme
+ - scheme: default
+ toggle:
+ icon: material/brightness-7
+ name: Switch to dark theme
# 세부기능 Flag
features:
@@ -112,7 +124,8 @@ markdown_extensions:
- pymdownx.highlight: # 코드 구문강조
linenums: true # 코드라인 넘버
- pymdownx.emoji: # 이모지 불러오기
- emoji_generator: !!python/name:pymdownx.emoji.to_svg
+ emoji_index: !!python/name:materialx.emoji.twemoji
+ emoji_generator: !!python/name:materialx.emoji.to_svg
- pymdownx.tasklist: # 체크박스 불러오기
custom_checkbox: true
- pymdownx.betterem: # 더 나은 글자 서식 알고리즘
diff --git a/mkdocs_kr.yml b/mkdocs_kr.yml
index 4a4d80a..768f970 100644
--- a/mkdocs_kr.yml
+++ b/mkdocs_kr.yml
@@ -95,7 +95,18 @@ theme:
# 테마
palette:
- scheme: custom #youtube
+ - scheme: darker
+ toggle:
+ icon: material/brightness-3
+ name: 밝은 테마로 변경
+ # - scheme: dark
+ # toggle:
+ # icon: material/brightness-4
+ # name: Switch to light theme
+ - scheme: default
+ toggle:
+ icon: material/brightness-7
+ name: 어두운 테마로 변경
# 세부기능 Flag
features:
@@ -115,8 +126,8 @@ theme:
font: false
# 아이콘
- favicon: ../assets/LUAICON_TP.png
- logo: ../assets/LUAICON_DARK.png
+ favicon: assets/Quad_MiniLogo.png
+ logo: assets/Quad_MiniLogoWhite.png
# 일부 설정
include_search_page: false
@@ -147,7 +158,8 @@ markdown_extensions:
- pymdownx.highlight: # 코드 구문강조
linenums: true # 코드라인 넘버
- pymdownx.emoji: # 이모지 불러오기
- emoji_generator: !!python/name:pymdownx.emoji.to_svg
+ emoji_index: !!python/name:materialx.emoji.twemoji
+ emoji_generator: !!python/name:materialx.emoji.to_svg
- pymdownx.tasklist: # 체크박스 불러오기
custom_checkbox: true
- pymdownx.betterem: # 더 나은 글자 서식 알고리즘
diff --git a/test.project.json b/test.project.json
index 297f1a0..7739097 100644
--- a/test.project.json
+++ b/test.project.json
@@ -2,8 +2,8 @@
"name": "quadTesting",
"tree": {
"$className": "DataModel",
- "ReplicatedStorage": {
- "$className": "ReplicatedStorage",
+ "ReplicatedFirst": {
+ "$className": "ReplicatedFirst",
"QuadTest": {
"$path": "./testing",
"Quad": {
diff --git a/testing/Loader.client.lua b/testing/Loader.client.lua
new file mode 100644
index 0000000..92c9afe
--- /dev/null
+++ b/testing/Loader.client.lua
@@ -0,0 +1 @@
+require(script.Parent)
diff --git a/testing/Test.lua b/testing/Test.lua
new file mode 100644
index 0000000..69a696d
--- /dev/null
+++ b/testing/Test.lua
@@ -0,0 +1,36 @@
+-- 모듈 위치로 알맞게 변경해주세요
+local Quad = script.Parent.Quad
+local tracker = require(Quad.tracker)
+
+local module = {}
+local function reload()
+ if module.unload then pcall(module.unload) end
+ if module.testingModule then pcall(module.testingModule.Destroy,module.testingModule) end
+ module.testingModule = script.Parent:Clone()
+ module.testingModule.Parent = script.Parent.Parent
+ module.testingModule.Archivable = false
+ module.testingModule.Name = module.testingModule.Name .. "_TESTING"
+ module.unload = require(module.testingModule)
+end
+
+-- 자동 리로드를 켭니다. 이미 켜져있으면 다시 로드합니다
+function module.load()
+ reload()
+ if not module.autoreload then
+ module.autoreload = tracker.new(script.Parent)
+ module.autoreload:init(); wait()
+ module.autoreload:connect("updated",reload)
+ end
+end
+
+-- 자동 리로드를 끄고 테스트로 생긴것을 지웁니다
+function module.unload()
+ if module.autoreload then pcall(module.autoreload.deinit,module.autoreload) end
+ if module.unload then pcall(module.unload) end
+ if module.testingModule then pcall(module.testingModule.Destroy,module.testingModule) end
+ module.autoreload = nil
+ module.unload = nil
+ module.testingModule = nil
+end
+
+return module
diff --git a/testing/init.lua b/testing/init.lua
index 774ab6e..c7368a0 100644
--- a/testing/init.lua
+++ b/testing/init.lua
@@ -1,7 +1,14 @@
local module = {}
-local IsTestMode = script.Name:match("testing_")
+local IsTestMode = script.Name:match("_TESTING")
+
+local Quad = require(script.Quad).Init()
+local LocalPlayer = game.Players.LocalPlayer
+local ScreenGUI = Instance.new("ScreenGui",
+ LocalPlayer and LocalPlayer.PlayerGui or game.StarterGui)
+ScreenGUI.Name = "MyGUI"
+ScreenGUI.ResetOnSpawn = false
local function SetTheme(global)
local isDark
@@ -42,46 +49,32 @@ local function SetTheme(global)
end
end
-function module.init()
- ---@module Quad.src.types
- local types = require(script.Quad.types)
- local quad = (require(script.Quad) :: types.module).Init("ui")
- local Round,Class,Mount,Store,Event,Tween,Style,Signal
- = quad.Round,quad.Class,quad.Mount,quad.Store,quad.Event,quad.Tween,quad.Style,quad.Signal
+---@module src.types
+local types = require(script.Quad.types)
+local quad = (require(script.Quad) :: types.module).Init("ui")
+local Round,Class,Mount,Store,Event,Tween,Style,Signal
+= quad.Round,quad.Class,quad.Mount,quad.Store,quad.Event,quad.Tween,quad.Style,quad.Signal
- local Frame = Class "Frame"
- local Gui = Class "ScreenGui"
+local Frame = Class "Frame"
+local Gui = Class "ScreenGui"
- local Global = Store.GetStore "global"
- local TweenTest = Class(script.tween)
- -- local LangTest = Class(script.lang)
+local Global = Store.GetStore "global"
+local TweenTest = Class(script.tween)
+-- local LangTest = Class(script.lang)
- SetTheme(Global)
+SetTheme(Global)
- Gui "MainGui" {
- Frame "Main" {
- Size = UDim2.fromOffset(400,640);
- Position = UDim2.fromScale(0.5,0.5);
- AnchorPoint = Vector2.new(0.5,0.5);
- TweenTest{};
- -- LangTest{};
- }
- }
- Mount(game.StarterGui,Store.GetObject "MainGui")
- _G.uiinstance = Store.GetObject "MainGui"
+local mainMount = Mount(ScreenGUI,Frame "Main" {
+ Size = UDim2.fromOffset(400,640);
+ Position = UDim2.fromScale(0.5,0.5);
+ AnchorPoint = Vector2.new(0.5,0.5);
+ TweenTest{};
+ -- LangTest{};
+})
+
+return function()
+ -- 테스트가 끝나 만든걸 지워야 할 때 사용됩니다.
+ -- 추후 설명될 Unmount() 를 이용하세요.
+ mainMount:Unmount()
+ ScreenGUI:Destroy()
end
-
-function module.deinit()
- if IsTestMode then
- local lastInstance = _G.uiinstance
- require(script.Parent.Quad).Uninit("ui")
- if lastInstance then
- lastInstance:Destroy()
- end
- _G.uiinstance = nil
- return
- end
- require(script.Parent.Quad).Uninit("ui")
-end
-
-return module
diff --git a/testing/signal b/testing/signal.lua
similarity index 100%
rename from testing/signal
rename to testing/signal.lua
diff --git a/testing/test/init.lua b/testing/test/init.lua
deleted file mode 100644
index 3d1232b..0000000
--- a/testing/test/init.lua
+++ /dev/null
@@ -1,64 +0,0 @@
-
-local function remove()
- local lastModule = _G.uilastmodule
- if lastModule then
- require(lastModule).deinit()
- end
-end
-
-local function reload()
- local lastModule = _G.uilastmodule
- if lastModule then
- local passed,module = pcall(require,lastModule)
- if passed then
- pcall(module.deinit)
- _G.uiloaded = false
- end
- lastModule:Destroy()
- end
- _G.uilastmodule = nil
-
- lastModule = script.Parent:Clone()
- lastModule.Archivable = false
- lastModule.Name = "testing_" .. lastModule.Name
- if lastModule:FindFirstChild("loader") then
- lastModule.loader.Disabled = true
- end
- lastModule.Parent = script.Parent.Parent
- _G.uilastmodule = lastModule
-
- local module = require(lastModule)
- if _G.uiloaded then
- pcall(module.deinit)
- _G.uiloaded = false
- end
-
- module.init()
- _G.uiloaded = true
-end
-
-return {
- track = function ()
-
- reload()
- wait()
- if not _G.uichangetracker then
- local tracker = require(script.tracker)
- local changeTracker = tracker.new(script.Parent)
-
- changeTracker:connect("updated",function ()
- reload()
- end)
- changeTracker:init()
- _G.uichangetracker = changeTracker
- end
- end,
- untrack = function ()
- _G.uichangetracker:deinit()
- _G.uichangetracker = nil
- remove()
- end
-}
-
-
-
diff --git a/testing/tween.lua b/testing/tween.lua
index 6158ae7..c24cd1b 100644
--- a/testing/tween.lua
+++ b/testing/tween.lua
@@ -4,8 +4,8 @@ local module = {}
---@module Quad.src.types
local types = require(script.Parent.Quad.types)
local quad = (require(script.Parent.Quad) :: types.module).Init("ui")
-local Round,Class,Mount,Store,Event,Tween,Style,Lang
-= quad.Round,quad.Class,quad.Mount,quad.Store,quad.Event,quad.Tween,quad.Style,quad.Lang
+local Class,Mount,Store,Event,Tween,Style,Lang
+= quad.Class,quad.Mount,quad.Store,quad.Event,quad.Tween,quad.Style,quad.Lang
local Global = Store.GetStore "global"
@@ -31,18 +31,21 @@ Lang.New("tweenCount",{
[Lang.Locales.Default] = "Ran {count} times";
})
--- Create GUI
+-- Create Extend Class
local tweenTest = Class.Extend()
function tweenTest:Init(Prop)
Prop:Default("Count",0)
Prop:Default("Position",UDim2.fromOffset(50,0))
+end
+
+function tweenTest:AfterRender()
local on = false
task.spawn(function()
while task.wait(2) do
on = not on
- Prop.Count = Prop.Count + 1
- Prop.Position = on and UDim2.new(1,-50-60,0,0) or UDim2.fromOffset(50,0)
+ self.Count = self.Count + 1
+ self.Position = on and UDim2.new(1,-50-60,0,0) or UDim2.fromOffset(50,0)
end
end)
end
@@ -109,21 +112,21 @@ function tweenTest:Render(Prop)
Text = "Back";
Position = Prop "Position":Add(UDim2.fromOffset(0,560)):Tween{Direction = "Out",Time = 2,Easing = "Back"};
};
- Frame {
- Size = UDim2.new(100,100);
- [Event.Created] = function(self)
- for j = 1,25 do
- local i = j*4
- Mount(self,Frame{
- Size = UDim2.fromOffset(3,3);
- AnchorPoint = Vector2.new(0.5,0.5);
- Position = UDim2.fromOffset(100-i,Tween.CalcEasing(Tween.EasingFunctions.Circle,Tween.EasingDirections.Out,i/100)*100);
- BackgroundColor3 = Color3.fromRGB(110, 110, 255);
- })
- end
- end;
- BackgroundColor3 = Color3.fromRGB(0,0,0);
- };
+ -- Frame {
+ -- Size = UDim2.new(100,100);
+ -- [Event.Created] = function(self)
+ -- for j = 1,25 do
+ -- local i = j*4
+ -- Mount(self,Frame{
+ -- Size = UDim2.fromOffset(3,3);
+ -- AnchorPoint = Vector2.new(0.5,0.5);
+ -- Position = UDim2.fromOffset(100-i,Tween.CalcEasing(Tween.EasingFunctions.Circle,Tween.EasingDirections.Out,i/100)*100);
+ -- BackgroundColor3 = Color3.fromRGB(110, 110, 255);
+ -- })
+ -- end
+ -- end;
+ -- BackgroundColor3 = Color3.fromRGB(0,0,0);
+ -- };
}
end