创建新外观

创建外观 SWF 文件的最佳方式是复制与 Flash 一起提供的外观文件之一,并且将它用作起始点。您可以在 Flash 应用程序文件夹 Configuration/FLVPlayback Skins/FLA/ActionScript 3.0/ 中找到这些外观的 FLA 文件。若要使已完成的外观 SWF 文件可用作“选择外观”对话框中的选项,请将它放置于 Configuration/FLVPlayback Skins/ActionScript 3.0 文件夹中,或者在 Flash 应用程序文件夹中或者在用户本地的 Configuration/FLVPlayback Skins/ActionScript 3.0 文件夹中。

由于可以独立于外观的选择来设置外观的颜色,因而无需编辑 FLA 文件来修改颜色。如果创建了具有特定颜色的外观并且不希望在“选择外观”对话框中能够对其进行编辑,请在外观 FLA 文件 ActionScript 代码中设置 this.border_mc.colorMe = false; 。有关设置外观颜色的信息,请参阅 选择预先设计的外观

在查看已安装的 Flash 外观 FLA 文件时,舞台上的某些项似乎不是必需的,但它们中的很多项被放置于引导图层中。利用实时预览(使用缩放 9),可以快速查看 SWF 文件中实际显示的内容。

以下几节介绍一些对 SeekBar、BufferingBar 和 VolumeBar 影片剪辑的更复杂的自定义和更改。

使用外观布局

打开 Flash 外观 FLA 文件时,您会发现外观的影片剪辑都放置在主时间轴上。您在同一帧上发现的这些剪辑和 ActionScript 代码用于定义在运行时放置控件的方式。

尽管布局图层看起来很像外观在运行时的样子,但此图层的内容在运行时不可见。它只用于计算控件的放置位置。舞台上的其他控件在运行时使用。

布局图层内是用于名为 video_mc 的 FLVPlayback 组件的占位符。所有其他控件都相对于 video_mc 放置。如果您从某个 Flash FLA 文件开始并且更改控件的大小,则很可能通过移动这些占位符剪辑修复布局。

每个占位符剪辑都具有特定的实例名称。占位符剪辑的名称分别为 playpause_mc、 play_mc、pause_mc、stop_mc、captionToggle_mc、fullScreenToggle_mc、back_mc、bufferingBar_mc、bufferingBarFill_mc、seekBar_mc、seekBarHandle_mc、seekBarProgress_mc、volumeMute_mc、volumeBar_mc 和 volumeBarHandle_mc。选择外观颜色时更改了颜色的剪辑的名称为 border_mc。

哪个剪辑用于控件并不重要。通常,对按钮使用正常状态剪辑。对于其他控件,使用该控件的剪辑,但这只是出于方便目的。所有重要事项就是 x (水平)和 y (垂直)位置以及占位符的高度和宽度。

您还可以在标准控件旁具有所需任何数目的附加剪辑。对于这些剪辑的唯一要求是:在“链接”对话框中为它们的库元件选中“为 ActionScript 导出”。布局图层中的自定义剪辑可以具有任何实例名称,但不可具有上面所列的保留实例名称。仅在设置剪辑的 ActionScript 以确定布局时才需要使用实例名称。

border_mc 剪辑是特殊的。如果将 FlvPlayback.skinAutoHide 属性设置为 true ,则在鼠标经过 border_mc 剪辑时将显示外观。这对于显示在视频播放器的边界外的外观十分重要。有关 skinAutoHide 属性的信息,请参阅 修改外观行为

在 Flash FLA 文件中,border_mc 用于铬印,并用于环绕“快进”和“快退”按钮的边界。

border_mc 剪辑也是外观的一部分,外观的 Alpha 值和颜色可以通过 skinBackgroundAlpha skinBackgroundColor 属性来更改。若要使颜色和 Alpha 值可自定义,外观 FLA 文件中的 ActionScript 必须包括:

border_mc.colorMe = true;

ActionScript 和外观布局

以下 ActionScript 代码通常适用于所有控件。某些控件具有定义附加行为的特定 ActionScript,在这些控件对应的节中将对此加以说明。

初始 ActionScript 是很大的一部分,它指定每个组件每种状态的类名称。可以在 SkinOverAll.fla 文件中看到所有这些类名称。其代码与 Pause 和 Play 按钮的代码相似,例如:

this.pauseButtonDisabledState = "fl.video.skin.PauseButtonDisabled"; 
this.pauseButtonDownState = "fl.video.skin.PauseButtonDown"; 
this.pauseButtonNormalState = "fl.video.skin.PauseButtonNormal"; 
this.pauseButtonOverState = "fl.video.skin.PauseButtonOver"; 
this.playButtonDisabledState = "fl.video.skin.PlayButtonDisabled"; 
this.playButtonDownState = "fl.video.skin.PlayButtonDown"; 
this.playButtonNormalState = "fl.video.skin.PlayButtonNormal"; 
this.playButtonOverState = "fl.video.skin.PlayButtonOver";

实际上,这些类名称并不具有外部类文件;只是在“链接”对话框中为库中的所有影片剪辑指定了它们。

在 ActionScript 2.0 组件中,在运行时确实使用了舞台上的一些影片剪辑。在 ActionScript 3.0 组件中,这些影片剪辑仍在 FLA 文件中,但只是为了便于编辑。现在,它们全部在引导图层中并且不可导出。例如,库中的所有外观资源均设置为在第一帧导出,并且它们是使用如下代码动态创建的:

new fl.video.skin.PauseButtonDisabled();

该部分之后的 ActionScript 代码用于定义外观的最小宽度和高度。“选择外观”对话框显示这些值,并且这些值在运行时使用,以防止外观缩放到小于其最小大小。如果您不想指定最小大小,则将其保留为未定义或者小于或等于零。

// minimum width and height of video recommended to use this skin, 
// leave as undefined or <= 0 if there is no minimum 
this.minWidth = 270; 
this.minHeight = 60;

每个占位符都可以具有适用于它的以下属性:

属性

说明

anchorLeft

布尔值。控件相对于 FLVPlayback 实例左侧的位置。默认为 true ;但是,如果 anchorRight 被显式设置为 true ),则它默认为 false

anchorRight

布尔值。控件相对于 FLVPlayback 实例的右侧的位置。默认值为 false

anchorBottom

布尔值。控件相对于 FLVPlayback 实例底部的位置。默认值为 true (除非 anchorTop 被显式设置为 true ),然后它默认为 false

anchorTop

布尔值。控件相对于 FLVPlayback 实例顶部的位置。默认值为 false

如果 anchorLeft anchorRight 属性均为 true ,则在运行时水平缩放该控件。如果 anchorTop anchorBottom 属性均为 true ,则在运行时垂直缩放该控件。

若要看到这些属性的效果,请查看它们在 Flash 外观中的使用方式。BufferingBar 和 SeekBar 控件是可以缩放的唯一控件,它们彼此层叠放置,并且都将 anchorLeft anchorRight 属性设置为 true 。BufferingBar 和 SeekBar 左侧的所有控件都将 anchorLeft 设置为 true ,而其右侧的所有控件都将 anchorRight 设置为 true 。所有控件都将 anchorBottom 设置为 true

您可以尝试编辑布局图层上的影片剪辑,以生成控件位于其顶部(而不是底部)的外观。您只需要将控件移到顶部(相对于 video_mc ),并且对于所有控件将 anchorTop 设置为等于 true

缓冲栏

缓冲栏具有两个影片剪辑:bufferingBar_mc 和 bufferingBarFill_mc。舞台上各剪辑与其他剪辑的相对位置很重要,因为这种相对位置将一直保留。缓冲栏使用两个单独的剪辑,因为组件缩放 bufferingBar_mc,但不缩放 bufferingBarFill_mc。

bufferingBar_mc 剪辑对自身应用 9 切片缩放,因此在缩放时边框将不会扭曲。bufferingBarFill_mc 剪辑非常宽,因此它始终足够宽,完全无需缩放。在运行时将自动对它进行遮罩,以便只显示高于伸展的 bufferingBar_mc 的部分。默认情况下,遮罩的准确尺寸将根据 bufferingBar_mc 和 bufferingBarFill_mc 的 x (水平)位置之间的差异,而在 bufferingBar_mc 内的左边距和右边距上保持相等。您可以使用 ActionScript 代码自定义该位置。

如果您的缓冲栏不需要缩放或者不使用 9 切片缩放,则可以像 FLV 播放自定义用户界面 BufferingBar 组件一样设置它。有关详细信息,请参阅 BufferingBar 组件

缓冲栏具有以下附加属性:

属性

说明

fill_mc:MovieClip

指定缓冲栏填充的实例名称。默认值为 bufferingBarFill_mc。

搜索栏和音量栏

搜索栏也具有两个影片剪辑:seekBar_mc 和 seekBarProgess_mc。布局图层上各剪辑与其他剪辑的相对位置很重要,因为这种相对位置将一直保留。尽管这两个剪辑都缩放,但 seekBarProgress_mc 无法嵌套在 seekBar_mc 内,因为 seekBar_mc 使用 9 切片缩放,而 9 切片缩放无法很好地使用嵌套的影片剪辑。

seekBar_mc 剪辑对自身应用 9 切片缩放,因此在缩放时边框将不会扭曲。seekBarProgress_mc 剪辑也会缩放,但它却扭曲。它并不使用 9 切片缩放,因为它是一个填充,而填充在被扭曲时显示很正常。

seekBarProgress_mc 剪辑在没有 fill_mc 的情况下工作,与 progress_mc 剪辑在 FLV 播放自定义用户界面组件中的工作方式十分相似。换言之,它不被遮罩并且水平缩放。在 100% 时,seekBarProgress_mc 的确切尺寸由 seekBarProgress_mc 剪辑内的左边距和右边距定义。默认情况下,这些尺寸是相等的并且基于 seekBar_mc 和 seekBarProgress_mc 的 x (水平)位置之间的差异。您可以在搜索栏影片剪辑中使用 ActionScript 自定义尺寸,如以下示例所示:

this.seekBar_mc.progressLeftMargin = 2; 
this.seekBar_mc.progressRightMargin = 2; 
this.seekBar_mc.progressY = 11; 
this.seekBar_mc.fullnessLeftMargin = 2; 
this.seekBar_mc.fullnessRightMargin = 2; 
this.seekBar_mc.fullnessY = 11;

可以将此代码放在 SeekBar 影片剪辑时间轴上,也可以将其与其他 ActionScript 代码一起放在主时间轴上。如果通过使用代码而非修改布局来自定义,则舞台上不需要有填充。它只需要在库中,并使用正确的类名设置为在第 1 帧上为 ActionScript 导出。

与 FLV 播放自定义用户界面 SeekBar 组件一样,可以为搜索栏创建完成程度影片剪辑。如果您的搜索栏不需要缩放,或者它缩放但不具有 9 切片缩放,则您可以使用用于 FLV 播放自定义用户界面组件的任何方法来设置 progress_mc 或 fullness_mc。有关详细信息,请参阅 进度和完成程度影片剪辑

因为 Flash 外观的音量栏不缩放,所以采用与 VolumeBar FLV 播放自定义用户界面组件相同的方法建立其结构。有关详细信息,请参阅 SeekBar 和 VolumeBar 组件 。例外情况就是手柄的实现方式不同。

Seekbar 和 VolumeBar 手柄

SeekBar 和 VolumeBar 手柄都放置于布局图层上该栏的旁边。默认情况下,手柄的左边距、右边距和 y 轴值按其相对于条影片剪辑的位置设置。左边距按手柄的 x (水平)位置和条的 x (水平)位置之间的差值设置,而右边距等于左边距。您可以在 SeekBar 或 VolumeBar 影片剪辑中通过 ActionScript 自定义这些值。以下示例所采用的 ActionScript 代码就是用于 FLV 播放自定义用户界面组件的代码:

this.seekBar_mc.handleLeftMargin = 2; 
this.seekBar_mc.handleRightMargin = 2; 
this.seekBar_mc.handleY = 11;

可以将此代码放在 SeekBar 影片剪辑时间轴上,也可以将其与其他 ActionScript 代码一起放在主时间轴上。如果通过使用代码而非修改布局来自定义,则舞台上不需要有手柄。它只需要在库中,并使用正确的类名设置为在第 1 帧上为 ActionScript 导出。

除了这些属性之外,手柄就是简单的影片剪辑,其设置方式与在 FLV 播放自定义用户界面组件中的设置方式相同。两者都具有 alpha 属性设置为 0 的矩形背景。提供它们只是为了增加点击区域,它们并不是必需的。

背景剪辑和前景剪辑

影片剪辑 chrome_mc 和 forwardBackBorder_mc 是作为背景剪辑实现的。

在舞台和占位符“快进”和“快退”按钮上的 ForwardBackBorder、ForwardBorder 和 BackBorder 影片剪辑中,唯一 在引导图层上的影片剪辑是 ForwardBackBorder。它只位于实际使用“快进”和“快退”按钮的外观中。

对于这些剪辑的唯一要求是需要在库的第 1 帧上将它们为 ActionScript 导出。