Tween - 트윈효과¶
트위닝¶
Quad에는 트윈을 도와주는 모듈이 내장되어 있습니다. 이 트윈 모듈은 단순한 Instance들을 넘어서 table 형식도 트윈을 수행할 수 있습니다. 이는 나중에 커스텀 오브젝트를 트윈할 때 유용합니다.
Quad 에서는 실제로 직접적으로 Tween 을 사용할 일은 적으며 추후 설명되는 register:Tween()
로 사용하는것이 권장됩니다.
트윈은 일반적으로 다음과 같이 수행합니다.
1 2 3 4 5 6 7 8 9 |
|
클릭시 움직이는 버튼을 구현합니다. | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
트윈 옵션¶
트윈에는 트윈 옵션이 들어가며, 여기에는 트윈의 방향, 가감속, 시간 등을 설정해줄 수 있습니다.
넣을 수 있는 트윈 옵션은 다음과 같습니다.
Option Time:number?
트윈의 총 길이를 정합니다. 아무 값도 지정하지 않으면
1
이 사용됩니다.
Option Easing:string|(index:number)->number?
트윈의 가감속 정도를 결정합니다. 문자열 그대로 사용하거나,
Tween.Easings.Linear
와 같이 열거형 방식으로 사용할 수 있습니다.
혹은 필요에 따라 함수를 지정할 수도 있습니다. 함수를 Easing 으로 사용하는 경우 첫번째 인자로 1차 진행도 (Linear, 0 에서 1 사이의 값) 값이 주어지며, 계산 결과로 실제 적용될 위치를 반환해야합니다. 반환값은 음수이거나 1 보다 클 수 있습니다.
아무 값도 지정하지 않으면Exp2
가 사용됩니다.
함수에 관한 자세한 설명과 미리보기는 여기에서 확인하세요
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15type Easing = "Linear" // 아무런 가감속이 없는 1차형 |"Quint" // 5 제곱 |"Quart" // 네제곱 |"Cubic" // 세제곱 |"Quad" // 제곱 |"Sin" // 사인 파형 |"Circle" // 사분원 |"Expo" // 지수형 |"Elastic" // 탄성 |"Bounce" // 튀어오름 |"Back" // 뒤로 가감속 |"Exp2" // 덜 가파른 지수 i=exp(x)/max, x=-4 to 2 |"Exp4" // 더 가파른 지수 i=exp(x)/max, x=-4 ~ 4 |EasingFunction?;
Option Direction:string?
트윈이 진행되는 방향입니다. 문자열 그대로 사용하거나,
Tween.Directions.Out
과 같이 열거형 방식으로 사용할 수 있습니다.
아무 값도 지정하지 않으면Out
이 사용됩니다.방향에 관한 자세한 설명과 미리보기는 여기에서 확인하세요
1 2 3 4 5 6 7type Direction = // 초반에 가속이 이루워지며, 후반에 느려집니다. "Out" // 초반에는 느리며, 점점 가속이 늘어납니다. |"In" //중간에서 가장 빠른 속도를 가지며, 후반 초반 모두 감속이 이루워집니다. |"InOut"
Option CallBack:{[number|"*"|string]:(Item:any, Alpha:number, AbsolutePercent:number)->()}?
선택적인 필드이며, 트윈이 실행중인 도중에 함수를 실행시킬 수 있습니다. 트윈의 진행 정도에 따라서 한번 함수가 실행되거나 트윈 진행중 계속해서 실행되도록 만들 수 있습니다.
인덱스가 숫자인 경우 해당 지점을 넘을 때 함수가 실행되도록 만들 수 있으며,"*"
를 인덱스로 사용하면 모든 부분에서 함수가 실행됩니다.
함수에는 편의상 트윈을 하고있는 오브젝트, 위치값, 시간만을 고려한 1차 위치값이 제공됩니다.
Option OnStepped:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack 에
"*"
를 넣은것과 동일한 효과를 가지는 별칭입니다
Option Ended:(Item:any, Alpha:number, AbsolutePercent:number)->()?
CallBack 에
1
을 넣은것과 동일한 효과를 가지는 별칭입니다
Option Getter:(Item:any, Property:string)->any?
선택적인 필드이며, 트윈이 값을 얻으려 할 때 사용할 함수입니다.
함수에 트윈하고 있는 오브젝트, 프로퍼티 이름이 제공됩니다.Warning
register:Tween()
와 호환되지 않습니다.
Option Getter:(Item:any, Property:string, Value:Lerpable)->any?
선택적인 필드이며, 트윈이 값을 설정하려 할 때 사용할 함수입니다. 함수에 트윈하고 있는 오브젝트, 프로퍼티 이름, 설정할 값이 제공됩니다.
Warning
register:Tween()
와 호환되지 않습니다.
트윈 함수¶
Quad 의 트윈에는 트윈을 멈추거나 트윈중인지 확인하는 등의 작업을 할 수 있는 여러 함수들이 제공됩니다.
Tween 안의 모든 함수와 값들은 다음과 같습니다.
Tween.RunTween(Item:any, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)->TweenHandler
트윈을 실행합니다. 트윈 옵션에 대한 정보는 TweenOptions 문서에서 찾을 수 있습니다.
Ended
,OnStepped
,Setter
,Getter
값이 설정되면Option
안의 값보다 우선적으로 사용됩니다. 기능은 TweenOptions의 내용과 같습니다. 나중에 트윈을 중단시킬 수 있도록TweenHandler
가 제공됩니다. 다른 트윈이 변경중인 속성이 다시 트윈하도록 호출되면, 이전 트윈에서 해당 속성은 트윈이 중단되며 새로운 트윈으로 덮어쓰기 됩니다.
1 2 3 4 5Tween.RunTween(myFrame,{ Time = 1; },{ Position = UDim2.new(1,0,1,0); })
Tween.RunTweens(Items:{[number]:any}, Option:tweenOptions, Properties:{[string]:Lerpable}, Ended?, OnStepped?, Setter?, Getter?)
Tween.RunTween
와 같으나 여러 오브젝트를 한꺼번에 트윈합니다. 아무것도 반환하지 않습니다
1 2 3 4 5Tween.RunTween({myFrame1, myFrame2, myFrame3},{ Time = 1; },{ Position = UDim2.new(1,0,1,0); })
Tween.StopTween(ItemOrHandler:TweenHandler|any)
트윈을 멈춥니다.
TweenHandler
또는 오브젝트를 넣어 멈출 수 있습니다. 오브젝트를 넣으면 그 오브젝트에 실행중인 모든 트윈을 멈춥니다.
1 2 3 4 5 6 7local Handler = Tween.RunTween(myFrame,{ Time = 1; },{ Position = UDim2.new(1,0,1,0); }) Tween.StopTween(Handler)
1 2 3 4 5 6 7local Handler = Tween.RunTween(myFrame,{ Time = 1; },{ Position = UDim2.new(1,0,1,0); }) Tween.StopTween(myFrame)
Tween.StopPropertyTween(Item:any, PropertyName:string)
오브젝트에 특정 프로퍼티의 트윈을 중단시킵니다.
TweenHandler
는 사용할 수 없습니다.
Tween.StopPropertyTween(ItemOrHandler:IsTweening|any)->boolean
해당 오브젝트 또는
TweenHandler
로 트윈이 진행중인지 여부를 판단합니다.
Tween.IsPropertyTweening(Item:any, PropertyName:string)
해당 오브젝트의 프로퍼티가 트윈중이지 여부를 판단합니다.
TweenHandler
는 사용할 수 없습니다.
Tween.Easings: { [string]: EasingFunction }
이징 함수들이 담겨있습니다.
그래프와 미리보기는 Easings 에서 확인할 수 있습니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15type Easing = "Linear" // 아무런 가감속이 없는 1차형 |"Quint" // 5 제곱 |"Quart" // 네제곱 |"Cubic" // 세제곱 |"Quad" // 제곱 |"Sin" // 사인 파형 |"Circle" // 사분원 |"Expo" // 지수형 |"Elastic" // 탄성 |"Bounce" // 튀어오름 |"Back" // 뒤로 가감속 |"Exp2" // 덜 가파른 지수 i=exp(x)/max, x=-4 to 2 |"Exp4" // 더 가파른 지수 i=exp(x)/max, x=-4 ~ 4 |EasingFunction?;
Tween.Easings: { [string]: EasingFunction }
이징 함수들이 담겨있습니다.
자세한 정보는 Easings 에서 확인할 수 있습니다
1 2 3 4 5 6 7type Direction = // 초반에 가속이 이루워지며, 후반에 느려집니다. "Out" // 초반에는 느리며, 점점 가속이 늘어납니다. |"In" //중간에서 가장 빠른 속도를 가지며, 후반 초반 모두 감속이 이루워집니다. |"InOut"