[출처] 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






본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
21 [UX 디자인] 직관적 디자인(Intuitive Design) file 졸리운_곰 2016.10.08 609
20 [UX 디자인] 천재적 디자인(Genius Design) file 졸리운_곰 2016.10.08 552
19 [UX 디자인] 목표 지향 디자인 (Goal-Directed Design) file 졸리운_곰 2016.10.08 364
18 [UX 디자인] 사용자 중심 디자인(User Centered Design) file 졸리운_곰 2016.10.08 408
17 [UX 디자인] 기능 중심 디자인(Feature Centered Design) file 졸리운_곰 2016.10.08 411
16 [UX 디자인] 인터랙션 디자인의 7가지 접근 방법 졸리운_곰 2016.10.08 555
15 [웹 기획] 성공적인 웹사이트 구축을 위한 9가지 역할 file 졸리운_곰 2016.10.08 488
14 [웹 기획] 웹기획의 기본 - 사용자 경험(UX)의 5가지 계층 file 졸리운_곰 2016.10.08 413
13 [웹 기획] 8) 사용자 행동 방식 - 평균 사용자의 행동 패턴 file 졸리운_곰 2016.10.08 367
12 [웹 기획] 7) 사용자 행동 방식 - F자 형태의 웹 콘텐트 읽기 패턴 file 졸리운_곰 2016.10.08 492
11 [웹 기획] 6) 사용자 행동 방식 -[퀴즈] 사용자는 광고처럼 보이는 것을 무시한다 file 졸리운_곰 2016.10.08 527
10 [웹 기획] 4) 사용자 행동 방식 - 사용자는 광고를 피하고 싶어한다. Q file 졸리운_곰 2016.10.08 347
9 [웹 기획} 3) 웹기획의 기본 - 조직 규모에 따른 웹기획자의 역할 file 졸리운_곰 2016.10.08 451
8 [웹 기획] 2) 웹기획의 기본 - 웹사이트 구축을 위한 조직 형태와 역할 file 졸리운_곰 2016.10.08 641
7 [웹 기획] 1) 웹기획의 기본 - 웹기획자는 누구인가 file 졸리운_곰 2016.10.08 602
6 반응형 웹 기획 file 졸리운_곰 2016.10.08 700
5 한국형웹콘텐츠접근성지침2.1 file 졸리운_곰 2016.10.08 675
4 웹표준 가이드 firefox 사이트 crossbrowsing-v2 file 졸리운_곰 2016.10.08 397
3 홈페이지 평가 방법론 file 졸리운_곰 2014.12.09 532
2 웹사이트 평가 지표 졸리운_곰 2014.12.09 744
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED