背景
我正在尝试创建一个简单的“通用”媒体播放器,它为视频和音频播放呈现相同的用户界面(或尽可能相似)。不幸的是,据我所知,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)时,它会自动为其添加类似按钮的行为。我无法从 Adobe 的“文档”中弄清楚的一点是,如何使用嵌入在影片剪辑代码中的信息将 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 );
} );