Flex 4中的自定义视频搜索栏控件



我正在Flex 4中创建一个自定义视频播放器。

我需要创建一个自定义的搜索栏,使其有三层,就像youtube视频播放器一样。第一层是背景,第二层是下载进度,第三层是经过的视频。搜索栏也可以点击。

如何在Flex 4中创建这样的组件。

不幸的是,我不认为内置的ScrubBar类具有此功能,所以您最好自己构建它(而不是将它添加到该类中)。

为此,我将基于Group创建一个新的MXML组件。在这个组件中,你需要四样东西:三个矩形用于条形图/背景,一个椭圆形(或另一个矩形或任何你想要的)用于游戏头。将它们叠放在一起。将背景矩形设置为100%的高度和宽度,将其他两个设置为100%高度。

现在,您要做的是创建一个部分并编写一些AS3来处理更改。请注意,这是我个人会做的,但不一定是你必须做的。例如,我知道大多数人会对使用getters setter表示不满,但我认为这是一个完美的机会。

private var _progress:Number; //0-1
private var _download:Number; //0-1
public function set progress(value:Number):void{
this._progress = value;
this.progressBar.percentWidth = value * 100;
this.playhead.x = value * this.width - this.playhead.width / 2;
this.dispatchEvent(new Event(Event.PROGRESS)); //this line is optional and you would be better suited creating your own VideoEvent class to handle events across the entire player rather than using the built in events.
}
public function get progress():Number{
return this._progress;
}
public function set download(value:Number):void{
this._download = value;
this.downloadBar.percentWidth = value * 100;
}
public function get download():Number{
return this._download;
}

显然,这只是基础。您可以更深入地了解它,并添加更多功能。例如,没有擦洗播放头或单击进度条进行搜索的功能。然而,这两者都相对容易实现,只需确保您调度事件,以便您可以从其他类中知道这些事情何时发生。

现在,从视频控件类中,您需要将scrubbar类的progressdownload属性与VideoDisplay或NetStream事件联系起来。要做到这一点,你只需将eventListener添加到你用来监听进度和缓冲区更改的任何一个中(不确定你会在VideoDisplay中使用什么,但对于NetStream,你必须监听NetStatus.STATUS才能获得缓冲区和其他好东西,不幸的是,你必须创建一个定时器来监听进度)。在每个相应的函数中,只需将适当的属性设置为VideoDisplay或NetStream对象给您的值(在NetStream的情况下,ns.time表示当前时间,ns.bytesLoaded表示下载)。

我只是略述了一下你需要做什么,但希望这能给你足够的想法来开始这项工作。

最新更新