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(); } } }