| Package | 톱 레벨 |
| Class | public dynamic class Class |
| Inheritance | Class Object |
new 연산자를 사용해 불려 가면, 클래스 object는 클래스의 인스턴스를 작성합니다.
flash.net.getClassByAlias() 등의 몇개의 Methods는, Class 형의 object를 돌려줍니다. 그 이외의 Methods는,flash.net.registerClassAlias() 등의 Class 형의 Parameters를 가지는 경우가 있습니다.
클래스명은, 다음에 예를 나타내도록(듯이), Class object에의 참조입니다.
class Foo {
}
class Foo{} 명령문(statement)는 Class object Foo 를 작성하는 클래스 정의입니다. 또,new Foo() 명령문(statement)는, Foo 클래스의 새로운 인스턴스를 작성합니다. 결과는 Foo 형이 됩니다.
class 명령문(statement)를 사용해 클래스를 선언합니다. 다음의 예로 가리키도록(듯이), Class object는, 실행시에 기존 인스턴스 object에 클래스를 할당한다고 한, 확장된 수법의 경우에 사용합니다.
클래스의 정적 property와 Methods는, 클래스의 Class object에 존재합니다. 클래스 자체는 prototype 를 선언합니다.
통상은, Class 형의 변수를 수동으로 선언 또는 작성할 필요는 없습니다. 다만, 다음에 나타내는 코드에서는, 클래스가 Public의 Class property circleClass 로서 할당할 수 있어 이 Class property를 메인의 Library 클래스의 property로서 참조할 수가 있습니다.
package {
import flash.display.Sprite;
public class Library extends Sprite {
public var circleClass:Class = Circle;
public function Library() {
}
}
}
import flash.display.Shape;
class Circle extends Shape {
public function Circle(color:uint = 0xFFCC00, radius:Number = 10) {
graphics.beginFill(color);
graphics.drawCircle(radius, radius, radius);
}
}
다른 SWF 파일에 의해, 작성된 Library.swf 파일이 로드 되어 Circle 형의 object가 인스턴스화 되는 일이 있습니다. 다음의 예는, child SWF 파일의 Assets에 액세스 하는 1 개의 방법을 나타내고 있습니다. 그 밖에,flash.utils.getDefnitionByName() 를 사용하는지, child SWF 파일의 그루터기 정의를 임포트 한다고 하는 방법도 있습니다.
package {
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
public class LibaryLoader extends Sprite {
public function LibaryLoader() {
var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("Library.swf");
ldr.load(urlReq);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
}
private function loaded(event:Event) :void {
var library:Object = event.target.content;
var circle:Shape = new library.circleClass();
addChild(circle);
}
}
}
ActionScript 3.0 에서는, SWF 파일에 컴파일 되는 외부 Assets (이미지, 사운드, 폰트등)에 대해서 포함(Embed)된 클래스를 작성할 수 있습니다. 이전의 버젼의 ActionScript 에서는,MovieClip.attachMovie() Methods를 사용해, 링키지 식별자에 의해 외부 Assets을 관련짓고 있었습니다. ActionScript 3.0 에서는, 각 포함(Embed)되어 있는 Assets이 고유의 포함(Embed)되어 있는 Assets 클래스에 의해 나타내집니다. 그 때문에,new 연산자를 사용해 Assets의 관련 클래스를 인스턴스화하는 것이나, 그러한 Assets에 대해 Methods나 property를 호출할 수가 있습니다.
예를 들어, MXML 컴파일러를 사용해 SWF 파일을 생성하는 경우, 다음과 같이 Embed되는 클래스를 작성합니다.
[Embed(source="RIGHT.jpg")] public var imgCls:Class;
게다가 이것을 인스턴스화하기 위해서(때문에), 다음의 코드를 추가합니다.
var myImg:Bitmap = new imgClass();
See also
ClassA 와 ClassB 로서 선언합니다. classToConstruct 라는 이름의 Class 형의 변수와
Boolean 형의 변수 chooseClassA 를 선언합니다. 이 예에서는, 이 Boolean 형의 변수는 true 로 설정되어 있습니다만,
코드로 custom 테스트식을 사용해 이 변수의 값을 설정할 수가 있습니다.
package {
import flash.display.Sprite;
public class ClassExample extends Sprite {
public function ClassExample() {
var classToConstruct:Class;
var classInstance:Object;
classToConstruct = ClassA;
classInstance = new classToConstruct();
trace(classInstance); // [object ClassA]
classToConstruct = ClassB;
classInstance = new classToConstruct();
trace(classInstance); // [object ClassB]
}
}
}
class ClassA {
}
class ClassB {
}