'Programming/Action Script 2.0'에 해당하는 글 20건

반응형
패키지
  • 파일들을 구분해서 저장하는 하드디스크상의 디렉토리
  • 클래스와 인터페이스를 그룹으로 분류하여 넣는 공간
  • 서로 다른 네임스페이스로 구분

패키지 문법

packagename.ClassName
  • 클래스와 구분하기 위해 첫 글자를 대문자로 표기하지 않는다.
  • 패키지나 클래스의 이름이 충돌하지 않도록 도메인 이름을 먼저 표기한다.

Import문

import packagename.ClassName;
import packagename.*; (전체 패키지 불러오기)
import.packagename.subpackagename.*;
  • import문을 사용한 이후에는 전체경로 접근법 대신에 상대경로 접근법을 사용할 수 있다.

반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
반응형
인터페이스
  • 새로운 데이터타입을 생성하는데 사용
  • 추상적으로 데이터 타입만을 정의
  • 클래스가 어떤 인터페이스를 구현한다면, 해당 인터페이스에 존재하는 메소드를 모두 정의해야 함 (파라미터 개수, 파라미터 데이터타입, 반환값의 데이터타입도 동일)

인터페이스 문법

interface SomeName {
  function method1 ( param1:datatype, ...paramn:datatype ):returnType;
  function method2 ( param1:datatype, ...paramn:datatype ):returnType;
  ...
  function methodn ( param1:datatype, ...paramn:datatype ):returnType;
}
  • interface 키워드를 사용하여 인터페이스를 생성
  • 모든 메소드 선언시 public으로 선언하며, 중괄호({}) 미포함
  • 인터페이스 내부에 속성을 선언할 수 없음
  • 인터페이스안에 인터페이스를 선언할 수 없음

인터페이스 사용법

class SomeName implements SomeInterface1, ...SomeInterfacen {
}
  • 인터페이스를 사용하고자 하는 클래스는 implements 키워드를 사용하여 구현
  • implements 키워드는 extends 키워드 뒤에 위치해야 함
  • 콤마(,)를 사용하여 여러개의 인터페이스(데이터타입)를 사용할 수 있음

인터페이스 이름 짓기 규칙

  • 데이터타입으로서 쉽게 구분지을 수 있도록 첫글자는 대문자로 정의
  • 이벤트를 다루기 위해 인터페이스를 사용하는 경우 -Listener 접미사 사용
  • 어떤 능력을 나타내는 경우 -able 접미사 사용

인터페이스의 상속

  • 서브인터페이스를 구현하는 클래스는 슈퍼인터페이스의 메소드까지 모두 구현해야 함
// IntA 슈퍼인터페이스
interface IntA {
  function methodA ( ):Void;
}
// IntB 서브인터페이스
interface IntB extends IntA {
  function methodB ( ):Void;
}

마커 인터페이스

  • 마커(maker) 인터페이스는 텅빈 인터페이스를 뜻함
  • 클래스가 가지는 역할을 표시하기 위해 사용
interface SomeMakerInterfaceName {
}
반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
반응형
이미지뷰어의 성능 확장 (서브 클래스 사용)
  • 이미지 로드
  • 이미지 출력
  • 마스크 설정
  • 이미지 주변에 경계선 표시
  • 이미지의 다운로드 상태를 표시
  • 화면 영역의 위치를 재설정
  • 화면 영역의 크기를 재설정
/**
* ImageViewer
* An on-screen rectangular region for displaying a loaded image.
* Updates at: http://www.oops4u.com/blog/as2/imageviewer5/
*
* @author: Oops4u.com
* @version: 5.0.0
*/

/**
* 화면 영역의 위치와 크기를 재설정 할 수 있는 ImageViewer의 서브클래스
*/
// ImageViewer 클래스의 인스턴스 생성방법 유지
class ImageViewerDeluxe extends ImageViewer {
  public function ImageViewerDeluxe ( target:MovieClip, depth:Number, x:Number, y:Number, w:Number, h:Number, borderThickness:Number, borderColor:Number ) {
    // ImageViewer 클래스의 생성자를 실행
    super ( target, depth, x, y, w, h, borderThickness, borderColor );
  }
  // 이미지 크기를 자동으로 조정할지 여부를 결정하는 속성
  private var showFullImage:Boolean = false;

/**
* 화면 영역의 위치를 설정
*
* @param x: 화면의 가로 위치
* @param y: 화면의 세로 위치
*/
  public function setPosition ( x:Number, y:Number ) {
    container_mc._x = x;
    container_mc._y = y;
  }

/**
* 화면 영역의 크기를 설정 (즉, 마스크와 경계선 재설정)
*
* @param w: 새로운 화면의 가로 길이, 픽셀
* @param h: 새로운 화면의 세로 길이, 픽셀
*/
  public function setSize ( w:Number, h:Number ) {
    createImageClipMask ( w, h );
    createBorder ( w, h );
    container_mc.image_mc.setMask ( container_mc.mask_mc );
  }

/**
* 로드된 이미지의 가로 길이를 구하는 메소드
*/
  public function getImageWidth ( ):Number {
    return container_mc.image_mc._width;
  }

/**
* 로드된 이미지의 세로 길이를 구하는 메소드
*/
  public function getImageHeight ( ):Number {
    return container_mc.image_mc._height;
  }

/**
* 전체/일부 이미지 표시 여부를 결정하는 속성을 변경하는 메소드
*
* @param show: 화면 영역의 크기를 재설정할지 여부를 나타내는 속성
*/
  public function setShowFullImage ( show:Boolean ):Void {
    showFullImage = show;
  }

/**
* 전체/일부 이미지 표시 여부를 결정하는 속성을 알아내는 메소드
*/
  public function getShowFullImage ( ):Boolean {
    return showFullImage;
  }

/**
* 전체 이미지가 보이도록 화면 영역을 조정하는 메소드
*/
  public function scaleViewerToImage ( ):Void {
    setSize ( getImageWidth ( ), getImageHeight ( ) );
  }

/**
* MovieClipLoader 핸들러. 로딩이 완료되면 동작
* 자동크기 조정 기능을 추가하여 ImageViewer.onLoadInit() 메소드를 오버라이드 함
*/
  public function onLoadInit ( target:MovieClip ):Void {
    super.onLoadInit ( target );
    if ( showFullImage ) {
     scaleViewerToImage ( );
    }
  }
}

var viewer:ImageViewerDeluxe = new ImageViewerDeluxe ( this, 1, 50, 50, 350, 250, 2, 0xFF0000 );
viewer.setShowFullImage ( true );
viewer.loadImage ( "picture.jpg" );
loadmsg_txt.removeTextField ( );
반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
반응형

서브클래스의 생성자 함수

클래스를 확장한 후 서브클래스에서 자신만의 생성자 함수를 새로 정의할 수 있다.

  • 서브클래스와 관련 있는 초기 설정 작업을 수행한다.
  • 서브클래스에 정의된 속성의 초기값을 설정한다.
  • 슈퍼클래스의 생성자를 실행한다. (super 연산자 이용)
class A {
  public function A {
  }
}

class B extends A {
  // 서브클래스의 생성자
  public function B {
    // 슈퍼클래스의 생성자를 명시적으로 호출
    super ( );
  }
}

서브클래스의 생성자 함수에서 super()는 첫 번째 줄이어야 한고, super()는 한번만 실행한다.
서브클래스의 생성자 함수는 슈퍼클래스의 생성자와 다른 파라미터로 정의할 수 있다.

class Rectangle {
  private var w:Number = 0;
  private var h:Number = 0;
  // Rectangle 생성자
  public function Rectangle ( width:Number, height:Number ) {
    setSize ( width, height );
  }
  public function setSize ( newW:Number, newH:Number ):Void {
    w = newW;
    h = newH;
  }
  public function getArea ( ):Number {
    return w * h;
  }
}

class Square extends Rectangle {
  // Square 생성자
  public function Square ( side:Number ) {
    // side 파라미터를 Rectangle 생성자로 전달
    super ( side, side );
  }
  public function setSize ( side:Number ):Void {
    super.setSize ( side, side );
  }
}
반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
반응형
속성 오버라이딩

인스턴스(또는 클래스) 속성은 클래스(또는 인스턴스) 속성으로 오버라이드 할 수 있다.
하지만 많은 혼동을 초래하기 때문에 반대의 과정을 사용하는 것은 좋지 않다.
인스턴스 속성은 오버라이드 시 자바와 달리 개별 인스턴스에서 동일한 속성 값을 가진다.
속성 오버라이드에서는 super 연산자로 슈퍼클래스의 속성에 접근할 수 없다.

클래스 속성 오버라이딩

class A {
  // 클래스 속성 s 생성
  public static var s:Number = 20;
}

class B extends A {
  // 클래스 속성 s를 오버라이드
  public static var s:Number = 25;

  public function showS ( ) {
    // 서브클래스의 속성 사용 s
    trace ( "B.s is: " + B.s );
    // 슈퍼클래스의 속성 사용 s
    trace ( "A.s is: " + A.s );
  }
}

var bInstance:B = new B ( );
bInstance.showS ( );  // 출력
// B.s is: 25;
// A.s is: 20;


인스턴스 속성 오버라이딩

class A {
  public var p:Number;
  public function setTo20 ( ):Void {
    p = 20;
  }
}

class B extends {
  public varp:Number;
  public function setTo10 ( ):Void {
    p = 10;
  }
}

var bInstance:B = new B ( );

// 슈퍼클래스의 메소드에서 p를 설정
bInstance.setTo20 ( );
trace ( bInstance.p );  // 출력 20;
// 서브클래스의 메소드에서 p를 설정
bInstance.setTo10 ( );
trace ( bInstance.p );  // 출력 10;
반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret