패키지최상위
클래스public dynamic class Class
상속Class Inheritance Object

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

프로그램의 각 클래스 정의에 대해 Class 객체가 만들어집니다. 모든 Class 객체는 Class 클래스의 인스턴스입니다. Class 객체에는 클래스의 정적 속성과 메서드가 포함됩니다. new 연산자를 사용하여 클래스 객체를 호출하면 클래스의 인스턴스가 만들어집니다.

flash.net.getClassByAlias() 등의 일부 메서드는 Class 유형의 객체를 반환합니다. flash.net.registerClassAlias() 등의 기타 메서드는 Class 유형의 매개 변수를 가질 수 있습니다.

class Foo {
 }

class Foo{} 문은 Class 객체 Foo를 만드는 클래스 정의입니다. 또한 new Foo() 문은 클래스 Foo의 새 인스턴스를 만들고 결과는 Foo 유형이 됩니다.

클래스를 선언하려면 class 문을 사용합니다. 클래스 객체는 아래 "예제" 부분에서 볼 수 있듯이 런타임에 기존 인스턴스 객체에 클래스를 할당하는 등의 고급 기술에 유용합니다.

클래스의 모든 정적 속성과 메서드는 클래스의 Class 객체에 유지됩니다. 클래스 자체는 prototype을 선언합니다.

일반적으로는 Class 유형의 변수를 직접 선언하거나 만들 필요가 없습니다. 그러나 다음 코드에서는 클래스를 공용 Class 속성 circleClass로 할당하며, 이 Class 속성을 주 Library 클래스의 속성으로 참조할 수 있습니다.

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 유형의 객체를 인스턴스화할 수 있습니다. 다음 예제에서는 자식 SWF 파일의 에셋에 액세스하는 방법 중 하나를 보여 줍니다. 이외에도 flash.utils.getDefnitionByName()을 사용하거나 자식 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 파일로 컴파일된 이미지, 사운드 또는 글꼴 등의 외부 에셋에 대한 포함된 클래스를 만들 수 있습니다. 이전 버전의 ActionScript에서는 MovieClip.attachMovie() 메서드로 링크 ID를 사용하여 이러한 에셋을 연결해야 했습니다. ActionScript 3.0에서는 포함된 각 에셋이 포함된 고유 에셋 클래스로 표현됩니다. 따라서 new 연산자를 사용하여 에셋의 관련 클래스를 인스턴스화하고 해당 에셋의 메서드와 속성을 호출할 수 있습니다.

예제 보기

참고 사항

Object.prototype
new 연산자
Classes
Advanced topics


Public 속성
 속성다음에 의해 정의됨
 Inheritedconstructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
Object
 Inheritedprototype : Object
[정적] 클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
Object
Public 메서드
 메서드다음에 의해 정의됨
 Inherited
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
Object
 Inherited
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
Object
 Inherited
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
Object
 Inherited
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
Object
 Inherited
지정된 객체의 문자열 표현을 반환합니다.
Object
 Inherited
지정된 객체의 프리미티브 값을 반환합니다.
Object
예제 예제 사용 방법
Class.1.as

다음 예제에서는 아래 단계를 통해 Class 객체를 사용하여 인스턴스화할 클래스를 런타임에 결정하는 방법을 보여 줍니다.
  1. 두 개의 클래스를 ClassAClassB로 선언합니다.
  2. classToConstruct라는 Class 유형의 변수와 chooseClassA라는 Boolean 유형의 변수를 선언합니다. 여기에서는 부울 값을 true로 설정하지만, 직접 만든 테스트 표현식을 사용하여 이 변수의 값을 설정해 볼 수도 있습니다.
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 {
}