본문 바로가기

Flash/ActionScript 3.0

[MissFlash의 ActionScript 3.0] 1.7 Using Mathematical Operators

* 본 포스트는 "Joey Lott의 ActionScript 3.0 Cookbook"의 내용을 정리, 가공한 것입니다.
* 본 포스트를 퍼가실 때는 상단에 아래와 같이 원본출처를 명시해 주세요! ^^
원본 : http://blog.missflash.com/
출처 : MissFlash.com, http ://www.missflash.com/
* 포스트의 내용중 일부가 추가/수정될 수 있으므로 최신 내용을 접하고 싶으신 분은 원본글을 이용하시기 바랍니다.

1.7 Using Mathematical Operators

Problem
시간이 지남에 따라 무비클립의 위치나 각도 등을 변경하고 있을 때

Solution
compound assignment operators나 prefix, postfix operators를 이용합니다.

Discussion
Assignment statement에서 Equal(=)의 오른쪽에는 변경을 희망하는 값이 위치하고 왼쪽에는 이 변경값이 적용될 변수나 속성이 위치합니다.

예를 들어, 아래와 같은 표현식에서 두 번째 Age는 최초의 값 16에서 1이 증가한 17의 값을 가집니다.
var Age:Number = 16; // Age = 16
Age = Age + 1; // Age = 17

그런데, 위와 같은 표현이 번거로울 때는 아래와 같은 방법으로도 동일하게 표현할 수 있습니다.
var Age:Number = 16; // Age = 16
Age += 1; // Age = 17

위 식에서 "= Age +"라는 부분이 "+="로 대체되었습니다.
위와 같이 +=, -=, *=, /= 같은 연산자를 compound assignment operators라고 합니다. compound assignment operators는 액션스크립트 3.0 뿐만 아니라 다른 프로그래밍 언어에서도 유사한 형태로 많이 사용합니다.

만약 변수의 증가값이 1이라면 다음과 같이 더욱 단순화할 수 있습니다.
Age++; // Age = 17

이와 같은 ++, -- 같은 연산자를 increment, decrement operators라고 합니다. increment, decrement operators는 다시 prefix, postfix로 나눠질 수 있습니다.

아래 식의 경우 ++Age와 같이 Age의 앞에 increment operator를 위치시켰기 때문에 prefix operator입니다. 이 때는 먼저 increment 연산을 한 후에 Age에 값을 대입시키므로 1만큼 증가한 17이 출력됩니다.
var Age:Number = 16;
trace(++Age); // Age = 17
trace(Age); // Age = 17

하지만 아래와 같이 Age뒤에 increment operator가 위치하는 postfix operator의 경우, 먼저 현재의 Age값(16)을 대입한 후에 1을 증가시킴으로써 두 번째 trace문에서 17이 출력됩니다.
var Age:Number = 16;
trace(Age++); // Age = 16
trace(Age); // Age = 17

앞서 배운 이벤트를 이용해 일정하게 각도를 조정하고 싶으면 다음과 같은 코드를 이용하면 됩니다.
private function onEnterFrame(event:Event)
{
   _sprite.rotation += 1;
}

See Also
Recipe 1.5