웹디자인 강의
Flash [ 플래시 2004 프로페셔널 ] AS2.0 클래스 작성
2004.02.26 19:26
플래시에서 클래스는 모두 액션스크립트 파일(.as)에 기술되어야 합니다.
다음은 AS파일을 만드는 방법입니다.
새 문서를 열게 되면(Ctrl+N) New Document 새 문서대화박스를 볼 수 있습니다.
이곳에서 ActionScript 파일을 선택한 후 확인버튼을 클릭해서 새 액션스크립트 파일을 엽니다.
이 작업은 AS2.0의 클래스 시작이 될 것입니다.
클래스의 이름 결정
클래스 이름은 보통 대문자를 사용합니다. 이것은 정해진 것은 아니지만 일반 메서드 및 변수를 포괄하고 또 다른 클래스를 포함한다는 의미에서 대문의 역할을 위해 클래스는 대문자를 사용합니다. 클래스의 이름을 지을 때 변수의 명명법-숫자, 특수문자 등은 첫글자로 사용할 수 없음-을 지킨다면 그 어떤 형태로도 사용이 가능합니다.
클래스 스펙
[dynamic] class className [ extends superClass ][ implements interfaceName [, interfaceName... ] ]
{
// class definition here
}
클래스 스펙에 맞추어 옵션을 제한 가장 기초의 클래스를 만든다면 다음과 같이 사용할 수 있습니다.
다음은 Car 라는 클래스를 생성하는 것입니다.
class Car
{
}
플래시의 클래스는 클래스 외부에 메서드 및 속성을 둘 수 없으며 오직 {}블럭의 내부에서만 기술되어져야 합니다.
클래스를 만들기 위해서는 몇가지 제반지식을 더 요구합니다.
1. 클래스선언
2. 블럭시작
3. 멤버필드선언 및 초기화
4. 생성자
5. 멤버메서드1
멤버메서드2
멤버메서드3
멤버메서드N
6. 블럭종료
*블럭은 {} 중괄호를 나타냅니다.
1번~6번까지가 클래스 작성을 위한 기초지식입니다.
1. 클래스 선언
이 항목은 클래스 선언하는 부위를 나타냅니다.
2. 블럭시작
이 항목은 클래스안에 코드를 기술하기 위한 프로시저의 시작을 의미합니다.({)
3. 멤버필드 선언 및 초기화
클래스가 가진 속성 및 메서드를 선언하고 초기화 하는 과정을 다룹니다.
4. 생성자
생성자는 생성자함수로도 불리며 이것은 클래스 멤버를 초기화 하는데 그 목적이 있습니다.
보통 멤버필드를 선언하고 초기화는 생성자에서 하는 것이 관례입니다.
5. 멤버메서드1~N
멤버메서드1~N은 메서드를 나타내며 그 개수는 만드는 개수에는 제한이 없습니다.
6. 블록종료(})
클래스의 마지막을 나타냅니다.
이것을 바탕으로 가장 기본형태의 멤버를 구성합니다.
다음의 경우 Car 클래스를 만들고, _hisage를 Number 형으로 _names를 String형으로 그리고 _area를 Fucntion으로 설정하는 것입니다.
멤버 필드
class Car
{
private _hisage:Number;
private _names:String;
public _area:Function;
}
private와 public를 사용했는데 이렇게 되면 외부에서는 public만을 사용하게 되는 것입니다.
생성자
class Car
{
private _hisage:Number;
private _names:String;
public _area:Function;
// constructor
function Car()
{
}
}
생성자는 클래스의 이름과 같다는 것이 또 다른 큰 특징입니다.
이렇게 되면 가장 기초생성자를 생성한 것입니다.
메서드추가
class Car
{
private _hisage:Number;
private _names:String;
public _area:Function;
// constructor
function Car()
{
}
public function _area():Number
{
return 10*10
}
}
_area 메서드를 Number형으로 만들고 10*10의 결과를 돌려주게 됩니다.
지금의 _area 메서드의 경우 반환형이 Number이므로 함수의 선언에 Number이라는 타입을 넣었으며,
반환형이 없다면 Void로 바꾸어 사용할 수 있습니다.
그러면 좀더 많은 사용이 용이한 형태로 바꾸기위해서는 다음과 같이 작성해야 합니다.<BR/>
// Car.as
class Car
{
public var velocity:Number=0;
public var wheelNum:Number;
public var carName:String;
function Car()
{
}
// speed Up
function speedUp():Void
{
velocity++
}
// speed Down
function speedDown():Void
{
velocity--;
if (velocity<0)
{
velocity = 0;
}
}
// stop();
function stop():Void
{
velocity = 0;
}
}
speedUp, speedDown, stop 메서드는 플래시 무비에서 사용될 것입니다.
이제 클래스는 Car.as 라는 이름으로 저장을 합니다.
새 문서를 열고 플래시문서를 선택해서 플래시 화면을 불러옵니다.
Car클래스를 사용하기 위해서 하드드라이브의 같은 경로에 플래시 무비를 위치시킬 필요가 있습니다.
(아직은 기초이기 때문입니다.)
그리고 Car.fla라는 이름이로 저장합니다.
root 1프레임에 다음과 같은 코드를 입력합니다.
var myCar:Car;
myCar = new Car();
myCar.speedUp();
myCar.carName = "BMW"
trace(myCar.carName+"의 속도는 "+myCar.velocity)
무비를 테스트 하면 다음과 같은 결과를 볼 수 있을 것입니다.
Output
BMW 속도는 1
-----------------------------------------------------
var myCar:Car
이것은 myCar라는 변수를 Car이라는 타입으로 만드는 것입니다.
보통 변수는 숫자형, 문자형, 부울형, 무비클립형, 객체형, 함수형 등 여러가지 데이터형(data type)이 있으며 이것은 내장 데이터 형이지만 지금의 myCar와 같이 사용자 정의 데이터 타입을 변수에 줄 수가 있습니다.
myCar 변수는 Car 클래스의 객체로 사용된다는 것을 의미합니다.
myCar = new Car();
이것은 보통 "Car클래스로 myCar라는 객체를 만들다"라고 표현을 합니다.
Car()의 좀더 명확한 의미는 "Car 클래스의 생성자인 Car()생성자함수를 호출한다"입니다.
new
new는 플래시 프로그램을 풀어가는 키워드(Keyword)로 free store에 상점 즉, 객체를 만드는 것을 의미합니다.
freestore는 자유로운 가게로 즉, 메모리의 자유기억영역에 해당합니다.
new로 무언가 만들게 되면 그것은 "상점을 만든다"라고 표현하며, 만든 상점이 필요없을 때 delete키워드를 사용해서
상점을 다른 사람이 쓸 수 있도록 원래의 주인에게 되돌려 줍니다.
사용하는 방법은 지금처럼 할당연산자(=) 다음 new를 사용하며 한칸을 띄운 뒤 클래스 생성자를 적어주면 됩니다.
두 문장을 한문장으로 만들려면 다음처럼 사용할 수 있습니다.
var myCar:Car = new Car();
처음에는 혼동스럽지만 그것은 익숙하지 않아서기 때문에 그점은 당연합니다.
myCar.speedUp();
speedUp()은 Car클래스에서 함수로 작성되었습니다. 하지만 Car 클래스는 독자적으로 사용할 수 없으며 프로그램에서 항상 객체를 빌어서 사용하게 됩니다. 즉, Car는 어떤 범주(데이터타입)을 말하기 때문에 존재하지 않는 것이라 볼 수 있습니다.
여기서 Car의 실존화된 것은 바로 myCar입니다. 물론 객체는 플래시 툴이 다운되지 않는 범위 내에서 객체를 무제한 만들 수 있는 점이 있는데 이것에 대해서는 좀더 복잡한 형태의 무비를 만들 때 접하게 될 것입니다.
myCar객체는 Car 클래스의 자식 객체인 개념이 되므로 결국 클래스의 멤버를 자유로이 사용할 수 있게 됩니다.
이것은 AS1.0의 시절 prototype와 비슷한 형태이며, 단 myCar 객체에서 사용할 수 있는 것은 public키워드가 적용된 메서드와 멤버에 한해서입니다.
Car클래스의 speedUp() 함수입니다.
function speedUp():Void
{
velocity++
}
velocity를 증가시키는 것을 볼 수 있습니다. 나중에 velocity를 소환해본다면 1이라는 값이 저장되어 있을 것입니다.
myCar.carName = "BMW"
이 문장은 클래스 멤버변수 carName에 접근해서 "BMW"라는 문자열을 할당하는 것입니다.
trace(myCar.carName+"의 속도는 "+myCar.velocity)
이렇게 해서 출력문을 빌어서 테스트 하게 되면 "BMW 속도는 1"이라고 나오게 됩니다.
지금 학습한 형태는 플래시 AS2.0 클래스의 가장 지식중 하나입니다.
----------------------------------------------
[Fc]
+I'm from your friendsofed Fc
+http://www.ysbn200.com
+http://www.flashconference.co.kr
+한국 플래시컨퍼런스 코리아
+jk9089@hanafos.com