정적 텍스트를 사용한 작업

Flash Player 9 이상, Adobe AIR 1.0 이상

정적 텍스트는 Flash Professional 내에서만 만들 수 있습니다. ActionScript를 사용하여 정적 텍스트를 프로그래밍 방식으로 인스턴스화할 수 없습니다. 정적 텍스트는 텍스트가 짧고 변경할 의도가 없는 경우 유용합니다(동적 텍스트는 변경 가능). 정적 텍스트를 Flash Professional에서 스테이지에 그린 원이나 정사각형 같은 그래픽 요소와 비슷하다고 생각해 보십시오. 정적 텍스트가 동적 텍스트보다 더 제한적이기는 하지만 ActionScript 3.0에서는 StaticText 클래스를 사용하여 정적 텍스트의 속성 값을 읽을 수 있습니다. TextSnapshot 클래스를 사용하여 정적 텍스트에서 값을 읽을 수도 있습니다.

StaticText 클래스를 사용하여 정적 텍스트 필드 액세스

일반적으로 Flash Professional의 [액션] 패널에서 flash.text.StaticText 클래스를 사용하여 스테이지에 배치된 정적 텍스트 인스턴스와 상호 작용할 수 있습니다. 또한 정적 텍스트가 포함된 SWF 파일과 상호 작용하는 ActionScript 파일에서 작업할 수도 있습니다. 두 가지 경우 모두 정적 텍스트 인스턴스를 프로그래밍 방식으로 인스턴스화할 수 없습니다. 정적 텍스트는 Flash Professional에서 만듭니다.

기존 정적 텍스트 필드에 대한 참조를 만들려면 표시 목록의 항목을 반복하고 변수를 할당합니다. 예를 들면 다음과 같습니다.

for (var i = 0; i < this.numChildren; i++) { 
var displayitem:DisplayObject = this.getChildAt(i); 
if (displayitem instanceof StaticText) { 
trace("a static text field is item " + i + " on the display list"); 
        var myFieldLabel:StaticText = StaticText(displayitem); 
        trace("and contains the text: " + myFieldLabel.text); 
} 
}

정적 텍스트 필드에 대한 참조가 있으면 ActionScript 3.0에서 해당 필드의 속성을 사용할 수 있습니다. 다음 코드는 타임라인의 특정 프레임에 연결되어 있고 myFieldLabel이라는 변수가 정적 텍스트 참조에 할당되어 있다고 가정합니다. myField라는 동적 텍스트 필드는 xy 값(myFieldLabel의 값)을 기준으로 배치되고 myFieldLabel의 값을 다시 표시합니다.

var myField:TextField = new TextField(); 
addChild(myField); 
myField.x = myFieldLabel.x; 
myField.y = myFieldLabel.y + 20; 
myField.autoSize = TextFieldAutoSize.LEFT; 
myField.text = "and " + myFieldLabel.text

TextSnapshot 클래스 사용

기존의 정적 텍스트 인스턴스를 사용하여 프로그래밍 방식으로 작업하려는 경우 flash.text.TextSnapshot 클래스를 사용하여 flash.display.DisplayObjectContainer의 textSnapshot 속성으로 작업할 수 있습니다. 즉, DisplayObjectContainer.textSnapshot 속성에서 TextSnapshot 인스턴스를 만듭니다. 그런 다음 해당 인스턴스에 메서드를 적용하여 값을 검색하거나 정적 텍스트의 일부를 선택할 수 있습니다.

예를 들어 "TextSnapshot Example"이라는 텍스트가 포함된 정적 텍스트 필드를 스테이지에 배치합니다. 타임라인의 프레임 1에 다음 ActionScript를 추가합니다.

var mySnap:TextSnapshot = this.textSnapshot; 
var count:Number = mySnap.charCount; 
mySnap.setSelected(0, 4, true);  
mySnap.setSelected(1, 2, false);  
var myText:String = mySnap.getSelectedText(false);  
trace(myText); 

TextSnapshot 클래스는 로드된 SWF 파일의 정적 텍스트 필드에서 가져온 텍스트를 응용 프로그램의 다른 부분에서 값으로 사용하려는 경우 해당 텍스트를 가져오는 데 유용합니다.