0

背景

我正在尝试创建一个简单的“通用”媒体播放器,它为视频和音频播放呈现相同的用户界面(或尽可能相似)。不幸的是,据我所知,FLVPlayback 似乎无法处理音频文件,所以我使用的是 Sound 和 SoundChannel。

我的视频播放是使用 FLVPlayback 组件处理的,该组件在需要时即时“连接”到标准控件。我想要做的是在播放声音时将它们连接到 Sound / SoundChannel,以便相同的 UI 小部件在两种情况下都可以工作。我想避免从头开始构建我的所有组件,因为 FLVPlayback 组件“免费”做了很多好东西,但它开始看起来很棘手。

戈里的东西

标准 PlayPauseButton 是具有两层的 MovieClip,一层包含播放按钮(实例名称为 play_mc),另一层包含暂停按钮 (pause_mc)。其中一个里面是一部电影,里面有一些这样的代码:

stop();
this.upLinkageID = "PauseButtonNormal";
this.overLinkageID = "PauseButtonOver";
this.downLinkageID = "PauseButtonDown";
this.disabledLinkageID = "PauseButtonDisabled";

这部电影有两个帧。

第一帧是一个实例名为 placeholder_mc 的影片剪辑。

第二帧是按钮状态的实例,但它们没有实例名称(这会使事情变得更容易)。但是,它们是具有上述名称的库对象的实例。

我想做的是编写一个函数,当传递其中一个按钮(例如,pause_mc)时,它会自动为其添加类似按钮的行为。我无法从 Adob​​e 的“文档”中弄清楚的一点是,如何使用嵌入在影片剪辑代码中的信息将 placeholder_mc 的内容与我想要的东西交换。

tl;博士

本质上,我只需要实现函数 set_instance 以便下面的代码按预期更改按钮的可见状态:

var my_button:MovieClip = pause_mc;
my_button.addEventListener( MouseEvent.MOUSE_OVER, function( e:Event ){
  set_instance( my_button.placeholder_mc, my_button.overLinkageID );
} );
4

2 回答 2

1

我今天尝试使用 PlayPauseButton 组件来完成这项工作。似乎 Adob​​e 并没有公开向我们提供我们正在寻找的钩子:P。

我想出的解决方案是使用 Button UI 组件并将其重新皮肤以使其看起来像PlayPauseButton.

您可以从组件中包含的两个影片剪辑(播放和暂停)中挖掘出各个按钮的状态PlayPauseButton,为它们指定实例名称,然后使用这些方法通过该setStyle()方法设置按钮的适当外观属性。确保您还将按钮的大小调整为 23x23 以避免拉伸。

于 2013-01-11T20:59:08.103 回答
0

我通常只制作一个按钮,然后使用以下方法将影片剪辑或某些显示对象分配为皮肤:

var myButton:Button = new Button();
myButton.setStyle('upSkin', new PlaySkin());
myButton.setStyle('selectedUpSkin', new PauseSkin());

然后,您的所有按钮状态将由 Flash 自动处理。对于 PlayPause 按钮​​,您可以将按钮的“toggle”属性设置为“true”,然后每次单击它时,按钮都会从选定的皮肤切换到向上的皮肤,然后再返回。

于 2011-02-23T21:47:18.850 回答