Framer Advanced 1.

변수, 반복문, 배열

Junhyuk Jang
hyuk
8 min readJul 15, 2016

--

지금까지 Framer와 CoffeeScript에 대해서 많은 내용들을 살펴보았습니다. 차근차근 꾸준히 연습했다면 아마도 간단한 인터랙션 프로토타입을 만들 수 있다는 사실에 재미를 느끼는 분들이 있을 것 같습니다.

이런 화면도 이제는 쉽게 만들 수 있을 것입니다.

list

만약에 이렇게 만든 리스트의 높이를 변경하고 싶다면 어떻게 해야 할까요? 기존 방식대로라면 각 레이어의 높이값을 일일이 수정해야 할 것입니다. 물론 수정해야 할 값이 한 두 개라면 그리 오래 걸리지 않을 것입니다. 하지만 수십, 수백개라면?

변수 Variable

위와 같은 상황에서 활용할 수 있는 것이 바로 변수(variable) 입니다.

변수 [變數]
1.어떤 정세나 상황의 가변적 요인
2.[수학] 어떤 관계나 범위 안에서 여러 가지 값으로 임의로 변할 수 있는 수

예를 들어 매일 음식을 먹지만, 그 종류는 한식, 중식, 일식 등 다양할 것입니다. 이 때 서로 달라지는 음식의 종류를 일종의 변수라고 할 수 있습니다.

변수를 적용해서 위의 코드를 재구성해 보겠습니다.

이렇게 하면 모든 레이어의 높이값에 변수로 지정한 “layerHeight”의 값이 적용됩니다. 따라서 layerHeight의 값만 변경하면 모든 레이어에 변경된 값이 적용되게 됩니다.

반복해서 입력되는 동일한 값들은 이렇게 변수를 통해 한꺼번에 적용할 수 있습니다.

layerHeight

반복문 For Loop

위의 코드에서 볼 수 있듯이, 같은 형태의 레이어가 여러번 반복해서 등장하는 경우가 종종 있습니다. 처음에는 “복사+붙여넣기”를 통해 해결할 수 있지만, 변수에서 예를 들었던 것처럼 반복 작업에도 한계가 있기 마련입니다.

이럴 때, 반복문(for loop)를 사용하면 반복 작업을 크게 줄일 수 있습니다.

왜 반복하려는 횟수 — 1 인가요?

컴퓨터는 숫자를 0부터 세기 시작합니다. 따라서 [0..3] 이라고 하면 0, 1, 2, 3 이렇게 총 4번을 반복하게 됩니다. 이것은 매우 중요한 개념이니 꼭 기억하는게 좋습니다.

이 개념이 헷갈린다면 다른 대안도 있습니다.

이렇게 점을 세번 찍으면 반복하려는 횟수만큼만 숫자를 입력하면 됩니다. 어느쪽이든 결과는 동일하기 때문에 본인이 헷갈리지 않고 편하게 쓸 수 있는 방법을 택하면 될 것 같습니다.

반복문을 이용해서 위의 코드를 재구성 해보면 다음과 같습니다.

loop

배열 Array

하지만 반복문을 이용한 위의 코드에서도 한 가지 문제가 있습니다. 반복해서 같은 크기의 레이어를 적절히 잘 배치하게 되었지만, 각 레이어의 색깔마저도 모두 똑같아져 버린 것입니다.

만약 원하는 레이어를 선택하여 각각 다른 속성값을 적용할 수 있다면, 반복문을 더욱 효과적으로 사용할 수 있지 않을까요? 그래서 보통 반복문은 배열(array)과 함께 사용하는 경우가 많습니다.

이렇게 하면 반복문으로 만든 레이어들이 빈 배열 안에 채워지게 되며, 배열 내 순서를 이용해서 원하는 레이어를 선택할 수 있게 됩니다.

여기서 주의해야 할 점이 바로 앞에서 언급했던 “순서” 입니다. 앞에서도 설명했듯이 컴퓨터는 0부터 세기 시작하기 때문에 첫번째 레이어가 “layers[0]”이 되는 것입니다.

array

Advanced

이번 포스팅의 제목처럼 변수, 반복문, 배열은 기초에서 약간 벗어난 내용이라고 느낄 수 있습니다. 그렇기 때문에 완벽히 이해하고 활용하기까지는 시간이 조금 걸릴 것이라고 생각합니다.

만약 변수나 반복문, 배열의 개념이 너무 어렵고 막연하게 느껴진다면 우선은 지금 하던 방식대로 코드를 작성하는 것이 좋을 것 같습니다. 처음부터 구조적으로 깔끔한 코드를 작성하려면 시간도 오래 걸릴 뿐더러, 재미도 반감될 것이기 때문입니다.

너무 조급하게 생각하지 말고, 천천히 느긋하게 하던대로 하다보면, 변수를 알게 되고, 또 조금 지나서 반복문을 알게 되고, 또 얼마 지나서 배열을 알게 될 것입니다.

그전까지는 Framer 기초 관련 포스팅들을 참고하면 도움이 될 것입니다. 링크를 한 번 더 안내하는 것으로 이번 포스팅을 마칩니다.

--

--