자 일단 한가닥 하시는 고수분들은 Backspace~, 뒤로가기, Alt + F4, Ctrl+Alt+Del~!!!
ㅎㅎ 이제 막 액숀에 맛들이신 분이나
소스 라인긴거 죽기보다 싫으신 저같은 분들을 위해서
다들 아시지만 몇가지 정리해봤습니다^^
1. if, for 문 간단하게 쓰기
보통 if문은 아래와 같이 쓰죠.
if( 조건문 )
{
// 실행
}
근데 실행할 스크립트가 한줄일경우에는 굳이 {} 를 안써주셔도 됩니다
if( isOver == true ) //실행문;
for( var i:Number = 0 ; i < 10 ; i++ ) a++;
일케 하면 소스가 좀 짧아집니당~
2. with 문 피해가기
어떤 무비클립 안에 빈 무비클립을 만든다음 그놈을 컨트롤하기 위해서 아래와 같이 자주 쓰죠.
someMC.createEmptyMovieClip("tmp", 1);
with(someMC.tmp)
{
//소스
}
요놈을 조금이라도 줄이려면
var tmp:MovieClip = someMC.createEmptyMovieClip("tmp", 1);
tmp._x = 0;
tmp._y = 0;
tmp._alpha = 30;
이런식으로 하면 딱 두줄 줄어듭니다 -_-+
3. if문 을 삼항식으로 대체하자
삼항식은 대입연산을 실행할때 간단한 조건문을 달아 줄 수 있습니다.
var a:Number = 2;
var b:Number = 3;
var c:Number;
if( a > b )
{
c = a;
}
else
{
c = b;
}
일케 쓰죠.
요놈을 줄여보면
var a:Number = 2;
var b:Number = 3;
var c:Number = ( a > b )? a : b;
이렇게 줄일수 있습니다.
() 안의 조건문이 참이면 : 의 좌측항을, 거짓이면 : 의 우측항을 대입시켜줍니다.
참, 거짓만을 가려서 "대입"할때만 쓰면 유용합니다.
4. 변수 선언 지겹다~
클래스를 사용하게 되면서 자연스레 알게 되는 것이지만
아직 클래스를 두려워하는분도 있을것이라는 생각에 씁니다 ㅎㅎ
변수 선언할때 초기값을 지정하지 않아도 될경우에는 "," 콤마를 사용해서 한줄로 선언할 수 있습니다.
var a:Number, b:String, isOver:Boolean, someFunc:Function;
이런식으로 말이죠 ㅎㅎ
5. 같은 값은 한번에 대입시키자!!
대각선으로 무비클립이 움직인다고 가정을 해봅시당~
mc._x = 10*i;
mc._y = 10*i;
라고 표현할 수 있는데 = 대입연산자는 꼭 한번만 쓸 필요는 없습니다.
대입연산자의 우측을 좌측으로 대입시켜주는 순서이기 때문에
mc._x = mc._y = 10*i;
라고 할 수 있습니다.
함수도 마찬가지죠
mc.onRollOut = mc.onRollOutside = mc.onDragOut = function()
{
// 함수
}
라고 선언해줄 수 있습니다.
6. 이벤트를 내가 호출해보자
저도 이것을 알기전에 무지 삽질했었는데
잘 사용하면 아주 유용합니다.
mc.onRollOver = function()
{
trace("it's over!!!");
}
mc라는 무비클립에 마우스를 가져가면 출력하라는 스크립트죠.
하지만 metooMC 라는 무비클립에 마우스를 가져가도 mc가 눌린것 처럼 보이게 하려면 어떻게 해야할까요?
metooMC.onRollOver = mc.onRollOver;
이렇게 호출해줄수 있습니다.
하지만 이경우 잘 고려하지 않으면 두 이벤트가 동시에 발생할 수 도 있기 때문에
상황을 잘 판단해서 사용하셔야 합니다.
7. 두 숫자를 바꿔보자
스카야마가 미끼를 던져준 센스입니다.
var a:Number = 13;
var b:Number = 8;
이 두숫자를 바꾸려면 어떻게 해야할까요?
야매로 배운 저같은 경우에는 임시변수를 이용해서 바꾸는 방법으로 배웠습니다.
var tmp:Number = 0;
tmp = a;
a = b;
b = tmp;
이렇게 하라고 배웠고 한동안 쭈욱 일케 썼습니다.
하지만 간단한 더하기 빼기로 쉽게 바꿀수 있습니다.
a = a+b;
b = a-b;
a = a-b;
trace(a + " / " + b) //=> 8 / 13
문자열도 가능하지만 조금 복잡하게 처리해줘야하기때문에
간단한 비트연산인 숫자형에게 가장 적합합니다.
속도도 문제될게 없기 때문에 추천하는 센스입니다^^
8. eval() 사용하기
저는 eval() 을 함수내에서 for문 돌릴때 주로 사용하는데 예를 들어
var a1:Number = 3;
var a2:Number = 5;
var a3:Number = 4;
function stepOrder()
{
for(var i:Number = 1 ; i <= 3 ; i++)
{
// 어떻게 넣을까...
}
}
저 부분에 this 를 쓰면 함수가 반환되고, 그렇다고 _root 를 쓰기엔 경로가 문제될거 같고
_parent는 아닌거 같고...
이때 eval()을 자주 사용합니다.
eval("a"+i) = i*3; // 3, 6, 9
라고 쓰면 경로를 타지 않고 해당 변수명을 참조할 수 있습니다.
===========================================================================================================
ㅎㅎ 더 있는거 같았는데 생각이 안나는군요.
며칠전에 써놨던거라 생각나면 더 추가할라그랬는데 머리가 멍하군요 ㅋㅋ
다들 도움 되셨기를 바랍니다.
'ActionScript 3.0 > 팁 & 노하우' 카테고리의 다른 글
[AS3] SWC 로 폰트 가볍게 Embed 하기 (33) | 2007.10.10 |
---|---|
[AS3.0] 반복되는 소스!! 이렇게 해결하자. (0) | 2007.10.08 |
[AS3.0] 무비클립 자동 선언 디폴트값으로 설정하기 (0) | 2007.10.08 |
[AS3.0] 라이브러리에 있는 이미지 편하게 가져다 쓰기. (0) | 2007.09.28 |
[Javascript] IE7.0 에서 window.close() 할때 나타나는 알럿창 없이 사용하기. (0) | 2007.09.12 |