Framer Advanced 2.

조건문

Junhyuk Jang
hyuk
7 min readJul 22, 2016

--

지금까지 포스팅을 통해 이야기 한 내용들은 다음과 같습니다.

하지만 이 내용들만 가지고는 구현하지 못한 부분들이 분명 있을 것이라고 생각합니다. 일차원적인 움직임은 쉽게 구현할 수 있지만, 인터랙션이 조금만 복잡해지면 금방 난관에 봉착하게 됩니다.

예를 들어 이런 인터랙션을 구현한다고 생각해보면..

sample

특정 위치까지 스크롤 하면 더 이상 스크롤 되지 않거나, 특정 위치 이후로는 이미지를 확대하는 등, 특정 상황을 만족하면 정해진 동작을 수행해야 하는 경우가 있습니다. 이런 복잡한 인터랙션은 어떻게 구현해야 할까요?

조건문 If

상황에 따라 다른 동작을 수행하기 위한 방법으로 조건문(if)을 사용할 수 있습니다. 설명을 위해 Drag 할 수 있는 레이어를 하나 만들어 보겠습니다.

만약 특정 위치부터 레이어의 색깔을 변경하고 싶다면, 다음과 같이 조건문을 추가할 수 있습니다.

this는 어디서 나온 건가요?

특정 레이어에 이벤트를 추가했을 때, 해당 레이어가 또 한번 언급되는 경우, 레이어 이름을 반복해서 적지 않고 “this”로 대체할 수 있습니다. 반복 작업을 줄여주는 또 하나의 꿀팁~!!

언어 및 플랫폼에 따라 다르지만, 웹을 기준으로 볼 때에
이벤트 밖에서 this 값을 체크해보면 UI 전체를 이루는 Window값이고,
이벤트 안에서의 this 값은 이벤트를 수신하기 위해 등록한 객체를 가리킵니다.
이는 기능을 수행하는 주체를 나타내기도 합니다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

이제 위의 코드를 실행해보면 일정 범위 이상 Drag 했을 때, 색깔이 변하는 것을 확인할 수 있습니다.

moveIf

그런데 한 번 바뀐 색깔이 돌아오지 않아요.

컴퓨터는 주어진 명령을 훌륭히 수행해 냅니다. 그런데 주어진 명령’만’ 수행한다는 것이 문제가 될 때도 있습니다.

위의 코드에서 “x값이 150보다 크다”는 조건은 있지만, 다른 조건이 입력되지 않았으므로 레이어 색깔이 한 번 변하는 것으로 컴퓨터는 할 일을 다 한 것입니다.

색깔을 다시 바꾸고 싶다면, 조건을 추가하면 됩니다.

이제 추가로 입력한 코드를 실행해 보면 위치에 따라 다양하게 색깔이 변하게 됩니다.

moveElse

두 번째 조건인 y > 500 에 해당하는데, 초록색으로 바뀌지 않는 경우가 있네요?

컴퓨터는 추가한 모든 조건을 “순서대로” 충실하게 수행합니다. 따라서 두 번째 조건(y>500)에 해당하더라도 첫 번째 조건(x>150)을 만족하는 상황이라면 계속해서 처음 명령을 수행하게 되는 것입니다.

만약 y > 500 일 때, 곧바로 색깔을 바꾸고 싶다면, 조건문을 수정해야 합니다.

조건문에서 사용되는 기호들(비교연산자)

연산자와 관련한 자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators에서 확인할 수 있습니다.

example

조건문을 활용하면 어느정도 복잡한 인터랙션도 구현할 수 있게 됩니다. 그런 까닭에 가장 빈번하게 사용하는 코드 중 하나가 바로 조건문이 아닐까 합니다. 그만큼 편리하고 또 중요한 개념이므로 자주 써보고 익히는 것이 필요합니다.

아래는 조건문을 활용한 카드 UI 예제입니다. 많이 연습해서 조건문을 내 것으로 만들어 보시기 바랍니다 !!

--

--