Flex中利用HTTPService从FlashVars载入动态创建ActionScript暗点的例子
By Minidxer | July 21, 2008
在前面Flex中如何从HTML容器中接受FlashVars动态创建ActionScript暗点的例子我们介绍过从HTML中接受FlashVars动态创建ActionScript暗点,接下来的例子演示了Flex中利用HTTPService从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"
- creationComplete="httpService.send()">
- <mx:HTTPService id="httpService"
- url="cuepoints.txt"
- result="httpService_result(event)"
- resultFormat="flashvars" />
- <mx:Script>
- <![CDATA[
- import mx.rpc.events.ResultEvent;
- 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 = new ArrayCollection();
- private function httpService_result(evt:ResultEvent):void {
- var flashVars:Object = httpService.lastResult;
- var item:String;
- for (item in flashVars) {
- videoDisplay.cuePointManager.addCuePoint({name:item, time:flashVars[item]});
- }
- }
- 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://www.helpexamples.com/flash/video/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
Topics:
Flex |
No Comments » |
Tags: CuePointManager.addCuePoint(), FlashVars, HTTPService, VideoDisplay