no commit message
This commit is contained in:
@@ -0,0 +1,246 @@
|
||||
package ckaction.process {
|
||||
import ckaction.act.script;
|
||||
import ckaction.act.loadXml;
|
||||
|
||||
public class analysis {
|
||||
private var success:Function=null;
|
||||
private var advObj:Object=null;
|
||||
public function analysis(obj:*,f:Function) {
|
||||
// constructor code
|
||||
success=f;
|
||||
analysisObj(obj);
|
||||
}
|
||||
private function analysisObj(obj:*):void{
|
||||
var objType=script.getType(obj);
|
||||
if(objType=="object"){
|
||||
advObj=obj;
|
||||
|
||||
front();
|
||||
}
|
||||
else if(objType=="string"){
|
||||
if(obj==""){
|
||||
success(null);
|
||||
return;
|
||||
}
|
||||
new loadXml(obj.replace("website:",""),analysisObj)
|
||||
}
|
||||
else{
|
||||
success(null);
|
||||
}
|
||||
}
|
||||
private function front():void{
|
||||
//分析前置广告
|
||||
if(advObj.hasOwnProperty("front")){
|
||||
analysisFrontObj(advObj["front"]);
|
||||
}
|
||||
else{
|
||||
pause();
|
||||
}
|
||||
}
|
||||
private function analysisFrontObj(obj:*):void{
|
||||
//分析前置广告
|
||||
//trace("分析前置广告");
|
||||
var objType=script.getType(obj);
|
||||
if(objType=="object"){
|
||||
if(obj.hasOwnProperty("front")){
|
||||
obj=obj["front"];
|
||||
objType=script.getType(obj);
|
||||
}
|
||||
}
|
||||
if(objType=="object" || objType=="array"){
|
||||
//trace("++||++",checkFormat(obj));
|
||||
if(checkFormat(obj)){
|
||||
advObj["front"]=obj;
|
||||
}
|
||||
else{
|
||||
advObj["front"]=null;
|
||||
}
|
||||
pause();
|
||||
}
|
||||
else{
|
||||
if(obj==""){
|
||||
pause();
|
||||
return;
|
||||
}
|
||||
new loadXml(obj,analysisFrontObj)
|
||||
}
|
||||
}
|
||||
private function pause():void{
|
||||
//分析暂停广告
|
||||
if(advObj.hasOwnProperty("pause")){
|
||||
analysisPauseObj(advObj["pause"]);
|
||||
}
|
||||
else{
|
||||
insert();
|
||||
}
|
||||
}
|
||||
private function analysisPauseObj(obj:*):void{
|
||||
//分析暂停广告
|
||||
var objType=script.getType(obj);
|
||||
if(objType=="object"){
|
||||
if(obj.hasOwnProperty("pause")){
|
||||
obj=obj["pause"];
|
||||
objType=script.getType(obj);
|
||||
}
|
||||
}
|
||||
if(objType=="object" || objType=="array"){
|
||||
if(checkFormat(obj)){
|
||||
advObj["pause"]=obj;
|
||||
}
|
||||
else{
|
||||
advObj["pause"]=null;
|
||||
}
|
||||
insert();
|
||||
}
|
||||
else{
|
||||
if(obj==""){
|
||||
insert();
|
||||
return;
|
||||
}
|
||||
new loadXml(obj,analysisPauseObj)
|
||||
}
|
||||
}
|
||||
private function insert():void{
|
||||
//分析中插广告
|
||||
if(advObj.hasOwnProperty("insert")){
|
||||
analysisInsertObj(advObj["insert"]);
|
||||
}
|
||||
else{
|
||||
end();
|
||||
}
|
||||
}
|
||||
private function analysisInsertObj(obj:*):void{
|
||||
//分析中插广告
|
||||
var objType=script.getType(obj);
|
||||
if(objType=="object"){
|
||||
if(obj.hasOwnProperty("insert")){
|
||||
obj=obj["insert"];
|
||||
objType=script.getType(obj);
|
||||
}
|
||||
}
|
||||
if(objType=="object" || objType=="array"){
|
||||
if(checkFormat(obj)){
|
||||
advObj["insert"]=obj;
|
||||
}
|
||||
else{
|
||||
advObj["insert"]=null;
|
||||
}
|
||||
end();
|
||||
}
|
||||
else{
|
||||
if(obj==""){
|
||||
end();
|
||||
return;
|
||||
}
|
||||
new loadXml(obj,analysisInsertObj)
|
||||
}
|
||||
}
|
||||
private function end():void{
|
||||
//分析结束广告
|
||||
if(advObj.hasOwnProperty("end")){
|
||||
analysisEndObj(advObj["end"]);
|
||||
}
|
||||
else{
|
||||
other();
|
||||
}
|
||||
}
|
||||
private function analysisEndObj(obj:*):void{
|
||||
//分析结束广告
|
||||
var objType=script.getType(obj);
|
||||
if(objType=="object"){
|
||||
if(obj.hasOwnProperty("end")){
|
||||
obj=obj["end"];
|
||||
objType=script.getType(obj);
|
||||
}
|
||||
}
|
||||
if(objType=="object" || objType=="array"){
|
||||
if(checkFormat(obj)){
|
||||
advObj["end"]=obj;
|
||||
}
|
||||
else{
|
||||
advObj["end"]=null;
|
||||
}
|
||||
other();
|
||||
}
|
||||
else{
|
||||
if(obj==""){
|
||||
other();
|
||||
return;
|
||||
}
|
||||
new loadXml(obj,analysisEndObj)
|
||||
}
|
||||
}
|
||||
private function other():void{
|
||||
//分析其它广告
|
||||
if(advObj.hasOwnProperty("other")){
|
||||
analysisOtherObj(advObj["other"]);
|
||||
}
|
||||
else{
|
||||
analysisEnd();
|
||||
}
|
||||
}
|
||||
private function analysisOtherObj(obj:*):void{
|
||||
//分析其它广告
|
||||
var objType=script.getType(obj);
|
||||
if(objType=="object"){
|
||||
if(obj.hasOwnProperty("other")){
|
||||
obj=obj["other"];
|
||||
objType=script.getType(obj);
|
||||
}
|
||||
}
|
||||
if(objType=="object" || objType=="array"){
|
||||
if(checkFormat(obj)){
|
||||
advObj["other"]=obj;
|
||||
}
|
||||
else{
|
||||
advObj["other"]=null;
|
||||
}
|
||||
analysisEnd();
|
||||
}
|
||||
else{
|
||||
if(obj==""){
|
||||
analysisEnd();
|
||||
return;
|
||||
}
|
||||
new loadXml(obj,analysisOtherObj)
|
||||
}
|
||||
}
|
||||
private function analysisEnd():void{
|
||||
var obj:Object={
|
||||
front:null,
|
||||
pause:null,
|
||||
insert:null,
|
||||
other:null
|
||||
};
|
||||
obj=script.mergeObject(obj,advObj);
|
||||
for(var k:String in obj){
|
||||
if(script.getType(obj[k])=="object"){
|
||||
obj[k]=[obj[k]]
|
||||
}
|
||||
}
|
||||
success(obj);
|
||||
}
|
||||
private function checkFormat(obj:*):Boolean{
|
||||
//判断广告格式是否符合要求
|
||||
//script.traceObject(obj);
|
||||
var objType=script.getType(obj);
|
||||
var objC:Object=null;
|
||||
if(objType=="object"){
|
||||
objC=obj;
|
||||
}
|
||||
else{
|
||||
if(script.getType(obj[0])=="object"){
|
||||
objC=obj[0];
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(!objC.hasOwnProperty("type") || !objC.hasOwnProperty("file")){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,432 @@
|
||||
package ckaction.process {
|
||||
import ckaction.act.script;
|
||||
import ckaction.act.loadXml;
|
||||
import ckaction.C.C;
|
||||
import ckaction.act.des;
|
||||
import ckaction.act.log;
|
||||
import flash.events.ErrorEvent;
|
||||
|
||||
public class analysisVideoUrl {
|
||||
private var videoHandler: Function = null;
|
||||
private var videoArr: Array = [];
|
||||
public function analysisVideoUrl(fun: Function) {
|
||||
// constructor code
|
||||
videoHandler = fun;
|
||||
//script.traceObject(C.CONFIG["flashvars"]);
|
||||
analysis(C.CONFIG["flashvars"]["video"]);
|
||||
}
|
||||
private function analysis(video: * ): void {
|
||||
trace("开始分析视频",script.getType(video));
|
||||
try {
|
||||
var obj: Object = {};
|
||||
var i: int = 0;
|
||||
var split:String=C.CONFIG["config"]["split"];
|
||||
//trace("开始=================");
|
||||
//trace(video);
|
||||
//script.traceObject(video);
|
||||
//trace("=============", script.getType(video));
|
||||
//trace("结束");
|
||||
switch (script.getType(video)) {
|
||||
case "object":
|
||||
obj = video;
|
||||
if (obj.hasOwnProperty("video")) {
|
||||
if (script.getType(obj["video"]) == "array") {
|
||||
if (obj["video"].length > 0) {
|
||||
if (obj["video"][0].hasOwnProperty("video")) {
|
||||
//新数据形式
|
||||
trace("新");
|
||||
videoArr = obj["video"];
|
||||
C.CONFIG["flashvars"] = script.mergeObject(C.CONFIG["flashvars"], obj);
|
||||
trace("执行analysisArr,39");
|
||||
analysisArr();
|
||||
} else if (obj["video"][0].hasOwnProperty("seconds")) {
|
||||
//旧数据形式
|
||||
trace("旧");
|
||||
analysisOld(obj);
|
||||
} else {
|
||||
trace("不知道什么格式");
|
||||
C.CONFIG["flashvars"] = script.mergeObject(C.CONFIG["flashvars"], obj);
|
||||
try {
|
||||
var aarr: Array = obj["video"];
|
||||
videoArr = [];
|
||||
for (i = 0; i < aarr.length; i++) {
|
||||
videoArr.push({
|
||||
file: aarr[i][0],
|
||||
type: aarr[i][1].replace("video/", "") != "" ? aarr[i][1].replace("video/", "") : script.getFileExt(aarr[i][0]),
|
||||
definition: aarr[i][2],
|
||||
weight: Number(aarr[i][3])
|
||||
|
||||
});
|
||||
}
|
||||
analysis(videoArr);
|
||||
} catch (event: Error) {
|
||||
videoArr = null;
|
||||
trace("执行analysisArr,63");
|
||||
analysisArr();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
trace("格式错误");
|
||||
C.CONFIG["flashvars"] = script.mergeObject(C.CONFIG["flashvars"], obj);
|
||||
videoArr = null;
|
||||
trace("执行analysisArr,71");
|
||||
analysisArr();
|
||||
}
|
||||
} else {
|
||||
if (obj["video"].hasOwnProperty("file") && script.getType(obj["video"]["file"]) == "array") {
|
||||
analysisOld2(obj);
|
||||
} else {
|
||||
//video是个对象需要再加载
|
||||
C.CONFIG["flashvars"] = script.mergeObject(C.CONFIG["flashvars"], obj);
|
||||
analysis(obj["video"]);
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
if (obj.hasOwnProperty("file")) {
|
||||
C.CONFIG["flashvars"] = script.mergeObject(C.CONFIG["flashvars"], obj);
|
||||
videoArr = [obj];
|
||||
trace("执行analysisArr,88");
|
||||
analysisArr();
|
||||
} else if (obj.hasOwnProperty("url")) {
|
||||
C.CONFIG["flashvars"] = script.mergeObject(C.CONFIG["flashvars"], obj);
|
||||
if (script.getType(obj["url"]) == "string" && obj["url"].toString().substr(0, 8) == "website:") {
|
||||
analysis("website:" + obj["url"].replace("website:", ""));
|
||||
} else {
|
||||
videoArr = null;
|
||||
trace("执行analysisArr,96");
|
||||
analysisArr();
|
||||
}
|
||||
} else {
|
||||
C.CONFIG["flashvars"] = script.mergeObject(C.CONFIG["flashvars"], obj);
|
||||
videoArr = null;
|
||||
trace("执行analysisArr,101");
|
||||
analysisArr();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
case "array": //普通数组调用
|
||||
trace("普通数组形式的");
|
||||
trace(video);
|
||||
videoArr = video;
|
||||
trace("执行analysisArr,114");
|
||||
analysisArr();
|
||||
break;
|
||||
default: //普通调用,字符串类型
|
||||
var str: String = video;
|
||||
if (str.substr(0, 8) == "website:") {
|
||||
str = des.getString(str.replace("website:", ""));
|
||||
loadUrl(str);
|
||||
} else {
|
||||
//trace("只有地址", video);
|
||||
video=decodeURIComponent(video);
|
||||
new log("video-split:"+split);
|
||||
if (video.indexOf(split) == -1) {
|
||||
video = des.getString(video);
|
||||
videoArr = [{
|
||||
file: video,
|
||||
type: C.CONFIG["flashvars"]["type"] ? C.CONFIG["flashvars"]["type"] : script.getFileExt(video).replace(".", ""),
|
||||
weight: 0,
|
||||
definition: ""
|
||||
}];
|
||||
} else {
|
||||
new log("video:"+video);
|
||||
trace("=========================================");
|
||||
trace(video);
|
||||
var vArr: Array = video.split(split);
|
||||
//new log(vArr);
|
||||
//script.traceObject(vArr);
|
||||
var dArr: Array = [],
|
||||
wArr: Array = [],
|
||||
tArr:Array=[];
|
||||
if (C.CONFIG["flashvars"].hasOwnProperty("definition")) {
|
||||
dArr = C.CONFIG["flashvars"]["definition"].split(",");
|
||||
}
|
||||
if (C.CONFIG["flashvars"].hasOwnProperty("weight")) {
|
||||
wArr = C.CONFIG["flashvars"]["weight"].split(",");
|
||||
}
|
||||
|
||||
if (C.CONFIG["flashvars"].hasOwnProperty("type")) {
|
||||
var typeTemp:String=C.CONFIG["flashvars"]["type"];
|
||||
if(typeTemp.indexOf(",")>-1){
|
||||
tArr = C.CONFIG["flashvars"]["type"].split(",");
|
||||
}
|
||||
else{
|
||||
tArr = C.CONFIG["flashvars"]["type"].split(split);
|
||||
}
|
||||
}
|
||||
for (var n: int = 0; n < vArr.length; n++) {
|
||||
var tObj: Object = {
|
||||
file: vArr[n]
|
||||
//type: C.CONFIG["flashvars"]["type"] ? C.CONFIG["flashvars"]["type"] : script.getFileExt(vArr[n])
|
||||
};
|
||||
if (dArr.length > n) {
|
||||
tObj["definition"] = dArr[n];
|
||||
}
|
||||
if (wArr.length > n) {
|
||||
tObj["weight"] = wArr[n];
|
||||
}
|
||||
if (tArr.length > n) {
|
||||
tObj["type"] = tArr[n];
|
||||
}
|
||||
if(!tObj.hasOwnProperty("type")){
|
||||
tObj["type"]= script.getFileExt(tObj["file"]);
|
||||
}
|
||||
videoArr.push(tObj);
|
||||
}
|
||||
}
|
||||
trace("执行analysisArr,166");
|
||||
analysisArr();
|
||||
}
|
||||
break;
|
||||
}
|
||||
} catch (event: Error) {
|
||||
trace("出错");
|
||||
videoArr = null;
|
||||
trace("执行analysisArr,173");
|
||||
analysisArr();
|
||||
}
|
||||
}
|
||||
private function analysisOld(obj: Object): void {
|
||||
//分析旧版形式
|
||||
//script.traceObject(obj);
|
||||
try {
|
||||
var vArr: Array = obj["video"];
|
||||
var nArr: Array = [];
|
||||
var type: String = "";
|
||||
var i: int = 0;
|
||||
for (i = 0; i < vArr.length; i++) {
|
||||
var tArr: Object = {
|
||||
file: vArr[i]["file"],
|
||||
bytesTotal: vArr[i]["size"],
|
||||
duration: vArr[i]["seconds"]
|
||||
};
|
||||
type = script.getFileExt(vArr[i]["file"]).replace(".", "");
|
||||
nArr.push(tArr);
|
||||
}
|
||||
var nObj: Object = {
|
||||
video: nArr,
|
||||
type: type,
|
||||
weight: 0,
|
||||
definition: ""
|
||||
};
|
||||
if (obj.hasOwnProperty("flashvars") && obj["flashvars"]) {
|
||||
var temp: String = script.replace(obj["flashvars"], ["{"], [""]);
|
||||
var arr: Array = temp.split("}");
|
||||
var fObj: Object = {};
|
||||
for (i = 0; i < arr.length; i++) {
|
||||
var temp2: String = arr[i];
|
||||
if (temp2 != "") {
|
||||
var arr2: Array = temp2.split("->");
|
||||
if (arr2[0] != "" && arr2[1] != "") {
|
||||
fObj[arr2[0]] = arr2[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
C.CONFIG["flashvars"] = script.mergeOldFlashvars(C.CONFIG["flashvars"], fObj);
|
||||
}
|
||||
videoArr = [nObj];
|
||||
trace("执行analysisArr,216");
|
||||
analysisArr();
|
||||
} catch (event: Error) {
|
||||
videoArr = null;
|
||||
trace("执行analysisArr,220");
|
||||
analysisArr();
|
||||
}
|
||||
}
|
||||
private function analysisOld2(obj: Object): void {
|
||||
//分析旧版形式
|
||||
//script.traceObject(obj);
|
||||
try {
|
||||
var vArr: Array = obj["video"]["file"];
|
||||
var sArr: Array = obj["video"]["size"];
|
||||
var eArr: Array = obj["video"]["seconds"];
|
||||
var nArr: Array = [];
|
||||
var type: String = "";
|
||||
var i: int = 0;
|
||||
for (i = 0; i < vArr.length; i++) {
|
||||
var tArr: Object = {
|
||||
file: vArr[i],
|
||||
bytesTotal: sArr[i],
|
||||
duration: eArr[i]
|
||||
};
|
||||
type = script.getFileExt(vArr[i]).replace(".", "");
|
||||
nArr.push(tArr);
|
||||
}
|
||||
var nObj: Object = {
|
||||
video: nArr,
|
||||
type: type,
|
||||
weight: 0,
|
||||
definition: ""
|
||||
};
|
||||
if (obj.hasOwnProperty("flashvars") && obj["flashvars"]) {
|
||||
//trace("包含flashvars");
|
||||
var temp: String = script.replace(obj["flashvars"], ["{"], [""]);
|
||||
var arr: Array = temp.split("}");
|
||||
var fObj: Object = {};
|
||||
for (i = 0; i < arr.length; i++) {
|
||||
var temp2: String = arr[i];
|
||||
if (temp2 != "") {
|
||||
var arr2: Array = temp2.split("->");
|
||||
if (arr2[0] != "" && arr2[1] != "") {
|
||||
fObj[arr2[0]] = arr2[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
//script.traceObject(fObj);
|
||||
C.CONFIG["flashvars"] = script.mergeOldFlashvars(C.CONFIG["flashvars"], fObj);
|
||||
}
|
||||
videoArr = [nObj];
|
||||
trace("执行analysisArr,267");
|
||||
analysisArr();
|
||||
} catch (event: Error) {
|
||||
videoArr = null;
|
||||
trace("执行analysisArr,271");
|
||||
analysisArr();
|
||||
}
|
||||
}
|
||||
private function loadUrl(url: String) { //加载网址获取视频地址后应该判断是旧式的还是新式的
|
||||
//trace(url);
|
||||
new loadXml(url, function (data: * ) {
|
||||
//trace(data);
|
||||
//script.traceObject(data);
|
||||
if (data) {
|
||||
analysis(data);
|
||||
} else {
|
||||
videoArr = null;
|
||||
trace("执行analysisArr,284");
|
||||
analysisArr();
|
||||
}
|
||||
});
|
||||
}
|
||||
private function getAD(adv: String = "", time: String = "", link: String = ""): Array {
|
||||
var vars: Object = C.CONFIG["flashvars"];
|
||||
var adArr: Array = vars[adv].split(",");
|
||||
var timeArr: Array = [],
|
||||
linkArr: Array = [];
|
||||
var ad: Array = [];
|
||||
if (vars.hasOwnProperty(time)) {
|
||||
timeArr = vars[time].split(",");
|
||||
}
|
||||
if (vars.hasOwnProperty(link)) {
|
||||
linkArr = vars[link].split(",");
|
||||
}
|
||||
for (var i: int = 0; i < adArr.length; i++) {
|
||||
var obj: Object = {
|
||||
file: adArr[i],
|
||||
type: script.getFileExt(adArr[i]).replace(".", "")
|
||||
};
|
||||
if (timeArr.length > i) {
|
||||
obj["time"] = timeArr[i];
|
||||
} else {
|
||||
obj["time"] = C.CONFIG["style"]["advertisement"]["time"];
|
||||
}
|
||||
if (linkArr.length > i) {
|
||||
obj["link"] = linkArr[i];
|
||||
} else {
|
||||
obj["link"] = "";
|
||||
}
|
||||
ad.push(obj);
|
||||
}
|
||||
return ad;
|
||||
}
|
||||
private function analysisArr(): void {
|
||||
var n: int = 0,
|
||||
m: int = 0,
|
||||
i: int = 0;
|
||||
if (videoArr) {
|
||||
C.CONFIG["flashvars"]["video"] = videoArr;
|
||||
for (i = 0; i < videoArr.length; i++) {
|
||||
if (videoArr[i].hasOwnProperty("weight")) {
|
||||
if (videoArr[i]["weight"] > n) {
|
||||
n = videoArr[i]["weight"];
|
||||
m = i;
|
||||
}
|
||||
}
|
||||
else{
|
||||
n=0;
|
||||
m=i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//分析广告
|
||||
var fvars: Object = C.CONFIG["flashvars"];
|
||||
var front: Array = [];
|
||||
var ad: Object = {};
|
||||
var isAd: Boolean = false;
|
||||
if (fvars.hasOwnProperty("adfront")) {
|
||||
ad["front"] = getAD("adfront", "adfronttime", "adfrontlink");
|
||||
isAd = true;
|
||||
}
|
||||
if (fvars.hasOwnProperty("adpause")) {
|
||||
ad["pause"] = getAD("adpause", "adpausetime", "adpauselink");
|
||||
isAd = true;
|
||||
}
|
||||
if (fvars.hasOwnProperty("adinsert")) {
|
||||
ad["insert"] = getAD("adinsert", "adinserttime", "adinsertlink");
|
||||
isAd = true;
|
||||
}
|
||||
if (fvars.hasOwnProperty("adend")) {
|
||||
ad["end"] = getAD("adend", "adendtime", "adendlink");
|
||||
isAd = true;
|
||||
}
|
||||
if (isAd && ad) {
|
||||
C.CONFIG["flashvars"]["advertisements"] = ad;
|
||||
}
|
||||
|
||||
//分析广告
|
||||
//分析提示点
|
||||
if (fvars.hasOwnProperty("promptspot") && fvars.hasOwnProperty("promptspottime")) {
|
||||
if (script.getType(fvars["promptspot"]) == "string") {
|
||||
var prompt: Array = fvars["promptspot"].split(",");
|
||||
var prompttime: Array = fvars["promptspottime"].split(",");
|
||||
var promptSpot: Array = [];
|
||||
if (prompt.length == prompttime.length) {
|
||||
for (i = 0; i < prompt.length; i++) {
|
||||
promptSpot.push({
|
||||
words: prompt[i],
|
||||
time: prompttime[i]
|
||||
});
|
||||
}
|
||||
C.CONFIG["flashvars"]["promptSpot"] = promptSpot;
|
||||
}
|
||||
}
|
||||
}
|
||||
//trace(fvars["previewscale"]);
|
||||
if (fvars.hasOwnProperty("preview") && fvars["preview"]) {
|
||||
if (script.getType(fvars["preview"]) == "string") {
|
||||
C.CONFIG["flashvars"]["preview"] = {
|
||||
file: fvars["preview"].split(","),
|
||||
scale: fvars["previewscale"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (videoArr) {
|
||||
//script.traceObject(videoArr[m]);
|
||||
if (videoArr[m].hasOwnProperty("video")) {
|
||||
if (script.getType(videoArr[m]["video"]) == "array") {
|
||||
var nArr: Array = videoArr[m]["video"];
|
||||
var timeTotal: Number = 0;
|
||||
for (i = 0; i < nArr.length; i++) {
|
||||
if (nArr[i].hasOwnProperty("duration")) {
|
||||
timeTotal += Number(nArr[i]["duration"]);
|
||||
}
|
||||
}
|
||||
C.CONFIG["flashvars"]["duration"] = timeTotal;
|
||||
//trace("总时间:",timeTotal);
|
||||
}
|
||||
}
|
||||
}
|
||||
trace("发送一次newPlayerHandler");
|
||||
script.traceObject(videoArr);
|
||||
videoHandler(videoArr, m);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package ckaction.process {
|
||||
import ckaction.act.script;
|
||||
import ckaction.act.loadXml;
|
||||
import ckaction.C.C;
|
||||
import ckaction.act.des;
|
||||
public class analysisVideoUrlNum {
|
||||
private var videoHandler: Function = null;
|
||||
private var videoArr: Array = [];
|
||||
private var N:int=0;
|
||||
public function analysisVideoUrlNum(fun: Function,n:int=0) {
|
||||
// constructor code
|
||||
videoHandler = fun;
|
||||
N=n;
|
||||
analysis(C.CONFIG["flashvars"]["video"][n]["video"]);
|
||||
}
|
||||
private function analysis(url:String=""): void {
|
||||
if(url.substr(0,8)=="website:"){
|
||||
loadUrl(des.getString(url.replace("website:", "")));
|
||||
}
|
||||
}
|
||||
private function loadUrl(url: String) {
|
||||
new loadXml(url, function (data: * ) {
|
||||
if (data) {
|
||||
//script.traceObject(data);
|
||||
//C.CONFIG["flashvars"]=script.mergeOldFlashvars(C.CONFIG["flashvars"], data);
|
||||
C.CONFIG["flashvars"]=script.mergeObject(C.CONFIG["flashvars"],data)
|
||||
videoHandler(true);
|
||||
} else {
|
||||
videoHandler(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,342 @@
|
||||
package ckaction.process {
|
||||
import flash.external.ExternalInterface;
|
||||
import flash.display.Stage;
|
||||
import ckaction.act.script;
|
||||
import ckaction.act.loadXml;
|
||||
import ckaction.C.C;
|
||||
import ckaction.act.log;
|
||||
|
||||
public class config {
|
||||
private var path: Object = {};
|
||||
private var CONFIG: Object = null; //配置
|
||||
private var flashvars: Object = null; //flashvars
|
||||
private var loadHandler: Function = null;
|
||||
private var loadxml: loadXml = null;
|
||||
public function config(stage: Stage, fun: Function) {
|
||||
loadHandler = fun;
|
||||
flashvars = stage.loaderInfo.parameters;
|
||||
if(flashvars.hasOwnProperty("video")){
|
||||
if(flashvars["video"].toString().indexOf("%3f")>-1 || flashvars["video"].toString().indexOf("%2f")>-1 || flashvars["video"].toString().indexOf("%26")>-1){
|
||||
flashvars["video"]=unescape(flashvars["video"]);
|
||||
}
|
||||
}
|
||||
flashvars = script.mergeObject(C.CONFIG["flashvars"], flashvars);
|
||||
//
|
||||
if (flashvars["config"] != "" && (flashvars["config"] == "false" || flashvars["config"] == "no")) {
|
||||
CONFIG = C.CONFIG;
|
||||
configHandler();
|
||||
return;
|
||||
}
|
||||
path = script.getPath(stage.loaderInfo.url);
|
||||
C.PATH = path;
|
||||
if (ExternalInterface.available) {
|
||||
var cf: String = "ckplayerConfig";
|
||||
if (flashvars["config"] != "") {
|
||||
cf = script.formatSsl(flashvars["config"]);
|
||||
}
|
||||
var temp = ExternalInterface.call(cf);
|
||||
if(temp){
|
||||
CONFIG=temp;
|
||||
}
|
||||
else{
|
||||
temp=ExternalInterface.call("function(){return "+flashvars["variable"]+".getCkplayerConfig()}");
|
||||
if(temp){
|
||||
CONFIG=temp;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (CONFIG == null || !CONFIG) {
|
||||
var url: String = flashvars["config"] ? flashvars["config"] : path["path"] + path["fileName"] + ".json";
|
||||
loadxml = new loadXml(url, function (data: Object = null) {
|
||||
if (data) {
|
||||
CONFIG = data;
|
||||
flashvars = script.supplementObject(flashvars, CONFIG["flashvars"]);
|
||||
//script.traceObject(CONFIG["flashvars"]);
|
||||
CONFIG["flashvars"] = flashvars;
|
||||
loadLanguage();
|
||||
} else {
|
||||
new log("error:Failed to load " + url);
|
||||
//flashvars = script.mergeObject(flashvars, CONFIG["flashvars"]);
|
||||
CONFIG = C.CONFIG;
|
||||
CONFIG["flashvars"] = flashvars;
|
||||
configHandler();
|
||||
return;
|
||||
}
|
||||
|
||||
});
|
||||
} else {
|
||||
flashvars = script.supplementObject(flashvars, CONFIG["flashvars"]);
|
||||
CONFIG["flashvars"] = flashvars;
|
||||
loadLanguage();
|
||||
}
|
||||
|
||||
}
|
||||
private function loadLanguage(): void { //加载语言包
|
||||
CONFIG["flashvars"]["config"]=script.formatSsl(CONFIG["flashvars"]["config"]);
|
||||
CONFIG["flashvars"]["loaded"]=script.formatSsl(CONFIG["flashvars"]["loaded"]);
|
||||
//script.traceObject(C.CONFIG["flashvars"]);
|
||||
if (ExternalInterface.available) {
|
||||
var cf: String = "ckplayerLanguage";
|
||||
if (flashvars["language"]) {
|
||||
cf = script.formatSsl(flashvars["language"]);
|
||||
|
||||
}
|
||||
if (!CONFIG.hasOwnProperty("language")) {
|
||||
CONFIG["language"] = new Object();
|
||||
} else {
|
||||
if (script.getType(CONFIG["language"]) != "object") {
|
||||
CONFIG["language"] = new Object();
|
||||
}
|
||||
}
|
||||
var temp = ExternalInterface.call(cf);
|
||||
var languageTemp=null;
|
||||
if(temp){
|
||||
languageTemp=temp;
|
||||
}
|
||||
else{
|
||||
temp=ExternalInterface.call("function(){return "+flashvars["variable"]+".getCkplayerLanguage()}");
|
||||
if(temp){
|
||||
languageTemp=temp;
|
||||
}
|
||||
}
|
||||
|
||||
if(languageTemp){
|
||||
CONFIG["language"] = script.mergeObject(CONFIG["language"], temp);
|
||||
loadStyle();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var languagePath: String = "";
|
||||
if (CONFIG.hasOwnProperty("languagePath")) {
|
||||
languagePath = CONFIG["languagePath"];
|
||||
}
|
||||
|
||||
if (languagePath == "false" || languagePath == "no") {
|
||||
configHandler();
|
||||
return;
|
||||
}
|
||||
if (languagePath != "" && languagePath != null) {
|
||||
if (!languagePath.indexOf("/") && !languagePath.indexOf("\\")) {
|
||||
languagePath = path["path"] + languagePath;
|
||||
}
|
||||
} else {
|
||||
languagePath = path["path"] + "language.json";
|
||||
}
|
||||
if (loadxml) {
|
||||
loadxml = null;
|
||||
}
|
||||
loadxml = new loadXml(languagePath, function (data: Object) {
|
||||
if (data) {
|
||||
var language: Object = data;
|
||||
if (!CONFIG.hasOwnProperty("language")) {
|
||||
CONFIG["language"] = new Object();
|
||||
} else {
|
||||
if (script.getType(CONFIG["language"]) != "object") {
|
||||
CONFIG["language"] = new Object();
|
||||
}
|
||||
}
|
||||
CONFIG["language"] = script.mergeObject(CONFIG["language"], language);
|
||||
loadStyle();
|
||||
|
||||
} else {
|
||||
new log("error:Failed to load " + languagePath);
|
||||
loadStyle();
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
private function loadStyle(): void { //加载风格
|
||||
if (ExternalInterface.available) {
|
||||
var cf: String = "ckplayerStyle";
|
||||
if (flashvars["style"]) {
|
||||
cf = script.formatSsl(flashvars["style"]);
|
||||
|
||||
}
|
||||
var temp = ExternalInterface.call(cf);
|
||||
var styleTemp=null;
|
||||
if(temp){
|
||||
styleTemp=temp;
|
||||
}
|
||||
else{
|
||||
temp=ExternalInterface.call("function(){return "+flashvars["variable"]+".getCkplayerStyle()}");
|
||||
if(temp){
|
||||
styleTemp=temp;
|
||||
}
|
||||
}
|
||||
|
||||
if(!styleTemp){
|
||||
if (!CONFIG.hasOwnProperty("style")) {
|
||||
CONFIG["style"] = new Object();
|
||||
} else {
|
||||
if (script.getType(CONFIG["style"]) != "object") {
|
||||
CONFIG["style"] = new Object();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if(styleTemp){
|
||||
CONFIG["style"]["advertisement"]=script.mergeObject(CONFIG["style"]["advertisement"], styleTemp["advertisement"]);
|
||||
CONFIG["style"] = script.mergeObject(CONFIG["style"], styleTemp);
|
||||
flashvars = script.supplementObject(flashvars, styleTemp["flashvars"]);
|
||||
CONFIG["flashvars"] = flashvars;
|
||||
configHandler();
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
var stylePath: String = CONFIG["stylePath"];
|
||||
if (CONFIG["stylePath"] == "false" || CONFIG["stylePath"] == "no") {
|
||||
CONFIG["style"] = null;
|
||||
configHandler();
|
||||
return;
|
||||
}
|
||||
if (stylePath != "" && stylePath != null) {
|
||||
if (!stylePath.indexOf("/") && !stylePath.indexOf("\\")) {
|
||||
stylePath = path["path"] + stylePath;
|
||||
|
||||
}
|
||||
} else {
|
||||
stylePath = path["path"] + "style.json";
|
||||
}
|
||||
var url: String = stylePath;
|
||||
//var url: String = CONFIG["stylePath"] ? CONFIG["stylePath"] : path["path"] + "style.xml";
|
||||
if (loadxml) {
|
||||
loadxml = null;
|
||||
}
|
||||
loadxml = new loadXml(url, function (data: Object) {
|
||||
if (data) {
|
||||
var style: Object = data;
|
||||
if (!CONFIG.hasOwnProperty("style")) {
|
||||
CONFIG["style"] = new Object();
|
||||
} else {
|
||||
if (script.getType(CONFIG["style"]) != "object") {
|
||||
CONFIG["style"] = new Object();
|
||||
}
|
||||
}
|
||||
CONFIG["style"]["advertisement"]=script.mergeObject(CONFIG["style"]["advertisement"], style["advertisement"]);
|
||||
CONFIG["style"] = script.mergeObject(CONFIG["style"], style);
|
||||
flashvars = script.supplementObject(flashvars, style["flashvars"]);
|
||||
CONFIG["flashvars"] = flashvars
|
||||
configHandler();
|
||||
|
||||
} else {
|
||||
new log("error:Failed to load " + url);
|
||||
configHandler();
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
private function configHandler(): void {
|
||||
if (CONFIG["config"]["timeStamp"]) {
|
||||
loadxml = new loadXml(CONFIG["config"]["timeStamp"], function (data: * ) {
|
||||
if (data) {
|
||||
//script.traceObject(data);
|
||||
if (script.getType(data) == "string") {
|
||||
CONFIG["config"]["time"] = Number(data) * 1000;
|
||||
} else {
|
||||
CONFIG["config"]["time"] = Number(data["result"]["timestamp"]) * 1000;
|
||||
}
|
||||
configEnd();
|
||||
} else {
|
||||
configEnd();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
configEnd();
|
||||
}
|
||||
|
||||
}
|
||||
private function getAD(adv: String = "", time: String = "", link: String = ""): Array {
|
||||
var vars: Object = CONFIG["flashvars"];
|
||||
var adArr: Array = vars[adv].split(",");
|
||||
var timeArr: Array = [],
|
||||
linkArr: Array = [];
|
||||
var ad: Array = [];
|
||||
if (vars.hasOwnProperty(time)) {
|
||||
timeArr = vars[time].split(",");
|
||||
}
|
||||
if (vars.hasOwnProperty(link)) {
|
||||
linkArr = vars[link].split(",");
|
||||
}
|
||||
for (var i: int = 0; i < adArr.length; i++) {
|
||||
var obj: Object = {
|
||||
file: adArr[i],
|
||||
type: script.getFileExt(adArr[i]).replace(".", "")
|
||||
};
|
||||
if (timeArr.length > i) {
|
||||
obj["time"] = timeArr[i];
|
||||
} else {
|
||||
obj["time"] = CONFIG["style"]["advertisement"]["time"];
|
||||
}
|
||||
if (linkArr.length > i) {
|
||||
obj["link"] = linkArr[i];
|
||||
} else {
|
||||
obj["link"] = "";
|
||||
}
|
||||
ad.push(obj);
|
||||
}
|
||||
//script.traceObject(ad);
|
||||
return ad;
|
||||
}
|
||||
private function configEnd(): void {
|
||||
//分析广告
|
||||
var fvars: Object = CONFIG["flashvars"];
|
||||
var front: Array = [];
|
||||
var ad: Object = {};
|
||||
var isAd: Boolean = false;
|
||||
if (fvars.hasOwnProperty("adfront")) {
|
||||
ad["front"] = getAD("adfront", "adfronttime", "adfrontlink");
|
||||
isAd = true;
|
||||
}
|
||||
if (fvars.hasOwnProperty("adpause")) {
|
||||
ad["pause"] = getAD("adpause", "adpausetime", "adpauselink");
|
||||
isAd = true;
|
||||
}
|
||||
if (fvars.hasOwnProperty("adinsert")) {
|
||||
ad["insert"] = getAD("adinsert", "adinserttime", "adinsertlink");
|
||||
isAd = true;
|
||||
}
|
||||
if (fvars.hasOwnProperty("adend")) {
|
||||
ad["end"] = getAD("adend", "adendtime", "adendlink");
|
||||
isAd = true;
|
||||
}
|
||||
if (isAd && ad) {
|
||||
CONFIG["flashvars"]["advertisements"] = ad;
|
||||
}
|
||||
//分析广告
|
||||
//分析提示点
|
||||
if (fvars.hasOwnProperty("promptspot") && fvars.hasOwnProperty("promptspottime")) {
|
||||
if (script.getType(fvars["promptspot"]) == "string") {
|
||||
var prompt: Array = fvars["promptspot"].split(",");
|
||||
var prompttime: Array = fvars["promptspottime"].split(",");
|
||||
var promptSpot: Array = [];
|
||||
if (prompt.length == prompttime.length) {
|
||||
for (var i: int = 0; i < prompt.length; i++) {
|
||||
promptSpot.push({
|
||||
words: prompt[i],
|
||||
time: prompttime[i]
|
||||
});
|
||||
}
|
||||
CONFIG["flashvars"]["promptSpot"] = promptSpot;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fvars.hasOwnProperty("preview") && fvars["preview"]) {
|
||||
if (script.getType(fvars["preview"]) == "string") {
|
||||
CONFIG["flashvars"]["preview"] = {
|
||||
file: fvars["preview"].split(","),
|
||||
scale: fvars["previewscale"]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
C.CONFIG = script.mergeObject(C.CONFIG, CONFIG);
|
||||
//script.traceObject(C.CONFIG);
|
||||
loadHandler();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user