위쪽 input창의 x, y 입력창에 숫자를 입력하고 중앙의 Swap 버튼을 클릭하면 바뀐 이후의 x, y값이 아래 output창에 표시된다.

간만에 C++에서 포인터와 주소를 이용해 두 숫자를 받아 바꾼 뒤 돌려주는 함수 만들기를 따라 해보곤 문득 포인터가 없는 플래시 ActionScript에서는동일한 기능의 함수를 어떻게 만들까 궁금해져 Flash CS4+ActionScript 3.0으로 테스트해 보다.

Stackoverflow.com의 http://stackoverflow.com/questions/5499601/actionscript-3-0-swap 게시물을 보고 해결책을 알게 됐다.

방법은 변수를 Object 혹은 Movieclip 형태로 생성한 뒤 그 하위에 만든 속성변수(아님 멤버변수? 이걸 뭐라 칭하는지 모르겠다)에 숫자들을 대입하거나 바꿔주는 편법을 쓰는 것.

16/9/2 금

C++에서 숫자바꾸기
#include <iostream>
#include <string>
using namespace std;

void swap2num(int* a, int* b);

int main(){
       int x, y;
       string t = "바꾸기";

       cout << "바꿀 2 숫자 중 첫번째를 입력: ";
       cin >> x;
       cout << "바꿀 2 숫자 중 2번째를 입력: ";
       cin >> y;

       printf("%s 전 x: %d, y: %d \n", t.c_str(), x, y);
       swap2num(&x, &y);
       printf("%s 뒤 x: %d, y: %d \n", t.c_str(), x, y);
}

void swap2num(int* a, int* b){
       int temp = *a;
       *a = *b;
       *b = temp;
}
Flash+Actionscript 3.0에서 숫자바꾸기
//화면에 숫자 입력용으로 'input01', 'input02'란 명칭의 인풋 텍스트 2개와 출력용 'output01', 'output02' 명칭의 다이나믹 텍스트 2개, 'swapBtn'이란 명칭의 버튼용 무비클립을 만들어 두다.

var x1:Object = new Object;
var y1:Object = new Object;

function init(){
     x1.num = y1.num = 0;
     swapBtn.addEventListener(MouseEvent.CLICK, swapClick);
     swapBtn.addEventListener(MouseEvent.MOUSE_OVER, swapOver);
     swapBtn.addEventListener(MouseEvent.MOUSE_OUT, swapOut);
}


function swapClick(e:MouseEvent){
     x1.num = int(input01.text);
     y1.num = int(input02.text);
     swaps(x1, y1);
     output01.text = x1.num;
     output02.text = y1.num;
}
function swapOver(e:MouseEvent){ swapBtn.gotoAndStop(2);}
function swapOut(e:MouseEvent){ swapBtn.gotoAndStop(1);}

function swaps(a, b){
     var temp = a.num;
     a.num = b.num;
     b.num = temp;
}

init();