새 프레임에 동영상 클립을 보내는 작업은 간단합니다.
gotoAndPlay()
또는
gotoAndStop()
을 호출하면 동영상 클립이 매개 변수로 지정된 프레임 번호로 이동합니다. 또는 프레임 레이블 이름과 일치하는 문자열을 전달할 수 있습니다. 타임라인의 모든 프레임에 레이블을 지정할 수 있습니다. 그렇게 하려면 타임라인에서 프레임을 선택하고 속성 관리자의 [프레임 레이블] 필드에 이름을 입력합니다.
특히 복잡한 동영상 클립을 만드는 경우에 번호 대신 프레임 레이블을 사용하는 것이 좋습니다. 애니메이션의 프레임, 레이어 및 트윈 개수가 많아지면 중요한 프레임에 대해 동영상 클립 비헤이비어의 변화를 나타내는 설명(예: "off", "walking" 또는 "running")으로 레이블을 지정하는 것이 좋습니다. 레이블이 지정된 프레임으로 가는 ActionScript 호출은 특정 프레임 번호가 아닌 하나의 참조, 즉 레이블을 가리키므로 이렇게 하면 코드의 가독성도 향상되고 유연성도 증가합니다. 나중에 애니메이션의 특정 선분을 다른 프레임으로 이동할 경우 새 위치에서 해당 프레임의 레이블을 동일하게 유지하는 한 ActionScript 코드를 변경할 필요가 없습니다.
ActionScript 3.0은 프레임 레이블을 코드로 표시할 수 있도록 FrameLabel 클래스를 제공합니다. 이 클래스의 각 인스턴스는 단일 프레임 레이블을 나타내며,
name
속성(속성 관리자에 지정된 프레임 레이블 이름을 나타냄) 및
frame
속성(레이블이 배치될 타임라인 프레임의 프레임 번호를 나타냄)을 가지고 있습니다.
동영상 클립 인스턴스와 연관된 FrameLabel 인스턴스에 액세스할 수 있도록 MovieClip 클래스에는 FrameLabel 객체를 직접 반환하는 두 개의 속성이 포함되어 있습니다.
currentLabels
속성은 동영상 클립 전체 타임라인의 모든 FrameLabel 객체로 이루어진 배열을 반환합니다.
currentLabel
속성은 최근에 타임라인에 나타난 FrameLabel 객체의 이름이 포함된 문자열을 반환합니다.
로봇
이라는 동영상 클립을 만들었으며 애니메이션의 여러 가지 상태에 레이블을 지정했다고 가정할 경우 다음 코드와 같이
로봇
의 현재 상태에 액세스할 수 있는
currentLabel
속성을 확인하는 조건을 설정할 수 있습니다.
if (robot.currentLabel == "walking")
{
// do something
}
Flash Player 11.3 및 AIR 3.3에서는 FrameLabel 클래스에
frameLabel
이벤트가 추가되었습니다. 프레임 레이블을 나타내는 FrameLabel 인스턴스에 이벤트 핸들러를 지정할 수 있습니다. 재생 헤드가 프레임에 들어오면 이벤트가 전달됩니다.
다음 예에서는 MovieClip의 프레임 레이블 배열에서 두 번째 프레임 레이블의FrameLabel 인스턴스를 만듭니다. 그런 다음
frameLabel
이벤트에 대해 이벤트 핸들러를 등록합니다.
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}