创建新外观创建外观 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 和 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 组件。 缓冲栏具有以下附加属性:
搜索栏和音量栏搜索栏也具有两个影片剪辑: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 导出。 |
![]() |