[AS3] MovieClip 클래스

Programming/ActionScript 3.0 2007. 6. 24. 02:08
패키지    flash.display
    public dynamic class MovieClip
계승    MovieClip -> Sprite -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher  -> Object
-----------------------------------------------------------------------------
프롭퍼티
-----------------------------------------------------------------------------
currentFrame:int  [read-only]

MovieClip 인스턴스의 타임 라인내의 재생 헤드가 놓여져 있는 프레임의 번호를 나타낸다. 무비 클립에 복수의 씬이 있는 경우에는 이 값은 현재의 씬의 프레임 번호다.

public function get currentFrame():int

다음의 코드에서는 gotoAndStop() 메소드와 currentFrame 프롭퍼티를 사용하여 무비 클립 mc1 의 재생 헤드를 현재의 위치로부터 5 프레임 앞에서 정지한다.
mc1.gotoAndStop(mc1.currentFrame + 5);
-----------------------------------------------------------------------------
currentLabel:String  [read-only]

MovieClip 인스턴스의 타임 라인내의 재생 헤드가 놓여져 있는 현재의 라벨이다.

public function get currentLabel():String

다음의 코드에서는 MovieClip 오브젝트 mc1 의 currentLabel 프롭퍼티의 사용 방법을 나타낸다.

trace(mc1.currentLabel);
-----------------------------------------------------------------------------
currentLabels:Array  [read-only]

현재의 씬의 FrameLabel 오브젝트의 배열을 돌려준다. MovieClip 인스턴스가 씬을 사용하고 있지 않는 경우, 배열에는 MovieClip 인스턴스 전체의 모든 프레임 라벨이 포함된다.

public function get currentLabels():Array

다음의 코드에서는 MovieClip 오브젝트 mc1 의 currentLabels 프롭퍼티의 사용 방법을 나타낸다. FrameLabel 클래스에는 frame과 name 프롭퍼티가 정의되어 있다.

import flash.display.FrameLabel;
var labels:Array = mc1.currentLabels;
for (var i:uint = 0; i < labels.length; i++) {
var label:FrameLabel = labels[i];
trace("frame " + label.frame + ": " + label.name);
}
mc1의 프레임 중에 1프레임에 “label1”, 15프레임에 “label2”가 정의되어 있을 경우,
출력 :
frame 1: label1
frame 15: label2
-----------------------------------------------------------------------------
currentScene:Scene  [read-only]

MovieClip 인스턴스의 타임 라인내의 재생 헤드가 놓여져 있는 현재의 씬이다.

public function get currentScene():Scene

다음의 코드에서는 MovieClip 오브젝트 mc1 의 currentScene 프롭퍼티의 사용 방법을 나타낸다.

import flash.display.Scene;
var scene:Scene = mc1.currentScene;
trace(scene.name + ": " + scene.numFrames + " frames");
-----------------------------------------------------------------------------
enabled:Boolean  [read-write]

무비 클립의 유효 / 무효를 나타내는 불리언 값이다. enabled 의 디폴트는 true다. Enabled을 false 로 설정되면 버튼 무비클립의 [오버], [다운], [업]의 각 프레임은 무효가 되지만 이벤트 (mouseDown ,mouseUp ,keyDown ,keyUp 등)를 계속 받는다.

enabled 프롭퍼티는 무비 클립의 버튼을 닮은 프롭퍼티만을 제어한다. enabled 프롭퍼티는 언제라도 변경할 수 있다. 이 프롭퍼티의 변경 후 무비 클립은 곧바로 유효 / 무효가 된다. enabled 프롭퍼티가 false로 설정되어 있는 경우 오브젝트는 자동 탭 순서에 포함되지 않는다.

public function get enabled():Boolean
public function set enabled(value:Boolean):void

다음의 코드에서는 enabled 프롭퍼티를 사용하여 MovieClip 오브젝트 mc1 의 버튼을 닮은 프롭퍼티를 무효로 하는 방법을 나타낸다.

mc1.enabled = true;
mc1.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(evt:Event):void{
trace(evt.currentTarget.name);
}
위 코드에서 mc1이라는 버튼에서 over, out, down 프레임은 무효화 되지만 마우스 클릭을 통한 이벤트는 계속 받고 있는 것을 확인 할 수 있다.
-----------------------------------------------------------------------------
framesLoaded:int  [read-only]

스트리밍 SWF 파일로부터 로드 된 프레임수를 나타낸다. frameLoaded 프롭퍼티를 사용하고 특정의 프레임과 그 전의 모든 프레임의 내용이 로드 되고 있어 브라우저로 로컬에 사용할 수 있을지를 판별할 수 있다. 이것을 사용하여 큰 용량으로 제작된 SWF 파일의 다운로드를 감시할 수 있다. 예를 들어 SWF 파일의 지정된 프레임이 로드를 완료할 때까지 그 SWF 파일이 로드되지 않았다는 것을 나타내는 메세지를 유저에게 표시하는 경우에 사용할 수 있다.

무비 클립에 복수의 씬이 있는 경우는 framesLoaded 프롭퍼티는 무비 클립내의 모든 씬의 로드가 끝난 프레임의 수를 돌려준다.

public function get framesLoaded():int

다음의 코드에서는 framesLoaded 프롭퍼티와 totalFrames 프롭퍼티를 사용하고 스트리밍 MovieClip 오브젝트 mc1 의 로드가 완료했는지를 확인하는 방법을 나타낸다.

if (mc1.framesLoaded == mc1.totalFrames) {
trace("OK.");
}
-----------------------------------------------------------------------------
scenes:Array  [read-only]

MovieClip 인스턴스내의 씬의 이름 프레임수 프레임 라벨이 리스트 되어 있는 Scene 오브젝트의 배열이다.

public function get scenes():Array

다음의 코드에서는 MovieClip 오브젝트 mc1 의 scenes 프롭퍼티의 사용 방법을 나타낸다.

import flash.display.Scene;
for (var i:uint = 0; i < mc1.scenes.length; i++) {
var scene:Scene = mc1.scenes[i];
trace("scene " + scene.name + ": " + scene.numFrames + " frames");
}
-----------------------------------------------------------------------------
totalFrames:int  [read-only]

MovieClip 인스턴스내의 프레임 총수를 나타낸다.

무비 클립에 복수의 프레임이 있는 경우는 totalFrames 프롭퍼티는 무비 클립내의 모든 씬의 프레임 총수를 돌려준다.

public function get totalFrames():int

다음의 코드에서는 MovieClip 오브젝트 mc1의 totalFrames 프롭퍼티의 사용 방법을 나타낸다.

trace(mc1.totalFrames);
-----------------------------------------------------------------------------
trackAsMenu:Boolean  [read-write]

SimpleButton 또는 MovieClip 오브젝트인 다른 표시 오브젝트가 마우스 해방 이벤트를 받을 수 있을지를 나타낸다. trackAsMenu 프롭퍼티를 사용해 메뉴를 작성할 수 있다. trackAsMenu 프롭퍼티는 임의의 SimpleButton 또는 MovieClip 오브젝트에 대해서 설정할 수 있다. trackAsMenu 프롭퍼티의 디폴트는 false다.

trackAsMenu 프롭퍼티는 언제라도 변경할 수 있다. 이 프롭퍼티를 변경한 무비 클립에는 새로운 동작이 즉시 반영된다.

public function get trackAsMenu():Boolean
public function set trackAsMenu(value:Boolean):void

다음의 코드에서는 trackAsMenu 프롭퍼티를 사용해 MovieClip 오브젝트 mc1의 마우스 해방 이벤트를 유효하게 하는 방법을 나타낸다.

mc1.trackAsMenu = true;
-----------------------------------------------------------------------------
Constructor의 상세
-----------------------------------------------------------------------------
MovieClip()의 constructor   
public 함수 MovieClip()

new MovieClip()를 통해 무비클립 인스턴스를 작성 후 스테이지상의 표시 오브젝트 컨테이너의 addChild() 메소드 또는 addChildAt() 메소드를 호출할 수 있다.
-----------------------------------------------------------------------------
메소드의 상세
-----------------------------------------------------------------------------
gotoAndPlay() 메소드
public function gotoAndPlay(frame:Object, scene:String = null):void

지정된 프레임으로 SWF 파일의 재생을 시작한다. 이 처리는 프레임내의 모든 잔존 액션이 실행을 완료한 후에 행해진다. 프레임 뿐만이 아니라 씬도 지정하는 경우는 scene 파라미터의 값도 지정해 준다.
파라미터
    frame:Object — 재생 헤드의 발송지가 되는 프레임 번호를 나타내는 수치, 또는 재생 헤드의 발송지가 되는 프레임의 라벨을 나타내는 스트링이다. 번호를 지정하는 경우는 지정하는 씬으로의 번호를 지정한다. 씬을 지정하지 않는 경우는 재생하는 글로벌 프레임 번호를 결정하는데 현재의 씬을 관련지을 수 있다 .씬을 지정했을 경우 재생 헤드는 지정된 씬내의 프레임 번호로 점프 한다.
 
    scene:String (default = null) — 재생하는 씬의 이름이다. 이 파라미터는 옵션이다.

다음의 코드에서는 gotoAndPlay() 메소드를 사용해 무비 클립 mc1의 재생 헤드를 현재의 위치로부터 5프레임 앞에서 진행한다.

mc1.gotoAndPlay(mc1.currentFrame + 5);
다음의 코드에서는 gotoAndPlay() 메소드를 사용해 무비 클립 mc1의 재생 헤드를 "Scene 12"이라는 이름의 씬내의 "intro" 라벨 프레임으로 이동한다.

mc1.gotoAndPlay("intro", "Scene 12");
-----------------------------------------------------------------------------
gotoAndStop() 메소드    
public function gotoAndStop(frame:Object, scene:String = null):void

이 무비 클립의 지정된 프레임에 재생 헤드를 보내서 정지시킨다. 이 처리는 프레임내의 모든 잔존 액션이 실행을 완료한 후에 이루어진다. 프레임에 있는 씬을 지정하는 경우는 scene 파라미터를 지정한다.
파라미터
    frame:Object — 재생 헤드의 발송지가 되는 프레임 번호를 나타내는 수치 또는 재생 헤드의 발송지가 되는 프레임의 라벨을 나타내는 스트링이다. 번호를 지정하는 경우는 지정하는 씬으로의 번호를 지정한다. 씬을 지정하지 않는 경우는 발송지의 글로벌 프레임 번호를 결정하는데 현재의 씬을 관련지을 수 있다. 씬을 지정했을 경우 재생 헤드는 지정된 씬내의 프레임 번호에 보내져 정지한다.
 
    scene:String (default = null) — 씬이름이다. 이 파라미터는 옵션이다.

다음의 코드에서는 gotoAndStop() 메소드와 currentFrame 프롭퍼티를 사용하여 무비 클립 mc1의 재생 헤드를 현재의 위치로부터 5프레임 앞에서 정지한다.

mc1.gotoAndStop(mc1.currentFrame + 5);
다음의 코드에서는 gotoAndStop()을 사용해 무비 클립 mc1의 재생 헤드를 "Scene 12" 이라는 이름의 씬내의 "finale"프레임 라벨 위치로 이동해 정지한다.

mc1.gotoAndStop("finale", "Scene 12");
-----------------------------------------------------------------------------
nextFrame() 메소드    
public function nextFrame():void

다음의 프레임에 재생 헤드를 보내 정지한다. 이 처리는 프레임내의 모든 잔존 액션이 실행을 완료한 후에 이루어진다.

다음의 예에서는 2개의 SimpleButton 오브젝트가 타임 라인을 제어한다. prev 버튼은 재생 헤드를 전의 프레임으로 이동하고 nextBtn 버튼은 재생 헤드를 다음의 프레임에 이동한다.

import flash.events.MouseEvent;
mc1.stop();
prevBtn.addEventListener(MouseEvent.CLICK, goBack);
nextBtn.addEventListener(MouseEvent.CLICK, goForward);

function goBack(event:MouseEvent):void {
mc1.prevFrame();
}

function goForward(event:MouseEvent):void {
mc1.nextFrame();
}
-----------------------------------------------------------------------------
nextScene() 메소드    
public function nextScene():void

MovieClip 인스턴스의 다음의 씬에 재생 헤드를 이동한다. 이 처리는 프레임내의 모든 잔존 액션이 실행을 완료한 후에 이루어진다.

다음의 예에서는 2개의 SimpleButton 오브젝트가 타임 라인을 제어한다. prevBtn 버튼은 재생 헤드를 전 씬으로 이동하고 nextBtn 버튼은 재생 헤드를 다음의 씬으로 이동한다.

import flash.events.MouseEvent;

mc1.stop();
prevBtn.addEventListener(MouseEvent.CLICK, goBack);
nextBtn.addEventListener(MouseEvent.CLICK, goForward);

function goBack(event:MouseEvent):void {
mc1.prevScene();
}

function goForward(event:MouseEvent):void {
mc1.nextScene();
}
-----------------------------------------------------------------------------
play() 메소드    
public function play():void

무비 클립의 타임 라인내에서 재생 헤드를 이동한다.

다음의 코드에서는 stop() 메소드를 사용해 무비 클립 mc1을 정지하여 유저가 continueText라는 이름의 텍스트 필드를 클릭했을 때에 재생을 재 시작한다.

import flash.text.TextField;
import flash.events.MouseEvent;

var continueText:TextField = new TextField();
continueText.text = "Play movie...";
addChild(continueText);

mc1.stop();
continueText.addEventListener(MouseEvent.CLICK, resumeMovie);

function resumeMovie(event:MouseEvent):void {
mc1.play();
}
-----------------------------------------------------------------------------
prevFrame() 메소드    
public function prevFrame():void

전 프레임에 재생 헤드를 되돌려 정지한다. 이 처리는 프레임내의 모든 잔존 액션이 실행을 완료한 후에 이루어진다.

다음의 예에서는 2개의 SimpleButton 오브젝트가 타임 라인을 제어한다. prev 버튼은 재생 헤드를 전의 프레임으로 이동하고 nextBtn 버튼은 재생 헤드를 다음의 프레임에 이동한다.

import flash.events.MouseEvent;

mc1.stop();
prevBtn.addEventListener(MouseEvent.CLICK, goBack);
nextBtn.addEventListener(MouseEvent.CLICK, goForward);

function goBack(event:MouseEvent):void {
mc1.prevFrame();
}

function goForward(event:MouseEvent):void {
mc1.nextFrame();
}
-----------------------------------------------------------------------------
prevScene() 메소드    
public function prevScene():void

MovieClip 인스턴스의 전 씬에 재생 헤드를 이동한다. 이 처리는 프레임내의 모든 잔존 액션이 실행을 완료한 후에 이루어진다.

다음의 예에서는 2개의 SimpleButton 오브젝트가 타임 라인을 제어한다. prevBtn 버튼은 재생 헤드를 전의 씬으로 이동하고 nextBtn 버튼은 재생 헤드를 다음의 씬으로 이동한다.

import flash.events.MouseEvent;

mc1.stop();
prevBtn.addEventListener(MouseEvent.CLICK, goBack);
nextBtn.addEventListener(MouseEvent.CLICK, goForward);

function goBack(event:MouseEvent):void {
mc1.prevScene();
}

function goForward(event:MouseEvent):void {
mc1.nextScene();
}
-----------------------------------------------------------------------------
다음의 예는 MovieClipExample 클래스를 사용하여 MovieClip의 다양한 프롭퍼티를 감시하는 방법을 나타낸 것이다. 이것은 아래와 같은 순서로 실행된다.

   1. constructor    함수로 MovieClipExample 오브젝트(MovieClip을 계승한다)의 프롭퍼티의 값을 표시하는데 사용하는 텍스트 필드를 정의한다.
   2. getPropertiesString() 메소드의 반환값이 outputText 텍스트 필드의 텍스트로서 사용된다. getPropertiesString() 메소드는 무비 클립의 이하의 프롭퍼티의 값이 받아들여진 스트링을 돌려준다. currentFrame, currentLabel, currentScene, framesLoaded ,totalFrames , 및 trackAsMenu .
   3. constructor    함수내의 2행의 코드는 outputText 텍스트 필드의 width 및 height 프롭퍼티를 조정한다.
   4. constructor    함수의 마지막 행은 outputText 텍스트 필드를 표시 리스트에 추가한다.

package {
import flash.display.MovieClip;
import flash.text.TextField;

public class MovieClipExample extends MovieClip {

public function MovieClipExample() {
var outputText:TextField = new TextField();
outputText.text = getPropertiesString();
outputText.width = stage.stageWidth;
outputText.height = outputText.textHeight;
addChild(outputText);
}

private function getPropertiesString():String {
var str:String = ""
+ "currentFrame: " + currentFrame + "n"
+ "currentLabel: " + currentLabel + "n"
+ "currentScene: " + currentScene + "n"
+ "framesLoaded: " + framesLoaded + "n"
+ "totalFrames: " + totalFrames + "n"
+ "trackAsMenu: " + trackAsMenu + "n";
return str;
}
}
}
    

설정

트랙백

댓글