quad/docs/kr/search/search_index.json

1 line
No EOL
84 KiB
JSON

{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":[" "]},"docs":[{"location":"","title":"Quad","text":"<p>\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 </p>"},{"location":"#_1","title":"\ud29c\ud1a0\ub9ac\uc5bc \ubb38\uc11c \ubaa9\ucc28","text":""},{"location":"#api","title":"API \ub808\ud37c\ub7f0\uc2a4","text":"<p>class __call, import class extend private ~~make~~</p> <p>event __call prop created createdSync disconnecter private ~~bind~~</p> <p>mount __call mount =&gt; mountClass|mountsClass class mountClass|mountsClass</p> <p>store getObject getObjects =&gt; objectList addObject class objectList class store</p> <p>style private ~~parseStyles~~ __call new</p> <p>tween (from @qwreey75:AdvancedTween)</p>"},{"location":"#_2","title":"\uc9c4\ud589\uc911\uc774\uac70\ub098 \uac80\ud1a0\uc911","text":""},{"location":"#spring","title":"Spring","text":"<p>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. </p>"},{"location":"#quad-debuger","title":"Quad Debuger","text":"<p>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. </p>"},{"location":"#selection","title":"Selection","text":"<p>Tab \ud0a4\ub4f1\uc73c\ub85c \ubc84\ud2bc \uc120\ud0dd\ud558\uae30 (... \uac00\ub2a5\ud568?) WIP. \uac80\ud1a0\uc911\uc778 \ud504\ub85c\uc81d\ud2b8. </p>"},{"location":"#quad-component-studio","title":"Quad Component Studio","text":"<p>\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. WIP. \uc544\uc9c1 \uc9c4\ud589\uc911\uc778 \ud504\ub85c\uc81d\ud2b8. </p>"},{"location":"#quad-webrender","title":"Quad WebRender","text":"<p>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. WIP. \uac80\ud1a0\uc911\uc778 \ud504\ub85c\uc81d\ud2b8. </p>"},{"location":"changelogs/","title":"\ubc84\uc804 \ubc88\uacbd\uc0ac\ud56d","text":""},{"location":"changelogs/#222","title":"2.22","text":"<p>\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.</p>"},{"location":"changelogs/#221","title":"2.21","text":"<p>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.</p>"},{"location":"changelogs/#220","title":"2.20","text":"<p>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. </p>"},{"location":"changelogs/#219","title":"2.19","text":"<p>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</p>"},{"location":"changelogs/#218","title":"2.18","text":"<p>\uc774\uc81c \ub354\uc774\uc0c1 GC \uc5d0 \uc758\ud574 Store \uc758 Instance \uac12\uc774 \uc190\uc2e4\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4</p>"},{"location":"changelogs/#217","title":"2.17","text":"<p>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. </p>"},{"location":"changelogs/#215-breaking-changes","title":"2.15 BREAKING CHANGES","text":"<p>\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</p>"},{"location":"changelogs/#214","title":"2.14","text":"<p>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</p>"},{"location":"changelogs/#213","title":"2.13","text":"<p>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</p>"},{"location":"changelogs/#212","title":"2.12","text":"<p>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</p>"},{"location":"changelogs/#211","title":"2.11","text":"<p>Store.GetObjects \uc5d0 \uc774\uc81c &amp; \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</p>"},{"location":"changelogs/#29","title":"2.9","text":"<p>PreloadAsync \ub97c \ud1b5\ud574 \uc774\uc81c round.lua \uc5d0\uc11c \ub77c\uc6b4\ub4dc \uc774\ubbf8\uc9c0\ub97c \ubbf8\ub9ac \ub85c\ub4dc\ud569\ub2c8\ub2e4.</p>"},{"location":"changelogs/#28","title":"2.8","text":"<p>\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.</p>"},{"location":"changelogs/#27","title":"2.7","text":"<p>\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</p>"},{"location":"changelogs/#2126-breaking-changes","title":"2.1~2.6 BREAKING CHANGES","text":"<p>\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.</p>"},{"location":"changelogs/#20","title":"2.0","text":"<p>\ubc84\uc804 \ud310\uc62c\ub9bc, BREAKING CHANGES \ub97c \uc704\ud574 \ubc84\uc804\uc744 \ud310\uc62c\ub9bc \ud558\uc600\uc2b5\ub2c8\ub2e4.</p>"},{"location":"license/","title":"\ub77c\uc774\uc120\uc2a4","text":"KoreanEnglish <pre><code> 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</code></pre> <pre><code> 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</code></pre>"},{"location":"include/TweenOptions/","title":"TweenOptions","text":"<pre><code>export type TweenOptions = {\nEasing: \"Linear\"\n|\"Quint\"\n|\"Quart\"\n|\"Cubic\"\n|\"Quad\"\n|\"Sin\"\n|\"Circle\"\n|\"Expo\"\n|\"Elastic\"\n|\"Bounce\"\n|\"Exp2\"\n|\"Exp4\"\n|EasingFunction?;\nDirection: \"Out\"|\"InOut\"|\"In\"|EasingDirection?;\nCallBack: {[number|\"*\"|string]:(Item:DOM|any,Alpha:number,AbsolutePercent:number)-&gt;()}?;\nOnStepped: TweenOnStepped?;\n// \uc77c\ubc18\uc801\uc73c\ub85c CallBack \uc5d0 ['*']=()-&gt;() \ub97c\n// \ub4f1\ub85d\ud558\ub294\uac83\uacfc \uac19\uc73c\ub098 \uc131\ub2a5\uc0c1\uc758 \uc774\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4\nEnded: TweenEnded?;\nGetter: TweenGetter?;\nSetter: TweenSetter?;\nTime: number?;\n}\n</code></pre>"},{"location":"include/direction/","title":"Direction","text":"<p><code>Out</code> \ucd08\ubc18\uc5d0 \uac00\uc18d\uc774 \uc774\ub8e8\uc6cc\uc9c0\uba70, \ud6c4\ubc18\uc5d0 \ub290\ub824\uc9d1\ub2c8\ub2e4. </p> <p><code>In</code> \ucd08\ubc18\uc5d0\ub294 \ub290\ub9ac\uba70, \uc810\uc810 \uac00\uc18d\uc774 \ub298\uc5b4\ub0a9\ub2c8\ub2e4. </p> <p><code>InOut</code> \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. </p>"},{"location":"include/easings/","title":"Easings","text":"<p> \ubaa8\ub4e0 Easing \uc740 \uc5ec\uae30\uc5d0\uc11c \uc9c1\uc811\uc801\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. </p> <p><code>Linear</code> </p> <p>\uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615 \ud568\uc218\uc785\ub2c8\ub2e4 </p> <p><code>Quint</code> </p> <p>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 </p> <p><code>Quart</code> </p> <p>\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 </p> <p><code>Cubic</code> </p> <p>\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 </p> <p><code>Quad</code> </p> <p>\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Expo</code> </p> <p>\uc9c0\uc218\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. \ub9e4\uc6b0 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4. </p> <p><code>Sin</code> </p> <p>\uc0ac\uc778 \ud30c\ud615\uc744 \uc0ac\uc6a9\ud55c \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Circle</code> </p> <p>\uc6d0\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Back</code> </p> <p>\uc2dc\uc791\uc2dc \ub4a4\ub85c \uc774\ub3d9\uc774 \uc788\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Elastic</code> </p> <p>\ud0c4\uc131\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Bounce</code> </p> <p>\ud280\uae40\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p>TODO: \uc560\ub2c8\uba54\uc774\uc158 \ubbf8\ub9ac\ubcf4\uae30 \uc601\uc0c1 \ucd94\uac00</p>"},{"location":"include/events/","title":"Events","text":"<p><code>Event(name:string)</code> </p> <p>\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 \uc774\ubca4\ud2b8\ub4e4\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4, <code>MouseEnter, MouseLeave, MouseButton1Down, MouseButton1Up</code> \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 <code>self</code> \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <pre><code>-- \uc6a9\ubc95\nFrame {\n [Event \"MouseEnter\"] = function (self)\n print(self.Name .. \"\uc5d0 \ub9c8\uc6b0\uc2a4\uac00 \uc62c\ub77c\uc654\uc2b5\ub2c8\ub2e4\")\n end;\n}\n</code></pre></p> <p><code>Event.Created</code> </p> <p>\uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub418\uc5c8\uc744 \ub54c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c <code>self</code> \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. </p> <p>\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. <pre><code>-- \uc6a9\ubc95\nFrame {\n [Event.Created] = function (self)\n print(self.Name .. \"\uc774 \uc0dd\uc131\ub418\uc5c8\uc5b4\uc694\")\n end;\n}\n</code></pre></p> <p><code>Event.CreatedAsync</code> </p> <p><code>Event.Created</code> \uc640 \ube44\uc2b7\ud558\uc9c0\ub9cc, \ucf54\ub8e8\ud2f4 \uc548\uc5d0\uc11c \uc791\ub3d9\ud569\ub2c8\ub2e4. <code>objectList:EachAsync()</code> \ucc98\ub7fc \ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. </p> <p>\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. <pre><code>-- \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</code></pre></p> <p><code>Event.Prop(propertyName:string)</code> </p> <p>\ud504\ub85c\ud37c\ud2f0 \uac12\uc774 \ubcc0\uacbd\ub428\uc744 \uc5f0\uacb0\ud569\ub2c8\ub2e4. </p> <pre><code>-- \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</code></pre>"},{"location":"include/locales/","title":"Locales","text":"<p>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) </p>"},{"location":"include/mounts/","title":"Mounts","text":"<p><code>:Unmount()</code> </p> <p>\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 <code>Store.GetObject</code> \uc5d0\uc11c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0ac\ub77c\uc9c0\ub294\ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. </p> <pre><code>-- \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</code></pre> <p><code>:Add(item:any)</code> </p> <p>Mount \uc5d0 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc124\uc815\ud55c <code>to</code> \uac12\uc744 \ub530\ub77c \ubd80\ubaa8\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4. </p> <p>\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</p> <pre><code>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</code></pre> <p>\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 <code>ScrollFrame</code> \uc758 \uacbd\uc6b0 <code>CanvasPosition</code>\uc774 \ucd08\uae30\ud654 \ub418\uc5b4\ubc84\ub9ac\ubbc0\ub85c \uc790\uc2dd\ub4e4\uc744 <code>:Unmount()</code> \ud558\uae30 \uc804\uc5d0 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uace0 \ub2e4\uc2dc \ubd88\ub7ec\uc640\uc57c \ud569\ub2c8\ub2e4 </p>"},{"location":"include/objectList/","title":"objectList","text":"<p><code>:Each((item:any, index:number)-&gt;())</code> </p> <p>\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 </p> <p><code>:EachAsync((item:any, index:number)-&gt;())</code> </p> <p>\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. <code>wrap()</code> \ucf54\ub8e8\ud2f4\uc744 \ubaa8\ub974\uac70\ub098, \ud544\uc694\uc131\uc774 \uc5c6\ub294\uacbd\uc6b0 \uc77c\ubc18\uc801\uc73c\ub85c <code>:Each</code> \ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub429\ub2c8\ub2e4 </p> <p><code>:IsEmpty()</code> </p> <p>\uc774 ObjectList \uac00 \ube44\uc5b4\uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. </p> <p><code>:Remove(indexOrItem:number|any)</code> </p> <p>objectList \uc5d0\uc11c \ud574\ub2f9\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. , &amp; \ub97c \uc0ac\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 </p>"},{"location":"include/quadProperty/","title":"quadProperty","text":"<p><code>RoundSize:number?</code> </p> <p><code>ImageLabel</code>, <code>ImageButton</code> \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 <code>UICorner</code>\ubcf4\ub2e4 \ubd80\ub4dc\ub7ec\uc6b4 \ucf54\ub108\ud6a8\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. </p> <p><code>Corner:number?</code> </p> <p>\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 UI\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. <code>UICorner</code>\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. </p> <p><code>PaddingAll:UDim?</code> </p> <p><code>UIPadding</code>\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc0c1\ud558\uc88c\uc6b0 \ubaa8\ub450 \uac19\uc740 \uac12\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. <code>PaddingAllOffset</code> \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</p> <p><code>PaddingAllOffset:number?</code> </p> <p><code>UIPadding</code>\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. <code>PaddingAll</code>\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc791\ub3d9\ud558\ub098, <code>Offset</code>\uac12\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>PaddingAll</code> \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</p> <p><code>Scale:number?</code> </p> <p><code>UIScale</code>\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. <code>UIScale.Scale</code> \uacfc \uac19\uc740 \ud6a8\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4</p>"},{"location":"include/register/","title":"Register","text":"<p><code>register</code> \ud2b9\uc218 \uba54\uc18c\ub4dc\uac00 \uc801\uc6a9\ub418\ub294 \uc21c\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. </p> <p><code>:Add(value:any)-&gt;register</code></p> <p>\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. <code>number</code>, <code>Udim</code>, <code>UDim2</code>, <code>Color3</code>, <code>Vector2</code> \ub4f1 \ub354\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0\uac83\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 \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</p> <pre><code>-- \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</code></pre> <p><code>:With((store:valueStore, newValue:any, key:string)-&gt;())-&gt;register</code> </p> <p>\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 \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</p> \ud568\uc218\ud14c\uc774\ube14 <pre><code>-- \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.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</code></pre> <pre><code>-- \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\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 BackgroundColor3 = myStore \"color\":With(colors);\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nwhile task.wait(1) do\n myStore.color = (i-1)%(#colors)+2\nend\n</code></pre> <p><code>:Tween(options:TweenOptions)</code> </p> <p>\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. \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</p> <pre><code>-- \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\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)\nend\n</code></pre> <p><code>:Default(value:any)</code> </p> <p>\uae30\ubcf8\uac12\uc744 \uc815\ud569\ub2c8\ub2e4. \ub9cc\uc57d \uac12\uc774 <code>nil</code> \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. \uc8fc\uc758 : \ucc98\uc74c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub420 \ub54c\uc5d0\ub9cc \uc774 \uac12\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.</p> <pre><code>-- \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</code></pre> <p><code>:Register((store:valueStore, newValue:any, key:string)-&gt;())-&gt;nil</code> </p> <p>\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 <pre><code>-- \uc6a9\ubc95\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\n\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.test1 = 1\nmyStore.test2 = \"Hello\"\n\nmyStore \"test1,test2\":Register(function()\n print(myStore.test1,myStore.test2)\nend)\n\nmyStore.test1 = 2\n</code></pre></p>"},{"location":"tutorial/","title":"Getting Started","text":""},{"location":"tutorial/#_1","title":"\uba38\ub9ac\ub9d0","text":"<p>\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! </p> <p>\uc8fc\uc758: \uc774 \ubaa8\ub4c8\uc740 \uac1c\ubc1c \uc9c4\ud589\uc774 \ub9e4\uc6b0 \ube60\ub985\ub2c8\ub2e4. \ub9ce\uc740\uc591\uc758 \ubcc0\uacbd \uc0ac\ud56d\uc774 \uc788\uc744 \uc218 \uc788\uc73c\ubbc0\ub85c github \uc5d0\uc11c \ubcc0\uacbd\uc0ac\ud56d\uc744 \uacc4\uc18d\ud574\uc11c \ucd94\uc801\ud558\uc138\uc694 </p> <p>\ubcc0\uacbd \uc0ac\ud56d\uc740 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4</p>"},{"location":"tutorial/#_2","title":"\uc124\uce58","text":""},{"location":"tutorial/#_3","title":"\ubaa8\ub4c8 \ubd88\ub7ec\uc624\uae30/\ucd08\uae30\ud654","text":"<pre><code>local Quad = require(path.to.module).Init()\n</code></pre> <p>\ubaa8\ub4c8\uc744 \uc14b\uc5c5\ud558\uae30 \uc704\ud574\uc11c\ub294 <code>.Init(QuadId:string?)</code> \uc744 \uc774\uc6a9\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c <code>QuadId</code> \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 <code>QuadId:string</code> \uc5d0 \uc601\ud5a5\ubc1b\uae30\ub3c4 \ud569\ub2c8\ub2e4. </p> <p><code>.Init(QuadId:string)</code> \ud568\uc218\ub294 <code>QuadId</code> \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 <code>QuadId</code> \uac00 \uac19\uc740 \uacbd\uc6b0 Store \uc640 \uac19\uc740\uac83\uc774 \uacf5\uc720\ub429\ub2c8\ub2e4. </p> <p><code>QuadId</code> \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 </p> <pre><code>local Quad = require(path.to.module).Init()\nlocal Class = Quad.Class\n</code></pre> <p>\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</p>"},{"location":"tutorial/#_4","title":"\ud0c0\uc785 \ubd88\ub7ec\uc624\uae30","text":"<p>\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 </p> <pre><code>local types\n</code></pre>"},{"location":"tutorial/#_5","title":"\ud14c\uc2a4\ud2b8 \ud658\uacbd \uc900\ube44","text":"<p>\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 </p>"},{"location":"tutorial/#_6","title":"\uc790\ub3d9 \ub9ac\ub85c\ub4dc","text":"<p>\uc8fc\uc758: rojo \ud658\uacbd\uc774 \uc544\ub2c8\ub77c\uba74 \uc790\ub3d9 \ub9ac\ub85c\ub4dc\ub294 \ub799\uc744 \ub3d9\ubc18\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 </p> <p>\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.</p>"},{"location":"tutorial/#_7","title":"\uc218\ub3d9 \ub9ac\ub85c\ub4dc","text":""},{"location":"tutorial/10_signal/","title":"Signal","text":"<p>Quad \uc5d0\ub294 \ud3b8\uc758\uc0c1\uc758 \uc774\uc720\ub85c </p>"},{"location":"tutorial/1_import/","title":"\ub85c\ube14\ub85d\uc2a4 \uc624\ube0c\uc81d\ud2b8 \ubd88\ub7ec\uc624\uae30","text":"<p>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!</p> <pre><code>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</code></pre> <p>\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 <code>Class(ClassName:string)</code> \uc73c\ub85c \ubd88\ub7ec\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4 </p> <p>\ubd88\ub7ec\uc628 Class \uc5d0 \uae30\ubcf8\uac12\uc744 \uc124\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4 </p> <pre><code>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 {}\nprint(frame1.FrameWithBorder)\nprint(frame2.FrameWithBorder)\n</code></pre> <p>\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!</p>"},{"location":"tutorial/2_mount/","title":"\ud654\uba74\uc5d0 UI \ub97c \ud45c\uc2dc\ud558\uae30","text":"<p>\uc77c\ubc18\uc801\uc73c\ub85c Quad \ubaa8\ub4c8\uc5d0\uc11c \ubaa8\ub4e0 Parent \ucc98\ub9ac\ub294 <code>Mount</code> \ub97c \uc774\uc6a9\ud569\ub2c8\ub2e4. <code>Mount(to:any,...item:any?)-&gt;mounts</code> \ud568\uc218\ub97c \uc774\uc6a9\ud558\uba74 \ub2e4\ub8e8\ub294 \uc624\ube0c\uc81d\ud2b8\uac00 \ub85c\ube14\ub85d\uc2a4 <code>Instance</code> \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.</p> <pre><code>--- 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</code></pre> <p>\ud3b8\uc758\ub97c \uc704\ud574\uc11c <code>Mount</code> \ud568\uc218\ub294 <code>mounts</code> \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. <code>mounts</code> \uac1d\uccb4\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub97c \uac00\uc9d1\ub2c8\ub2e4. </p> <p><code>:Unmount()</code> </p> <p>\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 <code>Store.GetObject</code> \uc5d0\uc11c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0ac\ub77c\uc9c0\ub294\ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. </p> <pre><code>-- \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</code></pre> <p><code>:Add(item:any)</code> </p> <p>Mount \uc5d0 \uc624\ube0c\uc81d\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc124\uc815\ud55c <code>to</code> \uac12\uc744 \ub530\ub77c \ubd80\ubaa8\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4. </p> <p>\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</p> <pre><code>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</code></pre> <p>\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 <code>ScrollFrame</code> \uc758 \uacbd\uc6b0 <code>CanvasPosition</code>\uc774 \ucd08\uae30\ud654 \ub418\uc5b4\ubc84\ub9ac\ubbc0\ub85c \uc790\uc2dd\ub4e4\uc744 <code>:Unmount()</code> \ud558\uae30 \uc804\uc5d0 \uc704\uce58\ub97c \uc800\uc7a5\ud558\uace0 \ub2e4\uc2dc \ubd88\ub7ec\uc640\uc57c \ud569\ub2c8\ub2e4</p>"},{"location":"tutorial/3_getObject/","title":"\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc544\uc774\ub514 \ubd80\uc5ec\ud558\uae30, \uadf8\ub9ac\uace0 \uc0ac\uc6a9\ud558\uae30","text":"<p>\uc77d\uae30 \uc804...</p> <p>\ubaa8\ub4c8 \uc124\uc815\uc2dc <code>.Init()</code> \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 <code>Store.GetObject</code> \uac00 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc <code>.Init(\"Project1\")</code> \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 <code>Store.GetObject</code> \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4 </p> <p>\ubcc0\uc218\uc5d0 \ub9cc\ub4e4\uc5b4\uc9c4 \uc624\ube0c\uc81d\ud2b8\ub97c \ud558\ub098\ud558\ub098 \uc800\uc7a5\ud574??? \uadf8\uac8c \ud3b8\ud560\ub9ac\uac00 \uc5c6\uc8e0. \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc544\uc774\ub514\ub97c \ub123\uace0 \uc0ac\uc6a9\ud574\ubd05\uc2dc\ub2e4.</p> <pre><code>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</code></pre> <p>\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 <code>Frame \"mainFrame\" {}</code> \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. <code>Store.GetObject(id:string)-&gt;Object</code> \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.</p> <pre><code>local index = 1\nFrame (\"mainFrame\" .. index) {}\nprint(Store.GetObject(\"mainFrame\" .. index))\n</code></pre> <p>\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. </p>"},{"location":"tutorial/3_getObject/#_2","title":"\ub2e4\ub7c9\uc758 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\ub8e8\uae30","text":"<p>\ub610\ud55c, Quad \ub294 \ub2e4\ub7c9\uc758 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\ub8e8\uae30 \ud3b8\ud558\ub3c4\ub85d <code>Store.GetObjects(id:string)-&gt;objectList</code> \ub77c\ub294 \ud568\uc218\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. </p> <p>\uc8fc\uc758 : 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. </p> <p>\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 </p> <pre><code>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</code></pre> <p><code>Store.GetObjects()</code> \uc758 \ubc18\ud658 <code>objectList</code> \uc758 \uba54\uc18c\ub4dc\ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. </p> <p><code>:Each((item:any, index:number)-&gt;())</code> </p> <p>\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 </p> <p><code>:EachAsync((item:any, index:number)-&gt;())</code> </p> <p>\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. <code>wrap()</code> \ucf54\ub8e8\ud2f4\uc744 \ubaa8\ub974\uac70\ub098, \ud544\uc694\uc131\uc774 \uc5c6\ub294\uacbd\uc6b0 \uc77c\ubc18\uc801\uc73c\ub85c <code>:Each</code> \ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub429\ub2c8\ub2e4 </p> <p><code>:IsEmpty()</code> </p> <p>\uc774 ObjectList \uac00 \ube44\uc5b4\uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. </p> <p><code>:Remove(indexOrItem:number|any)</code> </p> <p>objectList \uc5d0\uc11c \ud574\ub2f9\ud558\ub294 \uc624\ube0c\uc81d\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. , &amp; \ub97c \uc0ac\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4</p>"},{"location":"tutorial/3_getObject/#id","title":"\uace0\uae09 ID \uc0ac\uc6a9\ud558\uae30","text":"<p>id \uae30\ub2a5\uc744 \uc870\uae08\ub354 \uace0\uae09\uc801\uc778 \ubc29\ubc95\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.</p> <pre><code>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&amp;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&amp;b,b\"):Each(function(item, index)\n print(item.Name)\nend)\n</code></pre> <ul> <li>\ub610\ub294(or) \uc5f0\uc0b0 <code>,</code> </li> <li>\uadf8\ub9ac\uace0(and) \uc5f0\uc0b0 <code>&amp;</code> </li> </ul> <p>GetObjects \uc5d0\ub294 \uc774 \ub450 \uc5f0\uc0b0\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0, \uc0dd\uc131\uc2dc\uc5d0\ub294 <code>,</code> \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 </p> <p>\uc8fc\uc758 : \uace0\uae09 ID \uc0ac\uc6a9\uc2dc <code>objectList:Remove</code> \uba54\uc18c\ub4dc\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4</p>"},{"location":"tutorial/3_getObject/#id_1","title":"id \ucd94\uac00\uc640 \uc81c\uac70","text":"<p>\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</p> <pre><code>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</code></pre> <p><code>Store.AddObject(ids:string, item:any)</code> \ub97c \uc774\uc6a9\ud574 item \uc5d0 \uc544\uc774\ub514\ub97c \ucd94\uac00\ud558\uace0 <code>:Remove(item:any)</code> \ub97c \uc774\uc6a9\ud574 item \uc5d0 \uc544\uc774\ub514\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4</p>"},{"location":"tutorial/4_style/","title":"\ubc18\ubcf5\ub418\ub294 \uc18d\uc131\uac12\uc744 \uc904\uc774\uae30","text":"<p>\uc77d\uae30 \uc804...</p> <p>\ubaa8\ub4c8 \uc124\uc815\uc2dc <code>.Init()</code> \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 <code>Style</code> \uae30\ub2a5\uc774 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc <code>.Init(\"Project1\")</code> \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 <code>Style</code> \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4 </p> <p>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. </p> <pre><code>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</code></pre> <p><code>Style</code>\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. <code>Style</code>\uc744 \uc0ac\uc6a9\ud574\uc11c \ub9ce\uc740 \uc591\uc758 \ucf54\ub4dc\ub97c \uc904\uc5ec\ubcf4\uc138\uc694 </p> <p>\ub610, <code>Style</code>\uc5d0\ub294 \ud0c0\uac9f id\ub97c \uc9c0\uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4 </p> <pre><code>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 &amp; \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</code></pre> <p><code>Style(id:string){ any }</code>\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.</p>"},{"location":"tutorial/5_event/","title":"\uc774\ubca4\ud2b8 \ub4f1\ub85d\ud558\uae30","text":"<p><code>MouseButton1Click</code> \ud639\uc740 <code>GetPropertyChangedSignal</code> \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. </p> <pre><code>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 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</code></pre> <p>\uc801\uc6a9\uac00\ub2a5\ud55c Event \ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4 </p> <p><code>Event(name:string)</code> </p> <p>\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 \uc774\ubca4\ud2b8\ub4e4\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4, <code>MouseEnter, MouseLeave, MouseButton1Down, MouseButton1Up</code> \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 <code>self</code> \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <pre><code>-- \uc6a9\ubc95\nFrame {\n [Event \"MouseEnter\"] = function (self)\n print(self.Name .. \"\uc5d0 \ub9c8\uc6b0\uc2a4\uac00 \uc62c\ub77c\uc654\uc2b5\ub2c8\ub2e4\")\n end;\n}\n</code></pre></p> <p><code>Event.Created</code> </p> <p>\uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub418\uc5c8\uc744 \ub54c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub85c <code>self</code> \ub97c \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. </p> <p>\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. <pre><code>-- \uc6a9\ubc95\nFrame {\n [Event.Created] = function (self)\n print(self.Name .. \"\uc774 \uc0dd\uc131\ub418\uc5c8\uc5b4\uc694\")\n end;\n}\n</code></pre></p> <p><code>Event.CreatedAsync</code> </p> <p><code>Event.Created</code> \uc640 \ube44\uc2b7\ud558\uc9c0\ub9cc, \ucf54\ub8e8\ud2f4 \uc548\uc5d0\uc11c \uc791\ub3d9\ud569\ub2c8\ub2e4. <code>objectList:EachAsync()</code> \ucc98\ub7fc \ubc18\ud658\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. </p> <p>\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. <pre><code>-- \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</code></pre></p> <p><code>Event.Prop(propertyName:string)</code> </p> <p>\ud504\ub85c\ud37c\ud2f0 \uac12\uc774 \ubcc0\uacbd\ub428\uc744 \uc5f0\uacb0\ud569\ub2c8\ub2e4. </p> <pre><code>-- \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</code></pre>"},{"location":"tutorial/6_tween/","title":"\ud2b8\uc704\ub2dd","text":"<p>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. </p> <p>\ud2b8\uc708\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ub2e4\uc74c\uacfc \uac19\uc774 \uc218\ud589\ud569\ub2c8\ub2e4. </p> <pre><code>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\"\nFrame \"mainFrame\" {\n Frame \"Child\" {\n Position = UDim2.fromOffset(0,0);\n Size = UDim2.fromOffset(20,20)\n };\n}\n\nMount(ScreenGUI, Store.GetObejct(\"mainFrame\"))\n\nlocal Child = Store.GetObject()\n</code></pre> <p>\ud2b8\uc708 \uc635\uc158\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 <code>EasingFunction</code> \uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4</p> <p> \ubaa8\ub4e0 Easing \uc740 \uc5ec\uae30\uc5d0\uc11c \uc9c1\uc811\uc801\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. </p> <p><code>Linear</code> </p> <p>\uc544\ubb34\ub7f0 \uac00\uac10\uc18d\uc774 \uc5c6\ub294 1\ucc28\ud615 \ud568\uc218\uc785\ub2c8\ub2e4 </p> <p><code>Quint</code> </p> <p>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 </p> <p><code>Quart</code> </p> <p>\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 </p> <p><code>Cubic</code> </p> <p>\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 </p> <p><code>Quad</code> </p> <p>\uc81c\uacf1\uc744 \uc774\uc6a9\ud55c \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Expo</code> </p> <p>\uc9c0\uc218\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. \ub9e4\uc6b0 \uac00\ud30c\ub978 \uac1c\ud615\uc744 \uac00\uc84c\uc2b5\ub2c8\ub2e4. </p> <p><code>Sin</code> </p> <p>\uc0ac\uc778 \ud30c\ud615\uc744 \uc0ac\uc6a9\ud55c \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Circle</code> </p> <p>\uc6d0\ud615 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Back</code> </p> <p>\uc2dc\uc791\uc2dc \ub4a4\ub85c \uc774\ub3d9\uc774 \uc788\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Elastic</code> </p> <p>\ud0c4\uc131\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p><code>Bounce</code> </p> <p>\ud280\uae40\uc744 \uac00\uc9c0\ub294 \uac00\uac10\uc18d \ud568\uc218\uc785\ub2c8\ub2e4. </p> <p>TODO: \uc560\ub2c8\uba54\uc774\uc158 \ubbf8\ub9ac\ubcf4\uae30 \uc601\uc0c1 \ucd94\uac00</p>"},{"location":"tutorial/7_quadProperty/","title":"Quad \ub0b4\ubd80 \ud504\ub85c\ud37c\ud2f0","text":"<p>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 <code>register</code>\uc640 \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4</p> <pre><code>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</code></pre> <p>\uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud504\ub85c\ud37c\ud2f0\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. </p> <p><code>RoundSize:number?</code> </p> <p><code>ImageLabel</code>, <code>ImageButton</code> \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 <code>UICorner</code>\ubcf4\ub2e4 \ubd80\ub4dc\ub7ec\uc6b4 \ucf54\ub108\ud6a8\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. </p> <p><code>Corner:number?</code> </p> <p>\ubaa8\ub4e0 \ub85c\ube14\ub85d\uc2a4 UI\uc624\ube0c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. <code>UICorner</code>\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. </p> <p><code>PaddingAll:UDim?</code> </p> <p><code>UIPadding</code>\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc0c1\ud558\uc88c\uc6b0 \ubaa8\ub450 \uac19\uc740 \uac12\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. <code>PaddingAllOffset</code> \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</p> <p><code>PaddingAllOffset:number?</code> </p> <p><code>UIPadding</code>\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. <code>PaddingAll</code>\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc791\ub3d9\ud558\ub098, <code>Offset</code>\uac12\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>PaddingAll</code> \uacfc \ud568\uae68 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</p> <p><code>Scale:number?</code> </p> <p><code>UIScale</code>\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4. <code>UIScale.Scale</code> \uacfc \uac19\uc740 \ud6a8\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4</p>"},{"location":"tutorial/8_register/","title":"\ub808\uc9c0\uc2a4\ud130","text":"<p>\uc77d\uae30 \uc804...</p> <p>\ubaa8\ub4c8 \uc124\uc815\uc2dc <code>.Init()</code> \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 <code>Store.GetStore</code> \uac00 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc <code>.Init(\"Project1\")</code> \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 <code>Store.GetStore</code> \ub294 \uacf5\uc720\ub429\ub2c8\ub2e4 </p> <p>\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 <code>Class.Extend</code> \uc640\ub3c4 \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4. </p> <p>\ub808\uc9c0\uc2a4\ud130\ub294 \uc774\ub7ec\ud55c \uc2dc\ub098\ub9ac\uc624\uc5d0\uc11c \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. 1. UI \uc758 \uc5ec\ub7ec \uc624\ube0c\uc81d\ud2b8\ub97c \ud55c\ubc88\uc5d0 \ud398\uc774\ub4dc \uc544\uc6c3 \ud639\uc740 \ud398\uc774\ub4dc \uc778 \uc2dc\ud0a4\ub294 \uacbd\uc6b0. 2. \uac00\ubcc0 \ud06c\uae30\uc758 UI \ub97c \uc5c5\ub370\uc774\ud2b8 \uc2dc\ud0a4\ub294 \uacbd\uc6b0. 3. \uc5ec\ub7ec \uc624\ube0c\uc81d\ud2b8\ub4e4\uc744 \ud55c\uaebc\ubc88\uc5d0 \ud2b8\uc708\uc2dc\ud0a4\ub294 \uacbd\uc6b0. 4. \ub2e4\ud06c\ud14c\ub9c8/\ud654\uc774\ud2b8\ud14c\ub9c8 \ubcc0\uacbd\ud560 \uc218 \uc788\uac8c \ub9cc\ub4dc\ub294 \uacbd\uc6b0. </p> <p>\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. </p> <pre><code>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\"\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\nMount(ScreenGUI, Store.GetObject(\"mainLabel\"))\n\nlocal Count = 0\nwhile true do\n task.wait(1)\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</code></pre> <p>\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. </p> <p><code>register</code> \ud2b9\uc218 \uba54\uc18c\ub4dc\uac00 \uc801\uc6a9\ub418\ub294 \uc21c\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. </p> <p><code>:Add(value:any)-&gt;register</code></p> <p>\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. <code>number</code>, <code>Udim</code>, <code>UDim2</code>, <code>Color3</code>, <code>Vector2</code> \ub4f1 \ub354\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0\uac83\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 \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</p> <pre><code>-- \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</code></pre> <p><code>:With((store:valueStore, newValue:any, key:string)-&gt;())-&gt;register</code> </p> <p>\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 \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</p> \ud568\uc218\ud14c\uc774\ube14 <pre><code>-- \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.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</code></pre> <pre><code>-- \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\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 BackgroundColor3 = myStore \"color\":With(colors);\n}\nMount(ScreenGUI, Store.GetObject(\"mainFrame\"))\n\nwhile task.wait(1) do\n myStore.color = (i-1)%(#colors)+2\nend\n</code></pre> <p><code>:Tween(options:TweenOptions)</code> </p> <p>\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. \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</p> <pre><code>-- \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\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)\nend\n</code></pre> <p><code>:Default(value:any)</code> </p> <p>\uae30\ubcf8\uac12\uc744 \uc815\ud569\ub2c8\ub2e4. \ub9cc\uc57d \uac12\uc774 <code>nil</code> \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. \uc8fc\uc758 : \ucc98\uc74c \uc624\ube0c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub420 \ub54c\uc5d0\ub9cc \uc774 \uac12\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.</p> <pre><code>-- \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</code></pre> <p><code>:Register((store:valueStore, newValue:any, key:string)-&gt;())-&gt;nil</code> </p> <p>\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 <pre><code>-- \uc6a9\ubc95\nlocal Quad = require(path.to.module).Init()\nlocal Store = Quad.Store\n\nlocal myStore = Store.GetStore(\"myStore\")\n\nmyStore.test1 = 1\nmyStore.test2 = \"Hello\"\n\nmyStore \"test1,test2\":Register(function()\n print(myStore.test1,myStore.test2)\nend)\n\nmyStore.test1 = 2\n</code></pre></p>"},{"location":"tutorial/9_lang/","title":"\uc5b8\uc5b4\uad00\ub9ac","text":"<p>\uc77d\uae30 \uc804...</p> <p>\ubaa8\ub4c8 \uc124\uc815\uc2dc <code>.Init()</code> \ucc98\ub7fc QuadId \ub780\uc744 \ube44\uc6cc\ub450\ub294 \uacbd\uc6b0 <code>Lang</code> \uae30\ub2a5\uc774 \ucf54\ub4dc\ub97c \ub118\uc5b4 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 \ud558\uc9c0\ub9cc <code>.Init(\"Project1\")</code> \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 <code>Lang</code> \uc740 \uacf5\uc720\ub429\ub2c8\ub2e4 </p> <p>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. </p> <pre><code>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 &gt; 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</code></pre> <p>\ub85c\ucf00\uc77c \uac12\ub4e4\uc740 <code>Lang.Locales</code>\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. </p>"}]}