73 lines
2.2 KiB
ActionScript
73 lines
2.2 KiB
ActionScript
package ckaction.process {
|
|
import flash.net.NetConnection;
|
|
import flash.net.NetStream;
|
|
import flash.events.NetStatusEvent;
|
|
import flash.events.SecurityErrorEvent;
|
|
import flash.events.AsyncErrorEvent;
|
|
|
|
public class getVideoMeta {
|
|
private var videoArr: Array = [];
|
|
private var isClear: Boolean = false;
|
|
private var loadI: int = 0;
|
|
private var nc: NetConnection = null;
|
|
private var ns: NetStream = null;
|
|
private var complete:Function=null;
|
|
private var speedFun:Function=null;
|
|
public function getVideoMeta(arr,fun,speed) {
|
|
// constructor code
|
|
videoArr = arr;
|
|
complete=fun;
|
|
speedFun=speed;
|
|
nc = new NetConnection();
|
|
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
|
|
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
|
|
nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, netSteameErrorHandler);
|
|
nc.connect(null);
|
|
}
|
|
private function netStatusHandler(event: NetStatusEvent): void {
|
|
switch (event.info.code) {
|
|
case "NetConnection.Connect.Success":
|
|
connectStream();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
//trace(event.info.code);
|
|
|
|
}
|
|
private function securityErrorHandler(event: SecurityErrorEvent): void {}
|
|
private function netSteameErrorHandler(event: AsyncErrorEvent): void {}
|
|
private function connectStream(): void {
|
|
if (isClear) { //如果已被清除,则不进行下面的动作
|
|
return;
|
|
}
|
|
var customClient = new Object();
|
|
customClient.onMetaData = metaDataHandler;
|
|
ns = new NetStream(nc);
|
|
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
|
|
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, netSteameErrorHandler);
|
|
ns.client = customClient;
|
|
ns.play(videoArr[loadI]["file"]);
|
|
}
|
|
private function metaDataHandler(info: Object): void {
|
|
videoArr[loadI]["duration"] = info["duration"];
|
|
videoArr[loadI]["bytesTotal"] = ns.bytesTotal;
|
|
ns.dispose();
|
|
ns.removeEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
|
|
ns.removeEventListener(AsyncErrorEvent.ASYNC_ERROR, netSteameErrorHandler);
|
|
ns = null;
|
|
speedFun(loadI);
|
|
if (loadI < videoArr.length - 1) {
|
|
loadI++;
|
|
connectStream();
|
|
} else {
|
|
complete(videoArr);
|
|
}
|
|
}
|
|
public function clear(): void {
|
|
isClear = true;
|
|
}
|
|
|
|
}
|
|
|
|
} |