[출처] http://www.hanbit.co.kr/network/view.html?bi_id=1483

ActionScript 3.0 : 어려울까요? 안 어려울까요? - (1)

등록일 : 2008년 01월 09일 | 조회수 : 3,514

                       
제공 : 한빛 네트워크
저자 : Colin Moock
역자 : 박주현
원문 : ActionScript 3.0: Is It Hard or Not?

가끔 몇몇 분들이 ActionScript 3.0에서는 객체지향 프로그래밍을 준수해야 하고, 변수를 사용하기 전에 항상 선언을 해야 하며, 패키지 혹은 클래스에 반드시 집어넣어서 만들어야 한다고 주장합니다. 사실 그 말은 틀렸습니다. ActionScript 3.0 에서는 ActionScript 2.0 나 ActionScript 1.0 에서와 같이 각timeline에 코드를 넣을 수 있습니다. 또한 코드들이 반드시 클래스 안에 붙어있어야 하지 않습니다. strict compilation 모드에서도 별다른 변수형 선언 없이 변수를 사용할 수 있습니다. 이 언어는 필요한대로 복잡한 구조 혹은 간단한 구조 중에서 사용자 입맛에 맞게 적절히 사용할 수 있게 디자인되었습니다. 함수와 변수만 사용하는 간단한 절차형언어형 또한 ActionScript 3.0에서도 각 프레임 단위로 삽입이 가능합니다.

배우기 어려워요!

놀랍게도 대학교수급의 강사 분들이 ActionScript 3.0 은 학생들에게 너무 어려워서 대신 ActionScript 1.0 이나 ActionScript 2.0 을 가르친다고 합니다. 이는 ActionScript 3.0 에서는 자바스타일의 OOP만 가능하고, ActionScript 1.0 에서는 간단한 timeline 스크립팅으로 가능하다고 생각하는 탓인 것 같습니다. 정말로 ActionScript 3.0 는 자바스타일 프로그래밍이 가능합니다만, Flash 4에서 쓰였던 간단한 스크립트들 모두 여전히 사용 가능합니다.

ActionScript 3.0과 ActionScript 1.0중 어느것이 정말로 어려운지를, 개발에 있어서 기본이 되는 몇몇 간단한 코드들을 비교하여 봅시다. 각 예제에서 전자가 ActionScript 1.0 버전의 코드이고, 후자가, ActionScript 3.0의 코드입니다.

ActionScript 1.0에서의 예제입니다. 이 소스는 swf 파일의 로딩을 기다리고, 로딩이 되면 다음프레임으로 넘어가게 합니다.
// 4프레임 코드
if (_framesloaded == _totalframes) {
  gotoAndPlay(6)
}

// 5프레임 코드
gotoAndPlay(4); 
같은 동작을하는 ActionScript 3.0소스입니다.
// 4프레임 코드
if (framesLoaded == totalFrames) {
  gotoAndPlay(6);
}

// 5프레임 코드
gotoAndPlay(4); 
‘_’를 없애고 각 단어의 첫 글자를 대문자로 바꾼 ActionScript 3.0의 “framesLoaded”와 “framesLoaded” 는 확실히 ActionScript 1.0에서의 그것보다 명료해서 배우기도 쉽습니다.

다음으로 프로그램으로 오브젝트를 움직이는 예제를 살펴보겠습니다. 다음의 ActionScript 1.0 코드는 지정한 무비클립을 수평으로 움직입니다. 이 무비클립은 Flash에서 “ball”로 명명하고 1프레임에 놓였다고 가정하겠습니다.
// 1프레임 코드
setInterval(moveBall, 20);

function moveBall () {
  ball._x += 10;
}
아래는 ActionScript 3.0코드입니다
// 1프레임 코드
setInterval(moveBall, 20);

function moveBall () {
  ball.x += 10;
}
마찬가지로 차이점은 ActionScript 1.0의 “_x”에서 언더바를 제거하여 ActionScript 3.0에서는 “x”를 사용한다는 것입니다. ActionScript 3.0에서도 무비클립 인스턴스는 여전히 각각의 인스턴스 이름을 통해 화면에서 움직이게 할 수 있습니다. 여전히 ActionScript 3.0에서 setInterval()함수도 동일하게 쓸 수 있습니다. 하지만 새로 추가된 Timer 클래스를 쓰면 더욱 향상된 재생, 정지 또는 반복기능을 사용할 수 있습니다.

이제 조금 더 복잡한 프로그래밍 모션 예제를 보겠습니다. 우선 ActionScript 1.0에서 살펴 보겠습니다. 이 코드는 무비클립을 원 주위를 한 바퀴 돌아가게 합니다. 역시 그전에 Flash에서 무비클립을 ‘ball’로 이름 짓고 1프레임에 배치 하였습니다.
var rpm = 30;
var radius = 150;
var centerX = 230;
var centerY = 200;
var theta = 0;
var degreesPerSecond = rpm * 360 / 60;
var  now = getTimer();

var intervalID = setInterval(moveClipAroundCircle, 20, ball);

function moveClipAroundCircle (theClip) {
  var then = now;
  now = getTimer();
  var elapsed = now - then;
  var numSeconds = elapsed / 1000;
  var degreeIncrement = degreesPerSecond * numSeconds;
  theta += degreeIncrement;
  theta %= 360;
  var radians = degreesToRadians(theta);
  theClip._x = centerX + Math.cos(radians) * radius;
  theClip._y = centerY - Math.sin(radians) * radius;
}

function degreesToRadians(degrees) {
  return (degrees/180) * Math.PI;
}
아래는 ActionScript 3.0 코드입니다.
// Code on frame 1
var rpm = 30;
var radius = 150;
var centerX = 230;
var centerY = 200;
var theta = 0;
var degreesPerSecond = rpm * 360 / 60;
var  now = getTimer();

var intervalID = setInterval(moveClipAroundCircle, 20, ball);

function moveClipAroundCircle (theClip) {
  var then = now;
  now = getTimer();
  var elapsed = now - then;
  var numSeconds = elapsed / 1000;
  var degreeIncrement = degreesPerSecond * numSeconds;
  theta += degreeIncrement;
  theta %= 360;
  var radians = degreesToRadians(theta);
  theClip.x = centerX + Math.cos(radians) * radius;
  theClip.y = centerY - Math.sin(radians) * radius;
}

function degreesToRadians(degrees) {
  return (degrees/180) * Math.PI;
}
역시 변수명에서 언더바가 빠진 게 두 코드의 차이입니다. 때문에 ActionScript 3.0 코드가 ActionScript 1.0 코드보다 깔끔합니다. 안 어렵습니다.



경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com






본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
23 basic plot graph by javascript, 자바스크립트로 그래프그리기 초간단 졸리운_곰 2015.11.13 581
22 A Survey of the JavaScript Programming Language file 졸리운_곰 2015.11.12 665
21 SVG by HTML5 file 졸리운_곰 2015.11.12 463
20 JavaScript Canvas examples 졸리운_곰 2015.11.10 363
19 JSON in JavaScript file 졸리운_곰 2015.10.21 246
18 [MEAN Stack] MEAN Stack 소개 file 졸리운_곰 2015.10.11 564
17 자바스크립트 패킹(packing), 자바스크립트 난독화, file 졸리운_곰 2015.05.31 920
16 •웹 소켓(Web Socket)이 있기까지 file 졸리운_곰 2015.05.22 762
15 XE 템플릿 구문 졸리운_곰 2015.05.12 1136
14 자바스크립트의 한계 / 자바스크립트란 무엇인가? 졸리운_곰 2015.04.28 634
13 홈페이지 평가 방법론 file 졸리운_곰 2014.12.09 532
12 웹사이트 평가 지표 졸리운_곰 2014.12.09 743
11 ActionScript 3.0 학습에 도움이 되는 팁 file 졸리운_곰 2014.06.22 782
10 ActionScript 3.0 : 어려울까요? 안 어려울까요? - (3) 졸리운_곰 2014.06.22 762
9 ActionScript 3.0 : 어려울까요? 안 어려울까요? - (2) 졸리운_곰 2014.06.22 799
» ActionScript 3.0 : 어려울까요? 안 어려울까요? - (1) 졸리운_곰 2014.06.22 905
7 2014년 제1회 웹디자인 기능사 필기 기출문제 file 졸리운_곰 2014.01.26 1015
6 jQuery가 뭔가요? 가을의 곰을... 2013.12.11 1048
5 JSON(JavaScript Object Notation)사용법에 대해 가을의 곰을... 2013.01.30 1140
4 JQuery Ajax로 Json사용 가을의 곰을... 2013.01.30 1833
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED