개별적인 FLV Playback Custom UI 구성 요소 스키닝

FLV Playback Custom UI 구성 요소를 사용하면 FLA 파일 내에서 FLVPlayback 컨트롤의 모양을 사용자 정의할 수 있으며 웹 페이지를 미리 볼 때 결과를 확인할 수 있습니다. 다만 이 구성 요소는 크기 조절이 가능하도록 설계되지 않았습니다. 그러므로 동영상 클립과 내용을 특정 크기로 맞춰 편집해야 합니다. 따라서 지정한 크기로 스테이지에 배치한 FLVPlayback 구성 요소에 대해 scaleMode exactFit 로 설정하는 것이 좋습니다.

먼저 [구성 요소] 패널에서 원하는 FLV Playback Custom UI 구성 요소를 드래그하여 스테이지의 원하는 위치에 배치하고 인스턴스 이름을 지정합니다.

이러한 구성 요소는 ActionScript 없이 작동할 수 있습니다. 이들을 FLVPlayback 구성 요소와 같은 타임라인과 프레임에 배치하려는데 구성 요소에 스킨이 설정되어 있지 않은 경우 FLVPlayback 구성 요소가 자동으로 이 구성 요소에 연결됩니다. 스테이지에 FLVPlayback 구성 요소가 여러 개 있거나 사용자 정의 컨트롤과 FLVPlayback 인스턴스가 같은 타임라인에 없는 경우 액션이 필요합니다.

스테이지에 구성 요소가 배치되고 나면 다른 심볼과 마찬가지 방법으로 구성 요소를 편집합니다. 구성 요소를 열면 각 구성 요소가 다른 구성 요소와 조금씩 다르게 설정되어 있는 것을 볼 수 있습니다.

버튼 구성 요소

버튼 구성 요소는 유사한 구조를 갖고 있습니다. 버튼 구성 요소로는 BackButton, ForwardButton, MuteButton, PauseButton, PlayButton, PlayPauseButton 및 StopButton이 있습니다. 이러한 버튼 구성 요소는 대부분 placeholder_mc라는 인스턴스 이름으로 프레임 1에 배치되는 단일 동영상 클립입니다. 이러한 동영상 클립은 해당 버튼의 보통 상태를 나타내는 인스턴스이지만 꼭 그런 것은 아닙니다. 프레임 2에는 각각의 표시 상태(보통, 오버, 다운, 비활성)에 대한 네 가지 스테이지 동영상 클립이 있습니다. 런타임에서 구성 요소가 프레임 2로 실제 이동하는 것은 아니며 동영상 클립을 보다 편리하게 편집하고 [심볼 속성] 대화 상자에서 [첫 프레임으로 내보내기] 체크 상자를 선택하지 않고도 SWF 파일에 동영상 클립이 강제로 로드되도록 프레임 2에 이러한 동영상 클립이 배치됩니다. 그러나 [ActionScript에 내보내기] 옵션은 여전히 선택해야 합니다.

버튼을 스키닝하려면 각각의 동영상 클립을 편집하면 됩니다. 크기뿐만 아니라 모양도 변경할 수 있습니다.

일부 ActionScript는 프레임 1에 나타나며 이 스크립트는 변경할 필요가 없습니다. 이러한 스크립트는 프레임 1에서 재생 헤드를 중단하고 상태에 따라 사용할 동영상 클립을 지정하는 역할을 합니다.

PlayPauseButton, MuteButton, FullScreenButton 및 CaptionButton 버튼

PlayPauseButton, MuteButton, FullScreenButton 및 CaptionButton 버튼은 다른 버튼과 다르게 설정됩니다. 이 버튼은 두 개의 레이어를 포함하는 하나의 프레임으로 구성되고 스크립트가 없습니다. 이 프레임에는 두 개의 버튼이 서로 겹쳐서 배치됩니다. 즉, PlayPauseButton의 경우 재생 및 일시 정지 버튼, MuteButton의 경우 음소거 켜기 및 음소거 끄기 버튼, FullScreenButton의 경우 전체 화면 설정 및 전체 화면 해제 버튼, CaptionButton의 경우 캡션 설정 및 캡션 해제 버튼이 배치됩니다. 이러한 버튼을 스키닝하려면 개별적인 FLV Playback Custom UI 구성 요소 스키닝 에서 설명하는 방법에 따라 두 개의 내부 버튼을 각각 스키닝하면 됩니다. 다른 작업은 필요하지 않습니다.

CaptionButton은 FLVPlaybackCaptioning 구성 요소용이므로 FLVPlayback 구성 요소가 아닌 이 구성 요소에 연결해야 합니다.

BackButton 및 ForwardButton 버튼

BackButton 및 ForwardButton 버튼 또한 다른 버튼과 다르게 설정됩니다. 프레임 2에는 하나 또는 양쪽의 버튼 주위에 프레임으로 사용할 수 있는 추가적인 동영상 클립이 배치되어 있습니다. 이 동영상 클립은 꼭 필요한 것이 아니고 특별한 기능도 없으며 편의상 제공하는 것일 뿐입니다. 이 버튼을 사용하려면 [라이브러리] 패널에서 스테이지로 드래그하여 원하는 위치에 배치합니다. 이 버튼이 필요하지 않으면 사용하지 않거나 [라이브러리] 패널에서 삭제하면 됩니다.

대부분의 버튼이 공용 동영상 클립 세트를 기반으로 제공되기 때문에 모든 버튼의 모양을 한번에 변경할 수 있습니다. 이 기능을 사용하거나 공용 클립을 교체하여 모든 버튼을 다르게 보이도록 할 수 있습니다.

BufferingBar 구성 요소

버퍼링 막대 구성 요소는 간단하게 구성 요소가 버퍼링 상태로 진입할 때 표시되는 애니메이션으로 구성되어 있으며 이 구성 요소를 구성하는 데 특별한 ActionScript는 필요하지 않습니다. 기본적으로 이 구성 요소는 "이발소 간판" 효과를 주는 사각형 마스크가 입혀져 왼쪽에서 오른쪽으로 이동하는 줄무늬 막대 형태입니다. 이 구성에 특별한 부분은 없습니다.

스킨 SWF 파일에 있는 버퍼링 막대는 런타임에 크기 조절이 필요하기 때문에 9-슬라이스 크기 조절을 사용하지만 BufferingBar FLV Custom UI 구성 요소는 중첩된 동영상 클립을 갖고 있기 때문에 9-슬라이스 크기 조절을 사용하지 않으며 사용할 수도 없습니다 . BufferingBar를 더 넓게 또는 길게 만들려면 전체 크기를 조절하는 것이 아니라 내용을 변경해야 합니다.

SeekBar 및 VolumeBar 구성 요소

SeekBar 및 VolumeBar 구성 요소는 유사해 보이지만 서로 다른 기능을 갖고 있습니다. 두 구성 요소 모두 핸들이 있으며 동일한 핸들 추적 메커니즘을 사용하고 진행률 및 채움률을 추적하는 중첩 클립을 지원합니다.

FLVPlayback 구성 요소의 ActionScript 코드에서는 SeekBar 또는 VolumeBar 구성 요소의 등록 포인트( 원점 이라고도 함)가 내용의 왼쪽 위 모서리에 있는 것으로 간주하는 경우가 많기 때문에 이 규칙을 따르는 것이 중요합니다. 그렇지 않으면 핸들, 진행률 및 채움률 동영상 클립을 사용하는 데 문제가 발생할 수 있습니다.

스킨 SWF 파일에 있는 검색 막대는 런타임에 크기 조절이 필요하기 때문에 9-슬라이스 크기 조절을 사용하지만 SeekBar FLV Custom UI 구성 요소는 중첩된 동영상 클립을 갖고 있기 때문에 9-슬라이스 크기 조절을 사용하지 않으며 사용할 수도 없습니다 . SeekBar를 더 넓게 또는 길게 만들려면 전체 크기를 조절하는 것이 아니라 내용을 변경해야 합니다.

핸들

핸들 동영상 클립의 인스턴스는 프레임 2에 배치됩니다. BackButton 및 ForwardButton 구성 요소와 마찬가지로 구성 요소가 프레임 2로 실제 이동하는 것은 아니며 이러한 동영상 클립은 편집을 보다 간편하게 하고 [심볼 속성] 대화 상자에서 [첫 프레임으로 내보내기] 체크 상자를 선택하지 않고도 SWF 파일에 강제로 로드되도록 하기 위해 프레임 2에 배치해 놓은 것입니다. 그러나 [ActionScript에 내보내기] 옵션은 여전히 선택해야 합니다.

핸들 동영상 클립의 배경에는 알파 값이 0으로 설정된 사각형이 있습니다. 이 사각형은 핸들의 히트 영역 크기를 늘려서 버튼의 히트 상태와 유사하게 모양을 변경하지 않고도 쉽게 핸들을 잡을 수 있도록 합니다. 핸들은 런타임에 동적으로 만들어지기 때문에 버튼이 아니라 동영상 클립이어야 합니다. 알파 값이 0으로 설정된 이 사각형은 다른 목적으로 사용되는 것이 아니며 핸들 내부를 사용자가 원하는 다른 이미지로 교체할 수 있습니다. 등록 포인트를 핸들 동영상 클립의 수평 중앙에 유지하는 것이 가장 좋습니다.

다음 ActionScript 코드는 SeekBar 구성 요소의 프레임 1에 삽입되어 핸들을 관리합니다.

stop(); 
handleLinkageID = "SeekBarHandle"; 
handleLeftMargin = 2; 
handleRightMargin = 2; 
handleY = 11;

프레임 2에 내용이 있으므로 stop() 함수 호출이 필요합니다.

두 번째 행은 핸들로 사용할 심볼을 지정합니다. 프레임 2에 있는 핸들 동영상 클립 인스턴스를 간단히 편집하여 사용할 경우 이 부분을 변경할 필요가 없습니다. 런타임에 FLVPlayback 구성 요소가 스테이지의 지정한 동영상 클립의 인스턴스를 Bar 구성 요소 인스턴스의 형제 인스턴스로 만듭니다. 즉, 동일한 부모 동영상 클립을 갖게 됩니다. 그러므로 막대가 루트 레벨에 있는 경우 핸들 또한 루트 레벨에 있어야 합니다.

handleLeftMargin 변수는 핸들의 최초 위치(0%)를 결정하고, handleRightMargin 변수는 핸들의 마지막 위치(100%)를 결정합니다. 이 숫자를 통해 막대 컨트롤의 왼쪽 끝과 오른쪽 끝의 오프셋을 구하여 양수이면 막대 내부 구역을 표시하고 음수이면 막대 외부 구역을 표시합니다. 이 오프셋은 핸들의 등록 포인트를 기준으로 이동할 수 있는 방향을 지정합니다. 등록 포인트를 핸들의 중앙으로 지정한 경우 핸들의 왼쪽 끝과 오른쪽 끝이 막대의 영역을 지나치게 됩니다. 검색 막대 동영상 클립에서는 등록 포인트가 내용의 왼쪽 위 모서리에 있어야 정상적으로 작동됩니다.

handleY 변수는 핸들의 y 위치를 막대 인스턴스에 상대적인 위치로 결정합니다. 이 위치 값은 각 동영상 클립의 등록 포인트를 기준으로 합니다. 샘플 핸들에서 등록 포인트는 보이지 않는 히트 상태 사각형과는 관계없이 시각적으로 보이는 부분에 상대적인 위치에 배치할 수 있도록 삼각 모양의 끝 부분에 있습니다. 또한 막대 동영상 클립은 등록 포인트가 내용의 왼쪽 위 모서리에 있어야만 정상적으로 작동합니다.

예를 들어, 이러한 제한 조건에서 막대 컨트롤이 (100, 100)으로 설정되고 폭이 100픽셀일 경우 핸들의 가로 이동 범위는 102에서 198이며 세로로는 111에 위치합니다. handleLeftMargin handleRightMargin 을 -2로 변경하고 handleY 를 -11로 변경하면 핸들의 가로 이동 범위는 98에서 202로 변경되고 세로로는 89에 위치하게 됩니다.

진행률 및 채움률 동영상 클립

SeekBar 구성 요소에는 진행률 동영상 클립이 있으며 VolumeBar에는 채움률 동영상 클립이 있지만 실제 이 구성 요소를 사용할 때는 진행률 및 채움률 동영상 클립 중 하나를 사용하거나 전혀 사용하지 않거나 둘 모두 사용할 수 있습니다. 이 두 가지 동영상 클립은 구조적으로 동일하며 유사하게 동작하지만 서로 다른 값을 추적합니다. 진행률 동영상 클립은 FLV 파일 다운로드 시 채워지는 동영상 클립(FMS에서 스트리밍하는 경우에는 항상 채워져 있는 상태이므로 HTTP 다운로드에서만 유용한 요소)이고 채움률 동영상 클립은 핸들이 왼쪽에서 오른쪽으로 이동하면서 채워지는 동영상 클립입니다.

FLVPlayback 구성 요소에서는 특정 인스턴스 이름으로 이 동영상 클립 인스턴스를 찾기 때문에 진행률 동영상 클립 인스턴스가 막대 동영상 클립을 부모로 갖고 있어야 하며 인스턴스 이름이 progress_mc여야 합니다. 채움률 동영상 클립 인스턴스의 이름은 fullness_mc여야 합니다.

진행률 및 채움률 동영상 클립 내부에 fill_mc 동영상 클립 인스턴스를 중첩시키거나 중첩시키지 않을 수 있습니다. VolumeBar fullness_mc 동영상 클립은 fill_mc 동영상 클립을 사용하는 방법을 보여 주며, SeekBar progress_mc 동영상 클립은 fill_mc 동영상 클립을 사용하지 않는 방법을 보여 줍니다.

크기를 조절하면 모양이 왜곡되는 채움을 사용하려면 내부에 중첩된 fill_mc 동영상 클립을 사용하는 방법이 유용합니다.

VolumeBar fullness_mc 동영상 클립에서는 중첩된 fill_mc 동영상 클립 인스턴스가 마스크 처리됩니다. 동영상 클립을 만들 때 마스크를 적용할 수 있습니다. 그렇지 않으면 런타임에 마스크가 동적으로 만들어집니다. 동영상 클립에 마스크를 적용할 경우 해당 인스턴스 이름을 mask_mc 로 지정하고 100%에 도달했을 때 fill_mc에서 나타나도록 설정합니다. fill_mc에 마스크를 적용하지 않는 경우 동적으로 만들어진 마스크는 사각형 모양으로 100%에서 fill_mc와 동일한 크기로 만들어집니다.

fill_mc.slideReveal의 값이 true 인지 false 인지에 따라 마스크가 적용된 fill_mc 동영상 클립이 다음 두 가지 방법 중 하나로 표시됩니다.

fill_mc.slideReveal이 true 인 경우 fill_mc가 왼쪽에서 오른쪽으로 이동하면서 마스크를 통해 표시됩니다. 0%에서는 왼쪽 끝에 있으므로 아무것도 마스크를 통해 표시되지 않습니다. 백분율이 증가함에 따라 100%에 도달할 때까지 계속 오른쪽으로 이동하며, 스테이지에서 만들어진 위치로 되돌아갑니다.

fill_mc.slideReveal이 false 또는 undefined인 경우(기본 비헤이비어) 마스크가 왼쪽에서 오른쪽으로 크기 조절되면서 fill_mc가 차츰 표시됩니다. 0%에서는 마스크가 가로로 05만큼 크기 조절되며 백분율이 증가함에 따라 scaleX 가 증가하고 100%에 도달하면 fill_mc 전체가 표시됩니다. mask_mc가 만들어질 때 이미 크기가 조절되었을 수 있으므로 항상 scaleX = 100을 의미하는 것은 아닙니다.

fill_mc를 사용하지 않는 방법이 fill_mc를 사용하는 방법보다 간편하지만 가로 채움 모양이 왜곡됩니다. 왜곡 현상을 원하지 않는다면 fill_mc를 사용해야 합니다. SeekBar progress_mc에서는 이 방법을 보여 줍니다.

진행률 또는 채움률 동영상 클립은 백분율에 따라 가로로 크기 조절됩니다. 0%에서는 인스턴스의 scaleX 가 0으로 설정되며 인스턴스가 화면에 보이지 않습니다. 백분율이 증가함에 따라 scaleX 가 조절되며 100%에 도달하면 동영상 클립이 처음 스테이지에 만들어졌을 때와 동일한 크기가 됩니다. 앞에서와 마찬가지로 동영상 클립 인스턴스가 만들어졌을 때 이미 크기가 조절되었을 수 있으므로 항상 scaleX = 100을 의미하는 것은 아닙니다.

FLV Playback Custom UI 구성 요소 연결

Custom UI 구성 요소를 FLVPlayback 구성 요소와 같은 타임라인과 프레임에 배치하려는데 skin 속성이 설정되어 있지 않은 경우 ActionScript 없이도 FLVPlayback이 자동으로 Custom UI 구성 요소에 연결됩니다.

스테이지에 FLVPlayback 구성 요소가 여러 개 있거나 사용자 정의 컨트롤과 FLVPlayback이 같은 타임라인에 없는 경우 ActionScript 코드를 작성하여 Custom UI 구성 요소를 FLVPlayback 구성 요소의 인스턴스에 연결해야 합니다. 먼저 FLVPlayback 인스턴스에 이름을 지정한 다음 ActionScript를 사용하여 FLV Playback Custom UI 구성 요소 인스턴스를 해당되는 FLVPlayback 속성에 지정해야 합니다. 다음 예제에서 FLVPlayback 인스턴스는 my_FLVPlybk이고 마침표(.) 뒤에 쓰여진 것이 FLVPlayback 속성 이름이며 등호 기호(=) 오른쪽에 있는 것이 FLV Playback Custom UI 컨트롤입니다.

//FLVPlayback instance = my_FLVPlybk 
my_FLVPlybk.playButton = playbtn; // set playButton prop. to playbtn, etc. 
my_FLVPlybk.pauseButton = pausebtn; 
my_FLVPlybk.playPauseButton = playpausebtn; 
my_FLVPlybk.stopButton = stopbtn;  
my_FLVPlybk.muteButton = mutebtn; 
my_FLVPlybk.backButton = backbtn; 
my_FLVPlybk.forwardButton = forbtn; 
my_FLVPlybk.volumeBar = volbar; 
my_FLVPlybk.seekBar = seekbar; 
my_FLVPlybk.bufferingBar = bufbar; 

다음 단계에서는 사용자 정의 StopButton, PlayPauseButton, MuteButton 및 SeekBar 컨트롤을 만듭니다.

  1. FLVPlayback 구성 요소를 스테이지로 드래그하고 인스턴스 이름으로 my_FLVPlybk 를 지정합니다.

  2. 구성 요소 관리자에서 source 매개 변수를 http://www.helpexamples.com/flash/video/cuepoints.flv 로 설정합니다.

  3. Skin 매개 변수를 [없음]으로 설정합니다.

  4. StopButton, PlayPauseButton 및 MuteButton을 각각 하나씩 스테이지로 드래그하고 FLVPlayback 인스턴스 위에 수직으로 왼쪽에 쌓습니다. 속성 관리자에서 각 버튼에 my_stopbttn , my_plypausbttn my_mutebttn 과 같은 인스턴스 이름을 지정합니다.

  5. [라이브러리] 패널에서 FLVPlayback Skins 폴더를 열고 이 폴더 아래에 있는 SquareButton 폴더를 엽니다.

  6. SquareBgDown 동영상 클립을 선택하고 두 번 클릭하여 스테이지에서 엽니다.

  7. 마우스 오른쪽 버튼을 클릭(Windows)하거나 Control 키를 누른 상태에서 클릭(Macintosh)하고 메뉴에서 [전체 선택]을 선택한 후 심볼을 삭제합니다.

  8. [타원형 도구]를 선택하고 같은 위치에 타원을 그린 다음 채움 색상을 파랑( #0033FF )으로 설정합니다.

  9. 속성 관리자에서 폭(W:)은 40 으로 설정하고 높이(H:)는 20 으로 설정합니다. X 좌표(X:)는 0.0 으로 설정하고 Y 좌표(Y:)는 0.0 으로 설정합니다.

  10. SquareBgNormal에 대해서도 6~8단계를 반복하되 채움 색상은 노랑( #FFFF00 )으로 변경합니다.

  11. SquareBgOver에 대해서도 6~8단계를 반복하되 채움 색상은 녹색( #006600 )으로 변경합니다.

  12. 버튼 내부에 있는 다양한 심볼 아이콘(PauseIcon, PlayIcon, MuteOnIcon, MuteOffIcon, StopIcon)에 대한 동영상 클립을 편집합니다. 이러한 동영상 클립은 [라이브러리] 패널에서 FLV Playback Skins/ Label Button/Assets에서 찾을 수 있습니다. 여기서 Label 은 Play, Pause 등과 같은 버튼의 이름입니다. 각 항목에 대해 다음 단계를 수행합니다.

    1. [전체 선택] 옵션을 선택합니다.

    2. 색상을 빨강( #FF0000 )으로 변경합니다.

    3. 300%로 크기 조절합니다.

    4. 내용의 X: 위치를 7.0 으로 변경하여 모든 버튼 상태에서 아이콘의 가로 위치를 수정합니다.

      참고: 위치를 이와 같은 방법으로 변경하면 각각의 버튼 상태를 열고 아이콘 동영상 클립 인스턴스를 이동하는 번거로움을 피할 수 있습니다.
  13. 타임라인 위의 파란 색 [뒤로] 화살표를 클릭하여 장면 1, 프레임 1로 돌아갑니다.

  14. SeekBar 구성 요소를 스테이지로 드래그하고 FLVPlayback 인스턴스의 오른쪽 아래 모서리에 배치합니다.

  15. [라이브러리] 패널에서 SeekBar를 두 번 클릭하여 스테이지에서 엽니다.

  16. 400%로 크기 조절합니다.

  17. 외곽선을 선택하고 색상을 빨강( #FF0000 )으로 설정합니다.

  18. FLVPlayback Skins/Seek Bar 폴더에서 SeekBarProgress를 두 번 클릭하고 색상을 노랑( #FFFF00 )으로 설정합니다.

  19. FLVPlayback Skins/Seek Bar 폴더에서 SeekBarHandle을 두 번 클릭하고 색상을 빨강( #FF0000 )으로 설정합니다.

  20. 타임라인 위의 파란 색 [뒤로] 화살표를 클릭하여 장면 1, 프레임 1로 돌아갑니다.

  21. 스테이지에서 SeekBar 인스턴스를 선택하고 인스턴스 이름으로 my_seekbar 를 지정합니다.

  22. 타임라인의 프레임 1에서 [액션] 패널을 열고 다음 예제와 같이 비디오 클래스에 대한 import 명령문을 추가하고 버튼 및 검색 막대 이름을 해당하는 FLVPlayback 속성에 지정합니다.

    import fl.video.*; 
    my_FLVPlybk.stopButton = my_stopbttn; 
    my_FLVPlybk.playPauseButton = my_plypausbttn; 
    my_FLVPlybk.muteButton = my_mutebttn; 
    my_FLVPlybk.seekBar = my_seekbar;
  23. Ctrl+Enter를 눌러 동영상을 테스트합니다.