Jul 20
在前面的例子中分别了解过FlashVars以及暗点的创建(右上角Search……),接下来的例子演示了Flex中如何从HTML容器中接受FlashVars动态创建ActionScript暗点。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里察看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" applicationComplete="init()">
- <mx:Script>
- <![CDATA[
- import mx.events.VideoEvent;
- import mx.collections.ArrayCollection;
- import mx.events.CuePointEvent;
- import mx.managers.SystemManager;
- import mx.utils.URLUtil;
- import mx.utils.ObjectUtil;
- [Bindable]
- private var arrColl:ArrayCollection;
- private function init():void {
- arrColl = new ArrayCollection();
- var cpObj:Object;
- var item:String;
- var itemArr:Array;
- var params:Object = Application.application.parameters;
- if (params.hasOwnProperty("cuepoints")) {
- cpObj = URLUtil.stringToObject(params.cuepoints);
- for (item in cpObj) {
- itemArr = item.split(":");
- videoDisplay.cuePointManager.addCuePoint({name:itemArr[0], time:Number(itemArr[1])});
- }
- }
- }
- private function videoDisplay_cuePoint(evt:CuePointEvent):void {
- var cpDate:Date = new Date(evt.cuePointTime * 1000);
- arrColl.addItem({name:evt.cuePointName, time:dateFormatter.format(cpDate)});
- }
- private function videoDisplay_playheadUpdate(evt:VideoEvent):void {
- var pDate:Date = new Date(evt.playheadTime * 1000 || 10);
- var tDate:Date = new Date(evt.currentTarget.totalTime * 1000);
- progressBar.setProgress(evt.playheadTime, evt.currentTarget.totalTime);
- progressBar.label = dateFormatter.format(pDate) + " / " + dateFormatter.format(tDate);
- }
- private function videoDisplay_progress(evt:ProgressEvent):void {
- progressBar.conversion = 1024; /* Convert bytes to kilobytes. */
- progressBar.label = "%1 of %2 KB (%3%%)";
- progressBar.setProgress(evt.bytesLoaded, evt.bytesTotal);
- }
- private function videoDisplay_click(evt:MouseEvent):void {
- videoDisplay.play();
- }
- ]]>
- </mx:Script>
- <mx:DateFormatter id="dateFormatter" formatString="NN:SS" />
- <mx:HBox>
- <mx:Canvas>
- <mx:VideoDisplay id="videoDisplay"
- autoPlay="false"
- autoRewind="false"
- source="http://blog.minidx.com/ext/water.flv"
- cuePointManagerClass="mx.controls.videoClasses.CuePointManager"
- cuePoint="videoDisplay_cuePoint(event)"
- playheadUpdate="videoDisplay_playheadUpdate(event)"
- progress="videoDisplay_progress(event)"
- click="videoDisplay_click(event)"
- rewind="arrColl=new ArrayCollection()"
- rollOver="progressBar.visible = true"
- rollOut="progressBar.visible = false" />
- <mx:ProgressBar id="progressBar" mouseChildren="false"
- labelPlacement="center"
- visible="false"
- mouseEnabled="false"
- mode="manual" left="5" right="5" bottom="5" />
- </mx:Canvas>
- <mx:DataGrid id="dataGrid"
- height="100%"
- dataProvider="{arrColl}">
- <mx:columns>
- <mx:DataGridColumn dataField="name"
- headerText="CuePoint Name:" />
- <mx:DataGridColumn dataField="time"
- headerText="CuePoint Time:" />
- </mx:columns>
- </mx:DataGrid>
- </mx:HBox>
- </mx:Application>
代码:Peter deHaan 翻译/整理/编译:minidxer
