package ckaction.style { import flash.display.Stage; import flash.display.Sprite; import flash.events.Event; import flash.display.Loader; import ckaction.act.script; import flash.text.TextField; import flash.events.MouseEvent; import flash.geom.Point; import flash.events.ErrorEvent; import fl.transitions.Tween; import fl.transitions.easing.None; import fl.transitions.TweenEvent; import flash.display.StageDisplayState; import ckaction.act.timeInterval; import ckaction.C.C; import flash.events.DataEvent; import ckaction.act.timeOut; import flash.ui.Mouse; import ckaction.act.log; import flash.display.SimpleButton; public class face { private var STAGE: Stage = null; private var THIS: Sprite = null; private var CONFIG: Object = {}, STYLE: Object = {}, LANGUAGE: Object = {}, FLASHVARS: Object = {}; private var intoFun: Function = null; //调用主控制台的into private var stageW: int = 0, stageH: int = 0; private var M: Sprite = null; //控制栏元件 public var MOBJ: Object = {}; //存放控制栏里各元素的 private var imgButtonI: int = 0; private var mouseDownName: String = ""; //鼠标在音量和进度上按下时附值 private var point: Point = null; //进度按钮音量调节按钮坐标 private var volumeTemp: Number = 0; //保存临时音量 private var timeTotal: Number = 0; //总时间 private var timeNow: Number = 0; //播放时间 private var timeMax: Number = -1; //当前播放的最大时间 private var timeSeek: Number = -1; //拖动前的时间 private var loadTotal: int = 0; //总字节 private var loadNow: int = 0; //当前加载量 private var timeFollow: Boolean = true; //时间进度条是否走动 private var seekTime: Number = 0; //要跳转的时间 private var mUpSeek: Boolean = true; //是否支持在鼠标拖动进度按钮后的动作 private var loaderNum: int = 0; //要加载的图片总量 private var showTween: Tween = null, hideTween: Tween = null; private var timeSliderShow: Boolean = true, timeOutSliderShow: Boolean = false, mShow: Boolean = true; private var cbHideTimer: timeInterval = null, cbShowTimer: timeInterval = null; private var cbTween: Tween = null; private var oldStageXY: Object = {}; private var mMinXY: Object = {}; private var errorText: TextField = null; private var setTimeClick: timeOut = null; private var isClick: Boolean = false; private var pause: Sprite = null; //提示点 private var promptSpotArr: Array = []; private var promptSpotObjArr: Array = []; //定义元件开始 //存放播放器背景 private var background: Object = { background: null }; private var clickSprite: Sprite = null; private var loading: Loader = null, logo: Loader = null; private var prompt: Sprite = null; private var force: Boolean = false; //定义元件结束 //获取状态 public var full: Boolean = false; //是否全屏状态 //预览图片 private var previewElement: newPreview = null; private var preview: Sprite = null; private var previewLoad: Boolean = false, previewLoadIng: Boolean = false; private var previewTop: Sprite = null; private var pTween: Tween = null; //预览图片缓动 private var previewPrompt: Sprite = null; private var listenerArr: Array = []; private var definitionTimer: timeInterval = null,subtitleTimer:timeInterval=null; private var buttonDown: Boolean = false; private var videoSpriteXY:Object={x:0,y:0}; public function face(stage: Stage, sprite: Sprite, into: Function) { // constructor code STAGE = stage; THIS = sprite; CONFIG = C.CONFIG; STYLE = CONFIG["style"]; LANGUAGE = CONFIG["language"]; FLASHVARS = CONFIG["flashvars"]; script.traceObject(STYLE); intoFun = into; stageW = STAGE.stageWidth; stageH = STAGE.stageHeight; stage.addEventListener(Event.RESIZE, resizeHandler); loadBackGround(); } private function resizeHandler(event: Event): void { resize(); //resize(); } private function resize(): void { stageW = STAGE.stageWidth; stageH = STAGE.stageHeight; //修改背景位置和尺寸 backgroundResize(); //控制栏 controlBarResize(); //loading loadingResize(); //logo logoResize(); //buffer bufferResize(); //音量 volumeSliderResize(); //时间进度 timeSliderResize(); //简易时间进度 simpleScheduleResize(); //点播时间显示框 vodTimeTextResize(); //直播显示框 liveTimeTextResize(); //调节全局自定义元件的坐标 loadCustomResize(); //如果控制栏是隐藏状态 if (!mShow) { mShowHandler(); if (cbHideTimer) { cbHideTimer.start(); } if (cbShowTimer) { cbShowTimer.stop(); } } //调整错误文本框 errorShowResize(); //调整中间播放按钮 centerPlayResize(); //调用前置后置广告 advertisementResize(); checkFullScreen(); definitionResize(); subtitlesResize(); promptSpotResize(); } //加载字幕切换组件 public function loadSubtitles(n:int=-1):void{ if (!C.CONFIG["config"]["subtitle"]) { return; } var trackS:String=C.CONFIG["flashvars"]["cktrack"]; var trackArr=[]; var index:int=0; if(trackS && trackS.indexOf(",")>-1){ trackArr=script.trackToArray(trackS); for(var i:int=0;iindex){ index=trackArr[i][2]; } } if(n==-1){ n=index; } } var eventS: String = STYLE["controlBar"]["subtitle"]["event"]; if (MOBJ.hasOwnProperty("subtitleDefault") && MOBJ["subtitleDefault"] != null) { if (eventS == "over") { MOBJ["subtitleDefault"].removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); } else { MOBJ["subtitleDefault"].removeEventListener(MouseEvent.CLICK, mouseClickHandler); MOBJ["subtitleDefault"].removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); MOBJ["subtitleDefault"].removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } M.removeChild(MOBJ["subtitleDefault"]); MOBJ["subtitleDefault"] = null; } var text: String = ""; if (n > -1) { text=trackArr[n][1]; } if (text == "") { text = LANGUAGE["subtitle"]; } var buttonObj: Object = script.copyObject(STYLE["controlBar"]["subtitle"]["defaultButton"]); if (n == -1) { buttonObj["overBackgroundColor"] = buttonObj["backgroundColor"]; } buttonObj["text"] = text; var button: SimpleButton = element.newButton(buttonObj); if (MOBJ.hasOwnProperty("timeSlider")) { var tc: int = M.getChildIndex(MOBJ["timeSlider"]["backDefaultSprite"]); M.addChildAt(button, tc); } else { M.addChild(button); } if (n > -1) { if (eventS == "over") { button.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); } else { button.addEventListener(MouseEvent.CLICK, mouseClickHandler); button.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); button.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } } MOBJ["subtitleDefault"] = button; //加载按钮列表 subtitlesResize(); } public function newSubtitles(high: int = 0): void { //high是高亮编号 if (!C.CONFIG["config"]["subtitle"]) { loadSubtitles(-1); return; } var trackS:String=C.CONFIG["flashvars"]["cktrack"]; var trackArr=[]; if(trackS.indexOf(",")>-1){ trackArr=script.trackToArray(trackS); } else{ return; } //建立按钮 if (MOBJ.hasOwnProperty("subtitleBack") && MOBJ["subtitleBack"] != null) { M.removeChild(MOBJ["subtitleBack"]); MOBJ["subtitleBack"] = null; } var buttonObj: Object = {}; var text = ""; var buttonArr: Array = []; var lineArr: Array = []; for (var i: int = 0; i < trackArr.length; i++) { if (i != high) { buttonObj = STYLE["controlBar"]["subtitle"]["button"]; } else { buttonObj = STYLE["controlBar"]["subtitle"]["buttonHighlight"]; } if (trackArr[i][1] != "") { text = trackArr[i][1]; } buttonObj["text"] = text; var button: SimpleButton = element.newButton(buttonObj); button.name = "subtitle_" + i; button.addEventListener(MouseEvent.CLICK, function (event: MouseEvent) { THIS["changeSubtitles"](event.target.name.toString().replace("subtitle_", "")); }); buttonArr.push(button); } //创建背景 //计算宽高 var background: Object = STYLE["controlBar"]["subtitle"]["background"]; var separate: Object = STYLE["controlBar"]["subtitle"]["separate"]; var bWidth: int = Number(background["paddingLeft"]) + Number(background["paddingRight"]) + buttonArr[0].width; var bHeight: int = Number(background["paddingTop"]) + Number(background["paddingBottom"]) + buttonArr[0].height * buttonArr.length; bHeight += (Number(separate["height"]) + Number(separate["marginTop"]) + Number(separate["marginBottom"])) * (buttonArr.length - 1); //script.traceObject(); var bgObj: Object = { backgroundColor: background["backgroundColor"], //背景颜色 backgroundAlpha: background["backgroundAlpha"], //背景透明度 border: background["border"], borderColor: background["borderColor"], //边框颜色 radius: background["radius"], //圆角弧度 width: bWidth, height: bHeight } var bgSprite: Sprite = element.newSprite(bgObj); //画倒三角 var triangleObj: Object = { width: background["triangleWidth"], height: background["triangleHeight"], backgroundColor: background["triangleBackgroundColor"], border: background["triangleBorder"], borderColor: background["triangleBorderColor"], alpha: background["triangleAlpha"] }; var triangle: Sprite = element.newTriangle(triangleObj); triangle.y = bgSprite.height + Number(background["triangleDeviationY"]); triangle.x = (bgSprite.width - triangle.width) * 0.5 + Number(background["triangleDeviationX"]); bgSprite.addChild(triangle); //倒三角结束 //将按钮填充进去并且画个间隔线 var lineObj: Object = { color: separate["color"], //背景颜色 alpha: Number(separate["alpha"]), //透明度 width: bWidth - Number(separate["marginLeft"]) - Number(separate["marginRight"]), height: Number(separate["height"]) }; var nY: int = Number(background["paddingTop"]); for (i = 0; i < buttonArr.length; i++) { buttonArr[i].y = nY; buttonArr[i].x = Number(background["paddingLeft"]); bgSprite.addChild(buttonArr[i]); nY += buttonArr[i].height; //画间隔线 if (i < buttonArr.length - 1) { var line: Sprite = element.newLine(lineObj); nY += Number(separate["marginTop"]); line.x = Number(separate["marginLeft"]); line.y = nY; nY += line.height; nY += Number(separate["marginBottom"]); bgSprite.addChild(line); } //画间隔线结束 } bgSprite.visible = false; //填充结束 M.addChild(bgSprite); MOBJ["subtitleBack"] = bgSprite; subtitlesResize(); //trace(201, "行", bWidth, bHeight); } //加载清晰度组件 public function loadDefinition(n: int = -1): void { if (!C.CONFIG["config"]["definition"]) { return; } var eventS: String = STYLE["controlBar"]["definition"]["event"]; if (MOBJ.hasOwnProperty("definitionDefault") && MOBJ["definitionDefault"] != null) { if (eventS == "over") { MOBJ["definitionDefault"].removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); } else { MOBJ["definitionDefault"].removeEventListener(MouseEvent.CLICK, mouseClickHandler); MOBJ["definitionDefault"].removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); MOBJ["definitionDefault"].removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } M.removeChild(MOBJ["definitionDefault"]); MOBJ["definitionDefault"] = null; } var text: String = ""; if (n > -1) { var video: Array = C.CONFIG["flashvars"]["video"]; if (video[n].hasOwnProperty("definition")) { if (video[n]["definition"] != "") { text = video[n]["definition"]; } } } if (text == "") { text = LANGUAGE["definition"]; } var buttonObj: Object = script.copyObject(STYLE["controlBar"]["definition"]["defaultButton"]); if (n == -1) { buttonObj["overBackgroundColor"] = buttonObj["backgroundColor"]; } buttonObj["text"] = text; var button: SimpleButton = element.newButton(buttonObj); if (MOBJ.hasOwnProperty("timeSlider")) { var tc: int = M.getChildIndex(MOBJ["timeSlider"]["backDefaultSprite"]); M.addChildAt(button, tc); } else { M.addChild(button); } if (n > -1) { if (eventS == "over") { button.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); } else { button.addEventListener(MouseEvent.CLICK, mouseClickHandler); button.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); button.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } } MOBJ["definitionDefault"] = button; //加载按钮列表 definitionResize(); } public function newDefinition(high: int = 0): void { //high是高亮编号 if (!C.CONFIG["config"]["definition"]) { loadDefinition(-1); return; } var video: Array = C.CONFIG["flashvars"]["video"]; if (video[0].hasOwnProperty("definition")) { if (video[0]["definition"] == "") { loadDefinition(-1); return; } } else { loadDefinition(-1); return; } //建立按钮 if (MOBJ.hasOwnProperty("definitionBack") && MOBJ["definitionBack"] != null) { M.removeChild(MOBJ["definitionBack"]); MOBJ["definitionBack"] = null; } var buttonObj: Object = {}; var text = ""; var buttonArr: Array = []; var lineArr: Array = []; for (var i: int = 0; i < video.length; i++) { if (i != high) { buttonObj = STYLE["controlBar"]["definition"]["button"]; } else { buttonObj = STYLE["controlBar"]["definition"]["buttonHighlight"]; } if (video[i]["definition"] != "") { text = video[i]["definition"]; } buttonObj["text"] = text; var button: SimpleButton = element.newButton(buttonObj); button.name = "definition_" + i; button.addEventListener(MouseEvent.CLICK, function (event: MouseEvent) { THIS["changeDefinition"](event.target.name.toString().replace("definition_", "")); }); buttonArr.push(button); } //创建背景 //计算宽高 var background: Object = STYLE["controlBar"]["definition"]["background"]; var separate: Object = STYLE["controlBar"]["definition"]["separate"]; var bWidth: int = Number(background["paddingLeft"]) + Number(background["paddingRight"]) + buttonArr[0].width; var bHeight: int = Number(background["paddingTop"]) + Number(background["paddingBottom"]) + buttonArr[0].height * buttonArr.length; bHeight += (Number(separate["height"]) + Number(separate["marginTop"]) + Number(separate["marginBottom"])) * (buttonArr.length - 1); //script.traceObject(); var bgObj: Object = { backgroundColor: background["backgroundColor"], //背景颜色 backgroundAlpha: background["backgroundAlpha"], //背景透明度 border: background["border"], borderColor: background["borderColor"], //边框颜色 radius: background["radius"], //圆角弧度 width: bWidth, height: bHeight } var bgSprite: Sprite = element.newSprite(bgObj); //画倒三角 var triangleObj: Object = { width: background["triangleWidth"], height: background["triangleHeight"], backgroundColor: background["triangleBackgroundColor"], border: background["triangleBorder"], borderColor: background["triangleBorderColor"], alpha: background["triangleAlpha"] }; var triangle: Sprite = element.newTriangle(triangleObj); triangle.y = bgSprite.height + Number(background["triangleDeviationY"]); triangle.x = (bgSprite.width - triangle.width) * 0.5 + Number(background["triangleDeviationX"]); bgSprite.addChild(triangle); //倒三角结束 //将按钮填充进去并且画个间隔线 var lineObj: Object = { color: separate["color"], //背景颜色 alpha: Number(separate["alpha"]), //透明度 width: bWidth - Number(separate["marginLeft"]) - Number(separate["marginRight"]), height: Number(separate["height"]) }; var nY: int = Number(background["paddingTop"]); for (i = 0; i < buttonArr.length; i++) { buttonArr[i].y = nY; buttonArr[i].x = Number(background["paddingLeft"]); bgSprite.addChild(buttonArr[i]); nY += buttonArr[i].height; //画间隔线 if (i < buttonArr.length - 1) { var line: Sprite = element.newLine(lineObj); nY += Number(separate["marginTop"]); line.x = Number(separate["marginLeft"]); line.y = nY; nY += line.height; nY += Number(separate["marginBottom"]); bgSprite.addChild(line); } //画间隔线结束 } bgSprite.visible = false; //填充结束 M.addChild(bgSprite); MOBJ["definitionBack"] = bgSprite; definitionResize(); //trace(201, "行", bWidth, bHeight); } private function definitionResize(): void { if (!C.CONFIG["config"]["definition"]) { return; } //backgroundCoor var newCoor: Object if (MOBJ.hasOwnProperty("definitionDefault") && MOBJ["definitionDefault"] != null) { newCoor = coorDinate(STYLE["controlBar"]["definition"]["defaultButtonCoor"], MOBJ["controlBarBgColor"]); //script.traceObject(newCoor) MOBJ["definitionDefault"].x = newCoor["x"]; MOBJ["definitionDefault"].y = newCoor["y"]; } if (MOBJ.hasOwnProperty("definitionBack") && MOBJ["definitionBack"] != null) { var height: String = STYLE["controlBar"]["definition"]["backgroundCoor"]["height"].toString(); newCoor = coorDinate(STYLE["controlBar"]["definition"]["backgroundCoor"], MOBJ["controlBarBgColor"]); MOBJ["definitionBack"].x = newCoor["x"]; MOBJ["definitionBack"].y = newCoor["y"] - (height == "true" ? MOBJ["definitionBack"].height : 0); } } private function subtitlesResize(): void { if (!C.CONFIG["config"]["subtitle"]) { return; } //backgroundCoor var newCoor: Object if (MOBJ.hasOwnProperty("subtitleDefault") && MOBJ["subtitleDefault"] != null) { newCoor = coorDinate(STYLE["controlBar"]["subtitle"]["defaultButtonCoor"], MOBJ["controlBarBgColor"]); //script.traceObject(newCoor) MOBJ["subtitleDefault"].x = newCoor["x"]; MOBJ["subtitleDefault"].y = newCoor["y"]; } if (MOBJ.hasOwnProperty("subtitleBack") && MOBJ["subtitleBack"] != null) { var height: String = STYLE["controlBar"]["subtitle"]["backgroundCoor"]["height"].toString(); newCoor = coorDinate(STYLE["controlBar"]["subtitle"]["backgroundCoor"], MOBJ["controlBarBgColor"]); MOBJ["subtitleBack"].x = newCoor["x"]; MOBJ["subtitleBack"].y = newCoor["y"] - (height == "true" ? MOBJ["subtitleBack"].height : 0); } } //-------------------------------------------------------------------------------------------logo private function logoResize(): void { if (logo) { var coor: Object = coorDinate(STYLE["logo"]); logo.x = coor["x"]; logo.y = coor["y"]; } } private function loadLogo(): void { //加载loading元件 if (STYLE.hasOwnProperty("logo") && STYLE["logo"]["file"]!="" && STYLE["logo"]["file"]!="null") { loaderNum++; var newLoader: loadByteImg = new loadByteImg(STYLE["logo"]["file"], function (byte: Loader = null) { if (byte) { logo = byte; THIS.addChild(logo); imgLoaded(); logoResize(); } }); } } //-------------------------------------------------------------------------------------------logo 结束 //-------------------------------------------------------------------------------------------buffer private function bufferResize(): void { var coor: Object = {}; if (MOBJ.hasOwnProperty("buffer")) { coor = coorDinate(STYLE["buffer"]); MOBJ["buffer"].x = coor["x"]; MOBJ["buffer"].y = coor["y"]; } if (MOBJ.hasOwnProperty("bufferText")) { coor = coorDinate(STYLE["buffer"]["text"]); MOBJ["bufferText"].x = coor["x"]; MOBJ["bufferText"].y = coor["y"]; } } private function loadBuffer(): void { //加载loading元件 if (STYLE.hasOwnProperty("buffer")) { loaderNum++; var newLoader: loadByteImg = new loadByteImg(STYLE["buffer"]["file"], function (byte: Loader = null) { if (byte) { MOBJ["buffer"] = byte; THIS.addChild(MOBJ["buffer"]); MOBJ["buffer"].visible = false; imgLoaded(); bufferResize(); } }); if (STYLE["buffer"].hasOwnProperty("text")) { var obj: Object = STYLE["buffer"]["text"]; obj["text"] = script.replace(LANGUAGE["buffer"], ["[$percentage]"], [0]); var newText: TextField = element.newText(obj); THIS.addChild(newText); MOBJ["bufferText"] = newText; MOBJ["bufferText"].visible = false; } } } //-------------------------------------------------------------------------------------------buffer 结束 //-------------------------------------------------------------------------------------------loading private function loadingResize(): void { if (loading) { var coor: Object = coorDinate(STYLE["loading"]); loading.x = coor["x"]; loading.y = coor["y"]; } } private function loadLoading(): void { //加载loading元件 if (STYLE.hasOwnProperty("loading") && STYLE["loading"]["file"]!="" && STYLE["loading"]["file"]!="null") { loaderNum++; var newLoader: loadByteImg = new loadByteImg(STYLE["loading"]["file"], function (byte: Loader = null) { if (byte) { loading = byte; THIS.addChild(loading); imgLoaded(); loadingResize(); } }); } } //-------------------------------------------------------------------------------------------loading 结束 private function promptSpotResize(): void { //根据时间点计算坐标 if (promptSpotArr.length > 0) { var w = MOBJ["timeSlider"]["backgroundDefaultLoader"].width; trace("宽度:", w); //timeTotal for (var i: int = 0; i < promptSpotArr.length; i++) { var p: Object = promptSpotObjArr[i]; var x: int = (p["time"] * w / timeTotal) - promptSpotArr[i].width * 0.5; if (x < 0) { x = 0; } if (x > w - promptSpotArr[i].width) { x = w - promptSpotArr[i].width } var y: int = (MOBJ["timeSlider"]["backDefaultSprite"].height - promptSpotArr[i].height) * 0.5; promptSpotArr[i].x = x; promptSpotArr[i].y = y; } } } //-------------------------------------------------------------------------------------------提示点结束 //-------------------------------------------------------------------------------------------提示图片 private function previewShow(t: int = 0): void { if (!preview && !previewLoad) { if (!previewLoadIng) { previewLoadIng = true; loadPreview(t); } return; } if (preview != null) { var scale: int = FLASHVARS["preview"]["scale"]; var x: int = M.mouseX; var nowNum: int = t / scale; var numTotal: int = timeTotal / scale; var imgW: int = preview.width * 0.01 / FLASHVARS["preview"]["file"].length; var imgH: int = preview.height; var left: int = (imgW * nowNum) - x + imgW * 0.5, top: int = stageH - STYLE["preview"]["bottom"] - imgH; //top: int = M.y - imgH - (M.height - STYLE["controlBar"]["height"]); var topLeft: int = x - imgW * 0.5; var timepieces: int = 0; var isTween: Boolean = true; if (previewTop == null) { var obj: Object = { width: imgW - Number(STYLE["preview"]["border"]), height: imgH - Number(STYLE["preview"]["border"]), borderAlpha: Number(STYLE["preview"]["alpha"]), border: STYLE["preview"]["border"], borderColor: STYLE["preview"]["borderColor"] } previewTop = element.newSprite(obj); THIS.addChildAt(previewTop, THIS.getChildIndex(M)); previewTop.visible = false; } //topLeft-=STYLE["preview"]["border"]; //trace(THIS.getChildIndex(preview),THIS.getChildIndex(previewTop)); if (THIS.getChildIndex(preview) > THIS.getChildIndex(previewTop)) { var temp: int = THIS.getChildIndex(preview); //THIS.addChildAt(previewTop, THIS.getChildIndex(preview)); THIS.addChildAt(preview, THIS.getChildIndex(previewTop)); } if (topLeft < 0) { topLeft = 0; timepieces = x - topLeft - imgW * 0.5; } if (topLeft > stageW - imgW) { topLeft = stageW - imgW; timepieces = x - topLeft - imgW * 0.5; } if (left < 0) { left = 0; } if (left > numTotal * imgW - stageW) { left = numTotal * imgW - stageH; } if (preview.visible == false) { isTween = false; } previewTop.x = topLeft + STYLE["preview"]["border"] * 0.5; previewTop.y = top + STYLE["preview"]["border"] * 0.5; previewTop.visible = true; preview.visible = true; preview.y = top; if (previewPrompt) { previewPrompt.y = top - previewPrompt.height - Number(C.CONFIG["style"]["previewPrompt"]["marginBottom"]); THIS.addChildAt(previewPrompt, THIS.getChildIndex(preview) + 1); } if (pTween != null) { pTween.stop(); pTween = null; } if (isTween) { pTween = new Tween(preview, "x", None.easeOut, preview.x, -(left + timepieces), 0.3, true); } else { preview.x = -(left + timepieces); } } } private function previewHide(): void { if (previewTop) { previewTop.visible = false; } if (preview) { preview.visible = false; } } private function loadPreview(t: int = 0): void { if (timeTotal <= 0) { return; } if (FLASHVARS.hasOwnProperty("preview") && FLASHVARS["preview"] && !previewLoad) { if (FLASHVARS["preview"].hasOwnProperty("file") && FLASHVARS["preview"].hasOwnProperty("scale")) { previewElement = new newPreview(FLASHVARS["preview"]["file"], function (sp: Sprite = null) { if (sp) { if (preview) { THIS.removeChild(preview); preview = null; } //TRACE(preview.width) preview = sp; THIS.addChildAt(preview, THIS.getChildIndex(M)); preview.visible = false; if (t > 0 && prompt) { previewShow(t); } } previewElement = null; previewLoad = true; }); } } } //-------------------------------------------------------------------------------------------提示图片 //-------------------------------------------------------------------------------------------控制栏 private function controlBarResize(): void { var newSize: Object = {}, newCoor: Object = {}; var i: int = 0; var customArr: Array = []; var k: String = ""; if (M) { var coor: Object = coorDinate({ align: STYLE["controlBar"]["align"], vAlign: STYLE["controlBar"]["vAlign"], offsetX: STYLE["controlBar"]["offsetX"], offsetY: STYLE["controlBar"]["offsetY"] }); M.x = coor["x"]; M.y = coor["y"]; } if (MOBJ.hasOwnProperty("controlBarBgColor")) { newSize = calculatedSize(STYLE["controlBar"]["width"].toString(), STYLE["controlBar"]["height"].toString()); MOBJ["controlBarBgColor"].width = newSize["width"]; MOBJ["controlBarBgColor"].height = newSize["height"]; } if (MOBJ.hasOwnProperty("backgroundImg")) { newSize = calculatedSize(STYLE["controlBar"]["width"].toString(), STYLE["controlBar"]["height"].toString()); MOBJ["backgroundImg"].width = newSize["width"]; MOBJ["backgroundImg"].height = newSize["height"]; } //MOBJ["button"] if (MOBJ.hasOwnProperty("button")) { for (k in MOBJ["button"]) { newCoor = coorDinate(STYLE["controlBar"]["button"][k], MOBJ["controlBarBgColor"]); MOBJ["button"][k].x = newCoor["x"]; MOBJ["button"][k].y = newCoor["y"]; } } //定义自定义按钮的坐标 if (MOBJ.hasOwnProperty("customButton")) { for (k in MOBJ["customButton"]) { newCoor = coorDinate(STYLE["controlBar"]["custom"]["button"][k], MOBJ["controlBarBgColor"]); //script.traceObject(newCoor); MOBJ["customButton"][k].x = newCoor["x"]; MOBJ["customButton"][k].y = newCoor["y"]; } } //自定义图片的坐标 if (MOBJ.hasOwnProperty("customImages")) { for (k in MOBJ["customImages"]) { newCoor = coorDinate(STYLE["controlBar"]["custom"]["images"][k], MOBJ["controlBarBgColor"]); MOBJ["customImages"][k].x = newCoor["x"]; MOBJ["customImages"][k].y = newCoor["y"]; } } //自定义文本框的坐标 if (MOBJ.hasOwnProperty("customText")) { for (k in MOBJ["customText"]) { newCoor = coorDinate(STYLE["controlBar"]["custom"]["text"][k], MOBJ["controlBarBgColor"]); MOBJ["customText"][k].x = newCoor["x"]; MOBJ["customText"][k].y = newCoor["y"]; } } //自定swf的坐标 if (MOBJ.hasOwnProperty("customSwf")) { for (k in MOBJ["customSwf"]) { newCoor = coorDinate(STYLE["controlBar"]["custom"]["swf"][k], MOBJ["controlBarBgColor"]); MOBJ["customSwf"][k].x = newCoor["x"]; MOBJ["customSwf"][k].y = newCoor["y"]; } } } private function loadCustomResize(): void { //定义自定义按钮的坐标 var k: String = ""; var newCoor: Object = {}; if (MOBJ.hasOwnProperty("vcustomButton")) { for (k in MOBJ["vcustomButton"]) { newCoor = coorDinate(STYLE["custom"]["button"][k]); //script.traceObject(newCoor); MOBJ["vcustomButton"][k].x = newCoor["x"]; MOBJ["vcustomButton"][k].y = newCoor["y"]; } } //自定义图片的坐标 //trace("自定义图片",MOBJ.hasOwnProperty("vcustomImages")); if (MOBJ.hasOwnProperty("vcustomImages")) { for (k in MOBJ["vcustomImages"]) { newCoor = coorDinate(STYLE["custom"]["images"][k]); MOBJ["vcustomImages"][k].x = newCoor["x"]; MOBJ["vcustomImages"][k].y = newCoor["y"]; } } //自定义文本框的坐标 if (MOBJ.hasOwnProperty("vcustomText")) { for (k in MOBJ["vcustomText"]) { newCoor = coorDinate(STYLE["custom"]["text"][k]); MOBJ["vcustomText"][k].x = newCoor["x"]; MOBJ["vcustomText"][k].y = newCoor["y"]; } } //自定swf的坐标 for( k in MOBJ){ trace(k,MOBJ[k]); } if (MOBJ.hasOwnProperty("vcustomSwf")) { for (k in MOBJ["vcustomSwf"]) { newCoor = coorDinate(STYLE["custom"]["swf"][k]); MOBJ["vcustomSwf"][k].x = newCoor["x"]; MOBJ["vcustomSwf"][k].y = newCoor["y"]; } } } private function loadControlBar(): void { //建立一个基于界面底部的元件 var mObj: Object = { backgroundColor: 0xFF0000, backgroundAlpha: 0, //背景透明度 width: 1, height: 1 }; M = element.newSprite(mObj); THIS.addChild(M); if (CONFIG["config"]["buttonMode"]["controlBar"]) { M.buttonMode = true; } if (STYLE.hasOwnProperty("controlBar")) { if (STYLE["controlBar"].hasOwnProperty("hideControlBar")) { if (STYLE["controlBar"]["hideControlBar"].hasOwnProperty("hideDelayTime")) { if (STYLE["controlBar"]["hideControlBar"]["hideDelayTime"] > 0) { cbHideTimer = new timeInterval(STYLE["controlBar"]["hideControlBar"]["hideDelayTime"], cbHideTimerHandler); cbHideTimer.start(); cbShowTimer = new timeInterval(100, cbShowTimerHandler); } } } } //加载纯色层 //加载背景 var background: Object = STYLE["controlBar"]["background"]; var newSize: Object = calculatedSize(STYLE["controlBar"]["width"].toString(), STYLE["controlBar"]["height"].toString()); //无论有没有图片都加载一个纯色层 if (background.hasOwnProperty("backgroundColor") && background["backgroundColor"]) { mObj = { backgroundColor: background["backgroundColor"], backgroundAlpha: (background.hasOwnProperty("backgroundImg") && background["backgroundImg"]) ? 0 : background["alpha"], //背景透明度 width: newSize["width"], height: newSize["height"], radius: background["radius"] }; var backgroundColorSprite: Sprite = element.newSprite(mObj); M.addChild(backgroundColorSprite); MOBJ["controlBarBgColor"] = backgroundColorSprite; } if (background.hasOwnProperty("backgroundImg") && background["backgroundImg"]) { loaderNum++; var backgroundImgLoader: loadByteImg = new loadByteImg(background["backgroundImg"], function (byte: Loader = null) { if (byte) { var loader: Loader = byte; loader.alpha = background["alpha"]; M.addChild(loader); MOBJ["backgroundImg"] = loader; } else { new log("error:Failed to load STYLE[\"controlBar\"][\"background\"][\"backgroundImg\"]"); } imgLoaded(); controlBarResize(); controlLoaderHandler(); backgroundImgLoader = null; }); } else { controlBarResize(); controlLoaderHandler(); //loadLogo(); } } //统一的在控制栏加载完成后的动作 private function controlLoaderHandler(): void { loadControlBarButton(); loadDefinition(); loadSubtitles();//加载字幕切换按钮 loadVolumeSlider(); //构建音量调节滑动条 loadTimeSlider(); //构建时间进度滑动条 loadSimpleSchedule(); //简单进度条 loadTimeText(); loadLoading(); loadLogo(); loadBuffer(); loadCustom(); loadAdvertisement(); if (CONFIG["config"]["previewDefaultLoad"]) { loadPreview(); } } //加载音量调节和进度条 private function volumeSliderResize(): void { if (MOBJ.hasOwnProperty("volumeSlider")) { var newCoor: Object = coorDinate(STYLE["controlBar"]["volumeSchedule"], MOBJ["controlBarBgColor"]); MOBJ["volumeSlider"]["backSprite"].x = newCoor["x"]; MOBJ["volumeSlider"]["backSprite"].y = newCoor["y"]; } } //静音切换 private function muteOrEscMute(volume: Number = 0): void { if (volume == 0) { MOBJ["button"]["mute"].visible = false; MOBJ["button"]["escMute"].visible = true; } else { MOBJ["button"]["mute"].visible = true; MOBJ["button"]["escMute"].visible = false; } } private function mouseMoveHandler(event: MouseEvent): void { /*MOBJ["volume"] = { backSprite: backSprite, backgroundLoader:backgroundLoader, maskLoader: maskLoader, maskSprite: maskSprite, buttonLoader: buttonLoader };*/ var pointTemp: Point = new Point(event.localX, event.localY); var value: Number = 0; var stageX: int = 0; //trace(event); //trace(event.currentTarget.name); switch (event.currentTarget) { case MOBJ["timeSlider"]["backgroundDefaultLoader"]: case MOBJ["timeSlider"]["loadDefaultLoader"]: case MOBJ["timeSlider"]["playDefaultLoader"]: //trace(timeTotal,new Date); if (timeTotal == 0 || FLASHVARS["live"]) { break; } //trace(MOBJ["timeSlider"]["backDefaultSprite"].mouseX,MOBJ["timeSlider"]["backgroundDefaultLoader"].width); var mx: int = MOBJ["timeSlider"]["backDefaultSprite"].mouseX; var bw: int = MOBJ["timeSlider"]["backgroundDefaultLoader"].width; if (mx > bw - 2) { mx = bw; } value = int(mx * timeTotal / bw); if (value > timeTotal) { value = timeTotal; } if (value < 0) { value = 0; } //trace(MOBJ["timeSlider"]["backDefaultSprite"].mouseX,MOBJ["timeSlider"]["backgroundDefaultLoader"].width,value,"v"); //trace(event.stageX, event.stageY , pointTemp.y); stageX = STAGE.mouseX - M.x - MOBJ["timeSlider"]["backDefaultSprite"].x; //trace(value,LANGUAGE["timeSliderOver"]); showPrompt(getFormatTime(LANGUAGE["timeSliderOver"], value), stageX, event.stageY - pointTemp.y); previewShow(value); break; case MOBJ["timeSlider"]["buttonDefaultLoader"]: if (timeTotal == 0 || FLASHVARS["live"]) { break; } value = Number((MOBJ["timeSlider"]["buttonDefaultLoader"].x - MOBJ["timeSlider"]["backDefaultSprite"].x) * timeTotal / (MOBJ["timeSlider"]["backgroundDefaultLoader"].width - MOBJ["timeSlider"]["buttonDefaultLoader"].width)); //trace("value:",value); if (value > timeTotal) { value = timeTotal; } if (value < 0) { value = 0; } seekTime = value; //trace("要跳转的秒数,来之face",seekTime); showPrompt(getFormatTime(LANGUAGE["timeSliderOver"], value), event.stageX, event.stageY - pointTemp.y); break; case MOBJ["definitionDefault"]: if (STYLE["controlBar"]["definition"]["event"] != "over") { showPrompt(LANGUAGE["buttonOver"]["definition"], M.x + MOBJ["definitionDefault"].x + MOBJ["definitionDefault"].width * 0.5, event.stageY - pointTemp.y); } break; case MOBJ["subtitleDefault"]: if (STYLE["controlBar"]["subtitle"]["event"] != "over") { showPrompt(LANGUAGE["buttonOver"]["subtitles"], M.x + MOBJ["subtitleDefault"].x + MOBJ["subtitleDefault"].width * 0.5, event.stageY - pointTemp.y); } break; case MOBJ["volumeSlider"]["backgroundLoader"]: case MOBJ["volumeSlider"]["maskLoader"]: value = MOBJ["volumeSlider"]["backgroundLoader"].mouseX / MOBJ["volumeSlider"]["backSprite"].width; //changeVolume(vol * 0.01, true, true, false); if (value > 1) { value = 1; } if (value < 0) { value = 0; } showPrompt(script.strReplace(LANGUAGE["volumeSliderOver"], ["[$volume]"], [Math.ceil(value * 100).toString()]), event.stageX, event.stageY - pointTemp.y); break; case MOBJ["volumeSlider"]["buttonLoader"]: value = getVolumeTemp(); showPrompt(script.strReplace(LANGUAGE["volumeSliderOver"], ["[$volume]"], [Math.ceil(value * 100).toString()]), event.stageX, event.stageY - pointTemp.y); break; case STAGE: if (M && MOBJ.hasOwnProperty("timeSlider") && MOBJ.hasOwnProperty("timeOutSlider")) { if (STAGE.mouseX > M.x + mMinXY["x"] && STAGE.mouseX < M.x + mMinXY["x"] + M.width && STAGE.mouseY > M.y + mMinXY["y"] && STAGE.mouseY < M.y + mMinXY["y"] + M.height) { if (!timeSliderShow) { timeDefaultShow(); } } else { if (!timeOutSliderShow) { timeOutShow(); } } } break; default: if (event.target.name.toString().indexOf("spirte_") > -1) { var ni: int = Number(event.target.name.toString().replace("spirte_", "")); var timeString: String = ""; if (CONFIG["config"]["promptSpotTime"]) { timeString = getFormatTime(LANGUAGE["timeSliderOver"], promptSpotObjArr[ni]["time"]) + " "; } stageX = STAGE.mouseX - M.x - MOBJ["timeSlider"]["backDefaultSprite"].x; showPrompt(getFormatTime(LANGUAGE["timeSliderOver"], promptSpotObjArr[ni]["time"]), stageX, event.stageY - pointTemp.y); showPreviewPrompt(timeString + promptSpotObjArr[ni]["words"], stageX, event.stageY - pointTemp.y); previewShow(promptSpotObjArr[ni]["time"]); } break; } } private function timeDefaultShow(): void { if (showTween) { showTween.stop(); showTween = null; } if (hideTween) { hideTween.stop(); hideTween = null; } showTween = new Tween(MOBJ["timeSlider"]["backDefaultSprite"], "alpha", None.easeOut, MOBJ["timeSlider"]["backDefaultSprite"].alpha, 1, STYLE["controlBar"]["timeSchedule"]["defaultShowTime"], true); showTween.start(); hideTween = new Tween(MOBJ["timeOutSlider"]["backOutSprite"], "alpha", None.easeOut, MOBJ["timeOutSlider"]["backOutSprite"].alpha, 0, STYLE["controlBar"]["timeSchedule"]["mouseOutHideTime"], true); hideTween.start(); timeSliderShow = true; timeOutSliderShow = false; } private function timeOutShow(): void { if (showTween) { showTween.stop(); showTween = null; } if (hideTween) { hideTween.stop(); hideTween = null; } showTween = new Tween(MOBJ["timeSlider"]["backDefaultSprite"], "alpha", None.easeOut, MOBJ["timeSlider"]["backDefaultSprite"].alpha, 0, STYLE["controlBar"]["timeSchedule"]["defaultHideTime"], true); showTween.start(); hideTween = new Tween(MOBJ["timeOutSlider"]["backOutSprite"], "alpha", None.easeOut, MOBJ["timeOutSlider"]["backOutSprite"].alpha, 1, STYLE["controlBar"]["timeSchedule"]["mouseOutShowTime"], true); hideTween.start(); timeOutSliderShow = true; timeSliderShow = false; } private function cbHideTimerHandler(): void { var nowStageXY: Object = { x: STAGE.mouseX, y: STAGE.mouseY }; if (MOBJ["button"]["pause"].visible && (nowStageXY["x"] == oldStageXY["x"] || nowStageXY["y"] == oldStageXY["y"]) && (STAGE.mouseX < M.x + mMinXY["x"] || STAGE.mouseX > M.x + mMinXY["x"] + M.width || STAGE.mouseY < M.y + mMinXY["y"] || STAGE.mouseY > M.y + mMinXY["y"] + M.height)) { var hideEnvironment: String = STYLE["controlBar"]["hideControlBar"]["hideEnvironment"]; if (mShow && (hideEnvironment == "all" || (hideEnvironment == "full" && full) || (hideEnvironment == "nofull" && !full))) { mHideHandler(); if (cbShowTimer) { cbHideTimer.stop(); cbShowTimer.start(); } } } oldStageXY = nowStageXY; } private function cbShowTimerHandler(): void { var nowStageXY: Object = { x: STAGE.mouseX, y: STAGE.mouseY }; if (nowStageXY["x"] != oldStageXY["x"] || nowStageXY["y"] != oldStageXY["y"]) { oldStageXY = nowStageXY; if (!mShow) { mShowHandler(); if (cbHideTimer) { cbHideTimer.start(); cbShowTimer.stop(); } } } } private function mShowHandler(): void { if (force) { return; } if (cbTween) { cbTween.removeEventListener(TweenEvent.MOTION_FINISH, simpleScheduleHandler); cbTween = null; } mShow = true; var coor: Object = coorDinate({ align: STYLE["controlBar"]["align"], vAlign: STYLE["controlBar"]["vAlign"], offsetX: STYLE["controlBar"]["offsetX"], offsetY: STYLE["controlBar"]["offsetY"] }); if (MOBJ.hasOwnProperty("simpleSchedule")) { MOBJ["simpleSchedule"]["backDefaultSprite"].visible = false; } if(M.visible==false){ M.visible=true; } if (STYLE["controlBar"]["hideControlBar"]["hideMode"] == "alpha") { cbTween = new Tween(M, "alpha", None.easeOut, M.alpha, 1, STYLE["controlBar"]["hideControlBar"]["hideTweenTime"], true); } else { cbTween = new Tween(M, "y", None.easeOut, M.y, coor["y"], STYLE["controlBar"]["hideControlBar"]["hideTweenTime"], true); } THIS["controlBarIsShow"](); Mouse.show(); } private function mHideHandler(): void { trace("控制栏隐藏"); if (cbTween) { cbTween.removeEventListener(TweenEvent.MOTION_FINISH, simpleScheduleHandler); cbTween = null; } mShow = false; THIS["controlBarIsShow"](false); if (force) { M.visible=false; } else { if (STYLE["controlBar"]["hideControlBar"]["hideMode"] == "alpha") { cbTween = new Tween(M, "alpha", None.easeOut, M.alpha, 0, STYLE["controlBar"]["hideControlBar"]["hideTweenTime"], true); } else { cbTween = new Tween(M, "y", None.easeOut, M.y, stageH + M.height, STYLE["controlBar"]["hideControlBar"]["hideTweenTime"], true); } if (cbTween) { cbTween.addEventListener(TweenEvent.MOTION_FINISH, simpleScheduleHandler); } } if (!force) { Mouse.hide(); } } private function simpleScheduleHandler(event: TweenEvent) { if (MOBJ.hasOwnProperty("simpleSchedule")) { var showSimpleSchedule: String = STYLE["controlBar"]["hideControlBar"]["showSimpleSchedule"]; if (showSimpleSchedule == "all" || (showSimpleSchedule == "nofull" && !full) || (showSimpleSchedule == "full" && full)) { MOBJ["simpleSchedule"]["backDefaultSprite"].visible = true; } } } private function getVolumeTemp(): Number { var vol: Number = volumeTemp; if (vol > 1) { vol = 1; } if (vol < 0) { vol = 0; } return vol; } private function timeSliderResize() { //timeSliderResize /* MOBJ["timeSlider"] = { backDefaultSprite: backDefaultSprite, backgroundDefaultLoader: backgroundDefaultLoader, loadDefaultLoader: loadDefaultLoader, loadDefaultSprite: loadDefaultSprite, playDefaultLoader: playDefaultLoader, playDefaultSprite: playDefaultSprite, buttonDefaultLoader: buttonDefaultLoader }; */ var newCoor: Object = {}; var newSize: Object = {}; if (MOBJ.hasOwnProperty("timeSlider")) { newCoor = coorDinate(STYLE["controlBar"]["timeSchedule"]["default"], MOBJ["timeSlider"]["backDefaultSprite"]); script.traceObject(newCoor); newSize = calculatedSize(STYLE["controlBar"]["timeSchedule"]["default"]["width"].toString(), MOBJ["timeSlider"]["backDefaultSprite"].height.toString(), MOBJ["controlBarBgColor"]); MOBJ["timeSlider"]["backDefaultSprite"].x = newCoor["x"]; MOBJ["timeSlider"]["backDefaultSprite"].y = newCoor["y"]; MOBJ["timeSlider"]["backgroundDefaultLoader"].width = newSize["width"]; MOBJ["timeSlider"]["loadDefaultLoader"].width = newSize["width"]; MOBJ["timeSlider"]["playDefaultLoader"].width = newSize["width"]; trace(MOBJ["timeSlider"]["backDefaultSprite"].height); timePlaySliderChange(timeNow); timeLoadSliderChange(loadNow); } if (MOBJ.hasOwnProperty("timeOutSlider")) { //trace(MOBJ["timeOutSlider"]["backOutSprite"].width, "=="); newCoor = coorDinate(STYLE["controlBar"]["timeSchedule"]["mouseOut"], MOBJ["timeOutSlider"]["backOutSprite"]); newSize = calculatedSize(STYLE["controlBar"]["timeSchedule"]["mouseOut"]["width"].toString(), MOBJ["timeOutSlider"]["backOutSprite"].height.toString(), MOBJ["controlBarBgColor"]); MOBJ["timeOutSlider"]["backOutSprite"].x = newCoor["x"]; MOBJ["timeOutSlider"]["backOutSprite"].y = newCoor["y"]; MOBJ["timeOutSlider"]["backgroundOutLoader"].width = newSize["width"]; MOBJ["timeOutSlider"]["loadOutLoader"].width = newSize["width"]; MOBJ["timeOutSlider"]["playOutLoader"].width = newSize["width"]; timePlaySliderChange(timeNow); timeLoadSliderChange(loadNow); } } private function simpleScheduleResize() { //timeSliderResize /* MOBJ["timeSlider"] = { backDefaultSprite: backDefaultSprite, backgroundDefaultLoader: backgroundDefaultLoader, loadDefaultLoader: loadDefaultLoader, loadDefaultSprite: loadDefaultSprite, playDefaultLoader: playDefaultLoader, playDefaultSprite: playDefaultSprite, buttonDefaultLoader: buttonDefaultLoader }; */ var newCoor: Object = {}; var newSize: Object = {}; if (MOBJ.hasOwnProperty("simpleSchedule")) { newCoor = coorDinate(STYLE["controlBar"]["hideControlBar"]["simpleSchedule"]); newSize = calculatedSize(STYLE["controlBar"]["hideControlBar"]["simpleSchedule"]["width"].toString(), MOBJ["simpleSchedule"]["backDefaultSprite"].height.toString()); MOBJ["simpleSchedule"]["backDefaultSprite"].x = newCoor["x"]; MOBJ["simpleSchedule"]["backDefaultSprite"].y = newCoor["y"]; MOBJ["simpleSchedule"]["backgroundDefaultLoader"].width = newSize["width"]; MOBJ["simpleSchedule"]["loadDefaultLoader"].width = newSize["width"]; MOBJ["simpleSchedule"]["playDefaultLoader"].width = newSize["width"]; timePlaySimpleChange(timeNow); timeLoadSimpleChange(loadNow); } } private function mouseDownHandler(event: MouseEvent): void { STAGE.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); point = new Point(event.localX, event.localY); switch (event.currentTarget) { case MOBJ["timeSlider"]["buttonDefaultLoader"]: if (timeTotal == 0 || FLASHVARS["live"] || CONFIG["config"]["timeScheduleAdjust"] == 0) { break; } mouseDownName = "time"; timeFollow = false; buttonDown = true; trace("是否跟着走timeFollow02", timeFollow); mUpSeek = true; //trace("a"); MOBJ["timeSlider"]["buttonDefaultLoader"].addEventListener(Event.ENTER_FRAME, enterFrameHandler); break; case MOBJ["volumeSlider"]["buttonLoader"]: mouseDownName = "volume"; MOBJ["volumeSlider"]["buttonLoader"].addEventListener(Event.ENTER_FRAME, enterFrameHandler); break; default: break; } } private function enterFrameHandler(event: Event): void { if (point != null) { var newX: int = 0; switch (mouseDownName) { case "time": var btW: Number = MOBJ["timeSlider"]["buttonDefaultLoader"].width; var bkW: Number = MOBJ["timeSlider"]["backgroundDefaultLoader"].width; if (timeTotal == 0 || FLASHVARS["live"] || CONFIG["config"]["timeScheduleAdjust"] == 0) { return; } newX = MOBJ["timeSlider"]["backDefaultSprite"].mouseX - point.x; if (point.x > btW * 0.5) { newX += (point.x - btW * 0.5); } else { newX -= (btW * 0.5 - point.x); } if (newX < 0) { newX = 0; } //trace(newX); var seekTimeTemp = (newX - MOBJ["timeSlider"]["backDefaultSprite"].x) * timeTotal / (bkW - btW); //trace("seekTimeTemp",seekTimeTemp,MOBJ["timeSlider"]["backDefaultSprite"].x,MOBJ["timeSlider"]["backDefaultSprite"].width); var isSeek: Boolean = true; switch (CONFIG["config"]["timeScheduleAdjust"]) { case 0: isSeek = false; break; case 2: if (seekTimeTemp < timeNow) { isSeek = false; } break; case 3: if (seekTimeTemp > timeNow) { isSeek = false; } break; case 4: //trace(timeSeek); if (timeSeek > -1) { if (seekTimeTemp < timeSeek) { isSeek = false; } } else { if (seekTimeTemp < timeNow) { isSeek = false; } } break; case 5: if (seekTimeTemp > timeMax) { isSeek = false; } break; } //trace("-------------------",isSeek); if (!isSeek) { mUpSeek = false; break; } else { mUpSeek = true; } if (newX >= bkW - btW) { newX = bkW - btW; } MOBJ["timeSlider"]["buttonDefaultLoader"].x = newX; MOBJ["timeSlider"]["playDefaultSprite"].width = newX + btW * 0.5; //seekTime = (newX*timeTotal)/(bkW-btW); if (seekTime < 0) { seekTime = 0; } if (seekTime > timeTotal - 1) { seekTime = 0; } //trace("要跳转的时间",seekTime); break; case "volume": newX = MOBJ["volumeSlider"]["backSprite"].mouseX - point.x; if (point.x > MOBJ["volumeSlider"]["buttonLoader"].width * 0.5) { newX += (point.x - MOBJ["volumeSlider"]["buttonLoader"].width * 0.5); } else { newX -= (MOBJ["volumeSlider"]["buttonLoader"].width * 0.5 - point.x); } if (newX < 0) { newX = 0; } if (newX >= MOBJ["volumeSlider"]["backSprite"].width - MOBJ["volumeSlider"]["buttonLoader"].width) { newX = MOBJ["volumeSlider"]["backSprite"].width - MOBJ["volumeSlider"]["buttonLoader"].width; MOBJ["volumeSlider"]["maskSprite"].width = MOBJ["volumeSlider"]["backSprite"].width; } else { MOBJ["volumeSlider"]["maskSprite"].width = newX + MOBJ["volumeSlider"]["buttonLoader"].width * 0.5 } MOBJ["volumeSlider"]["buttonLoader"].x = newX; var vol: Number = Math.round(MOBJ["volumeSlider"]["buttonLoader"].x * 100 / (MOBJ["volumeSlider"]["backSprite"].width - MOBJ["volumeSlider"]["buttonLoader"].width)) * 0.01; if (vol > 1) { vol = 1; } if (vol < 0) { vol = 0; } volumeTemp = vol; THIS["changeVolume"](vol, false); //调用主程序里的调节音量并且不改变调用滑块 muteOrEscMute(vol); break; default: break; } } } private function mouseUpHandler(event: MouseEvent): void { point = null; switch (mouseDownName) { case "time": //trace(timeTotal); buttonDown = false; if (timeTotal == 0 || FLASHVARS["live"] || CONFIG["config"]["timeScheduleAdjust"] == 0) { return; } MOBJ["timeSlider"]["buttonDefaultLoader"].removeEventListener(Event.ENTER_FRAME, enterFrameHandler); //trace("+++++++++++++++++",mUpSeek); if (mUpSeek) { //trace("要跳转的秒数来之Up", seekTime); THIS["videoSeek"](seekTime, false); //调用主程序里的Seek并且不改变调用滑块 } else { timeFollow = true; } break; case "volume": MOBJ["volumeSlider"]["buttonLoader"].removeEventListener(Event.ENTER_FRAME, enterFrameHandler); break; default: break; } //showTips(null, ""); STAGE.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); } private function loadVolumeSlider(): void { //音量调节滑块 var volume: Object = STYLE["controlBar"]["volumeSchedule"]; var backgroundLoader: Loader = null, maskLoader: Loader = null, buttonLoader: Sprite = null, backSprite: Sprite = null, maskSprite: Sprite = null; function loadBackgroundImg(): void { loaderNum++; var backgroundImgLoader: loadByteImg = new loadByteImg(volume["backgroundImg"], function (byte: Loader = null) { if (byte) { backgroundLoader = byte; loadMaskImg(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"volume\"][\"background\"][\"backgroundImg\"]"); } imgLoaded(); backgroundImgLoader = null; }); } function loadMaskImg(): void { loaderNum++; var maskImgLoader: loadByteImg = new loadByteImg(volume["maskImg"], function (byte: Loader = null) { if (byte) { maskLoader = byte; loadButtonImg() } else { new log("error:Failed to load STYLE[\"controlBar\"][\"volume\"][\"maskImg\"][\"backgroundImg\"]"); } loadButtonImg(); imgLoaded(); maskImgLoader = null; }); } function loadButtonImg(): void { loaderNum++; buttonLoader = element.imgButton(volume["button"], "volumeSchedule", function () { loadButtonHandler(); imgLoaded(); }); } function loadButtonHandler(): void { var sObj: Object = { backgroundColor: 0xFF0000, //背景颜色 backgroundAlpha: 0, //背景透明度 width: backgroundLoader.width, height: backgroundLoader.height > buttonLoader.height ? backgroundLoader.height : buttonLoader.height }; backSprite = element.newSprite(sObj); if (CONFIG["config"]["buttonMode"]["volumeSchedule"]) { backSprite.buttonMode = true; } maskSprite = element.newSprite(sObj); backgroundLoader.y = (backSprite.height - backgroundLoader.height) * 0.5; backSprite.addChild(backgroundLoader); maskLoader.y = (backSprite.height - maskLoader.height) * 0.5; backSprite.addChild(maskLoader); backSprite.addChild(maskSprite); maskLoader.mask = maskSprite; buttonLoader.y = (backSprite.height - buttonLoader.height) * 0.5; backSprite.addChild(buttonLoader); M.addChild(backSprite); MOBJ["volumeSlider"] = { backSprite: backSprite, backgroundLoader: backgroundLoader, maskLoader: maskLoader, maskSprite: maskSprite, buttonLoader: buttonLoader }; volumeSliderResize(); volumeSliderChange(FLASHVARS["volume"]); buttonLoader.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); backgroundLoader.addEventListener(MouseEvent.CLICK, mouseClickHandler); maskLoader.addEventListener(MouseEvent.CLICK, mouseClickHandler); backgroundLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); maskLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); buttonLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); backSprite.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } if (volume.hasOwnProperty("backgroundImg") && volume["backgroundImg"]) { loadBackgroundImg(); } } //时间进度调节滑动条 private function loadTimeSlider(): void { var timeSchedule: Object = STYLE["controlBar"]["timeSchedule"]; var defaultSchedule: Object = {}, outSchedule: Object = {}; var backgroundDefaultLoader: Loader = null, loadDefaultLoader: Loader = null, playDefaultLoader: Loader = null, buttonDefaultLoader: Sprite = null, backDefaultSprite: Sprite = null, loadDefaultSprite: Sprite = null, playDefaultSprite: Sprite = null; var backgroundOutLoader: Loader = null, loadOutLoader: Loader = null, playOutLoader: Loader = null, buttonOutLoader: Sprite = null, backOutSprite: Sprite = null, loadOutSprite: Sprite = null, playOutSprite: Sprite = null; function loadDefaultBackgroundImg(): void { loaderNum++; var backgroundImgDefaultLoader: loadByteImg = new loadByteImg(defaultSchedule["backgroundImg"], function (byte: Loader = null) { if (byte) { backgroundDefaultLoader = byte; loadDefaultLoadImg(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"timeSchedule\"][\"default\"][\"background\"][\"backgroundImg\"]"); } imgLoaded(); backgroundImgDefaultLoader = null; }); } function loadDefaultLoadImg(): void { loaderNum++; var loadImgDefaultLoader: loadByteImg = new loadByteImg(defaultSchedule["loadProgressImg"], function (byte: Loader = null) { if (byte) { loadDefaultLoader = byte; loadDefaultPlayImg(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"timeSchedule\"][\"default\"][\"background\"][\"loadProgressImg\"]"); } imgLoaded(); loadImgDefaultLoader = null; }); } function loadDefaultPlayImg(): void { loaderNum++; var playImgDefaultLoader: loadByteImg = new loadByteImg(defaultSchedule["playProgressImg"], function (byte: Loader = null) { if (byte) { playDefaultLoader = byte; loadDefaultButtonImg(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"timeSchedule\"][\"default\"][\"background\"][\"playProgressImg\"]"); } imgLoaded(); playImgDefaultLoader = null; }); } function loadDefaultButtonImg(): void { loaderNum++; buttonDefaultLoader = element.imgButton(timeSchedule["button"], "timeSchedule", function () { if (timeSchedule.hasOwnProperty("mouseOut") && timeSchedule["mouseOut"]) { outSchedule = timeSchedule["mouseOut"]; loadOutBackgroundImg(); } else { loadButtonHandler(); } imgLoaded(); }); } //----------------------------加载鼠标离开进度条 function loadOutBackgroundImg(): void { loaderNum++; var backgroundImgOutLoader: loadByteImg = new loadByteImg(outSchedule["backgroundImg"], function (byte: Loader = null) { if (byte) { backgroundOutLoader = byte; loadOutLoadImg(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"timeSchedule\"][\"out\"][\"background\"][\"backgroundImg\"]"); } imgLoaded(); backgroundImgOutLoader = null; }); } function loadOutLoadImg(): void { loaderNum++; var loadImgOutLoader: loadByteImg = new loadByteImg(outSchedule["loadProgressImg"], function (byte: Loader = null) { if (byte) { loadOutLoader = byte; loadOutPlayImg(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"timeSchedule\"][\"out\"][\"background\"][\"loadProgressImg\"]"); } imgLoaded(); loadImgOutLoader = null; }); } function loadOutPlayImg(): void { loaderNum++; var playImgOutLoader: loadByteImg = new loadByteImg(outSchedule["playProgressImg"], function (byte: Loader = null) { if (byte) { playOutLoader = byte; } else { new log("error:Failed to load STYLE[\"controlBar\"][\"timeSchedule\"][\"out\"][\"background\"][\"playProgressImg\"]"); } loadButtonHandler(); imgLoaded(); playImgOutLoader = null; }); } //----------------------------加载鼠标离开进度条结束 function loadButtonHandler(): void { var sObj: Object = {}; //---------------------- if (timeSchedule.hasOwnProperty("mouseOut") && timeSchedule["mouseOut"]) { sObj = { backgroundColor: 0xFF0000, //背景颜色 backgroundAlpha: 0, //背景透明度 width: 11, height: backgroundOutLoader.height }; backOutSprite = element.newSprite(sObj); loadOutSprite = element.newSprite(sObj); playOutSprite = element.newSprite(sObj); backOutSprite.addChild(backgroundOutLoader); backgroundOutLoader.y = (backOutSprite.height - backgroundOutLoader.height) * 0.5; backOutSprite.addChild(loadOutLoader); loadOutLoader.y = (backOutSprite.height - loadOutLoader.height) * 0.5; backOutSprite.addChild(loadOutSprite); loadOutLoader.mask = loadOutSprite; backOutSprite.addChild(playOutLoader); playOutLoader.y = (backOutSprite.height - playOutLoader.height) * 0.5; backOutSprite.addChild(playOutSprite); playOutLoader.mask = playOutSprite; M.addChild(backOutSprite); MOBJ["timeOutSlider"] = { backOutSprite: backOutSprite, backgroundOutLoader: backgroundOutLoader, loadOutLoader: loadOutLoader, loadOutSprite: loadOutSprite, playOutLoader: playOutLoader, playOutSprite: playOutSprite }; MOBJ["timeOutSlider"]["backOutSprite"].alpha = 0; backgroundOutLoader.addEventListener(MouseEvent.CLICK, mouseClickHandler); loadOutLoader.addEventListener(MouseEvent.CLICK, mouseClickHandler); playOutLoader.addEventListener(MouseEvent.CLICK, mouseClickHandler); backgroundOutLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); loadOutLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); playOutLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); } //--------------------- sObj = { backgroundColor: 0xFF0000, //背景颜色 backgroundAlpha: 0, //背景透明度 width: 11, height: backgroundDefaultLoader.height > buttonDefaultLoader.height ? backgroundDefaultLoader.height : buttonDefaultLoader.height }; backDefaultSprite = element.newSprite(sObj); if (CONFIG["config"]["buttonMode"]["timeSchedule"]) { backDefaultSprite.buttonMode = true; } loadDefaultSprite = element.newSprite(sObj); playDefaultSprite = element.newSprite(sObj); backDefaultSprite.addChild(backgroundDefaultLoader); backgroundDefaultLoader.y = (backDefaultSprite.height - backgroundDefaultLoader.height) * 0.5; backDefaultSprite.addChild(loadDefaultLoader); loadDefaultLoader.y = (backDefaultSprite.height - loadDefaultLoader.height) * 0.5; backDefaultSprite.addChild(loadDefaultSprite); loadDefaultLoader.mask = loadDefaultSprite; backDefaultSprite.addChild(playDefaultLoader); playDefaultLoader.y = (backDefaultSprite.height - playDefaultLoader.height) * 0.5; backDefaultSprite.addChild(playDefaultSprite); playDefaultLoader.mask = playDefaultSprite; backDefaultSprite.addChild(buttonDefaultLoader); buttonDefaultLoader.y = (backDefaultSprite.height - buttonDefaultLoader.height) * 0.5; M.addChild(backDefaultSprite); MOBJ["timeSlider"] = { backDefaultSprite: backDefaultSprite, backgroundDefaultLoader: backgroundDefaultLoader, loadDefaultLoader: loadDefaultLoader, loadDefaultSprite: loadDefaultSprite, playDefaultLoader: playDefaultLoader, playDefaultSprite: playDefaultSprite, buttonDefaultLoader: buttonDefaultLoader }; //M.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); //M.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); buttonDefaultLoader.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); backgroundDefaultLoader.addEventListener(MouseEvent.CLICK, mouseClickHandler); loadDefaultLoader.addEventListener(MouseEvent.CLICK, mouseClickHandler); playDefaultLoader.addEventListener(MouseEvent.CLICK, mouseClickHandler); backgroundDefaultLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); loadDefaultLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); playDefaultLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); buttonDefaultLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); backDefaultSprite.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); STAGE.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); //注册鼠标经过屏幕时的动作 timeSliderResize(); } if (timeSchedule.hasOwnProperty("default") && timeSchedule["default"]) { defaultSchedule = timeSchedule["default"]; loadDefaultBackgroundImg(); } } //时间进度调节滑动条 private function loadSimpleSchedule(): void { var defaultSchedule: Object = {}; if (STYLE["controlBar"].hasOwnProperty("hideControlBar")) { if (STYLE["controlBar"]["hideControlBar"]["showSimpleSchedule"] != "none") { defaultSchedule = STYLE["controlBar"]["hideControlBar"]["simpleSchedule"]; } else { return; } } else { return; } var backgroundDefaultLoader: Loader = null, loadDefaultLoader: Loader = null, playDefaultLoader: Loader = null, buttonDefaultLoader: Sprite = null, backDefaultSprite: Sprite = null, loadDefaultSprite: Sprite = null, playDefaultSprite: Sprite = null; function loadDefaultBackgroundImg(): void { loaderNum++; var backgroundImgDefaultLoader: loadByteImg = new loadByteImg(defaultSchedule["backgroundImg"], function (byte: Loader = null) { if (byte) { backgroundDefaultLoader = byte; loadDefaultLoadImg(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"simpleSchedule\"][\"background\"][\"backgroundImg\"]"); } imgLoaded(); backgroundImgDefaultLoader = null; }); } function loadDefaultLoadImg(): void { loaderNum++; var loadImgDefaultLoader: loadByteImg = new loadByteImg(defaultSchedule["loadProgressImg"], function (byte: Loader = null) { if (byte) { loadDefaultLoader = byte; loadDefaultPlayImg(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"simpleSchedule\"][\"background\"][\"loadProgressImg\"]"); } imgLoaded(); loadImgDefaultLoader = null; }); } function loadDefaultPlayImg(): void { loaderNum++; var playImgDefaultLoader: loadByteImg = new loadByteImg(defaultSchedule["playProgressImg"], function (byte: Loader = null) { if (byte) { playDefaultLoader = byte; loadDefaultHandler(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"simpleSchedule\"][\"background\"][\"playProgressImg\"]"); } imgLoaded(); playImgDefaultLoader = null; }); } function loadDefaultHandler(): void { var sObj: Object = { backgroundColor: 0xFF0000, //背景颜色 backgroundAlpha: 0, //背景透明度 width: 11, height: backgroundDefaultLoader.height }; backDefaultSprite = element.newSprite(sObj); loadDefaultSprite = element.newSprite(sObj); playDefaultSprite = element.newSprite(sObj); backDefaultSprite.addChild(backgroundDefaultLoader); backgroundDefaultLoader.y = (backDefaultSprite.height - backgroundDefaultLoader.height) * 0.5; backDefaultSprite.addChild(loadDefaultLoader); loadDefaultLoader.y = (backDefaultSprite.height - loadDefaultLoader.height) * 0.5; backDefaultSprite.addChild(loadDefaultSprite); loadDefaultLoader.mask = loadDefaultSprite; backDefaultSprite.addChild(playDefaultLoader); playDefaultLoader.y = (backDefaultSprite.height - playDefaultLoader.height) * 0.5; backDefaultSprite.addChild(playDefaultSprite); playDefaultLoader.mask = playDefaultSprite; THIS.addChild(backDefaultSprite); backDefaultSprite.visible = false; MOBJ["simpleSchedule"] = { backDefaultSprite: backDefaultSprite, backgroundDefaultLoader: backgroundDefaultLoader, loadDefaultLoader: loadDefaultLoader, loadDefaultSprite: loadDefaultSprite, playDefaultLoader: playDefaultLoader, playDefaultSprite: playDefaultSprite }; //script.traceObject(MOBJ); simpleScheduleResize(); } loadDefaultBackgroundImg(); } //获取当前播放时间 private function getFormatTime(timeStr: String, nowTime: Number = -1): String { var nowDate: Date = new Date(); if (C.CONFIG["config"]["time"] > 0) { //trace(C.CONFIG["config"]["time"]); nowDate = new Date(C.CONFIG["config"]["time"]); } //trace(nowDate); var yearY: int = nowDate.fullYear; var month: int = nowDate.month + 1; var date: int = nowDate.date; var hours: int = nowDate.hours; var minutes: int = nowDate.minutes; var seconds: int = nowDate.seconds; var yeary: String = yearY.toString().substr(2, 2); var monthh: String = month < 10 ? "0" + month : month.toString(); var datee: String = date < 10 ? "0" + date : date.toString(); var hourss: String = hours < 10 ? "0" + hours : hours.toString(); var minutess: String = minutes < 10 ? "0" + minutes : minutes.toString(); var secondss: String = seconds < 10 ? "0" + seconds : seconds.toString(); /*liveTimey:yeary,//liveTimey liveTimeY:yearY, liveTimem:monthh, liveTimed:hourss, liveTimeh:hourss, liveTimei:minutess, liveTimes:secondss,*/ //trace(nowTime , timeNow); var timeArr: Array = script.formatTime(nowTime > -1 ? nowTime : timeNow, C.CONFIG["config"]["liveAndVod"]["open"] ? C.CONFIG["config"]["liveAndVod"]["vodTime"] : 0, C.CONFIG["config"]["liveAndVod"]["open"] ? hours : 0); //trace(timeArr); var totalArr: Array = script.formatTime(timeTotal); for (var i: int = 0; i < totalArr.length; i++) { timeArr.push(totalArr[i]); } timeArr.push(yeary, yearY, monthh, datee, hourss, minutess, secondss); timeArr.push(LANGUAGE["live"]); timeArr.push(LANGUAGE["vod"]); //timeArr.push(LANGUAGE["vod"]); //timeArr.push(LANGUAGE["liveAndVod"]); var timeStrArr: Array = ["[$timeh]", "[$timei]", "[$timeI]", "[$times]", "[$timeS]", "[$durationh]", "[$durationi]", "[$durationI]", "[$durations]", "[$durationS]", "[$liveTimey]", "[$liveTimeY]", "[$liveTimem]", "[$liveTimed]", "[$liveTimeh]", "[$liveTimei]", "[$liveTimes]", "[$liveLanguage]", "[$vodLanguage]" ]; //trace(timeStrArr); if (FLASHVARS["live"]) { return script.strReplace(script.strReplace(LANGUAGE["live"], timeStrArr, timeArr), timeStrArr, timeArr); } else if (C.CONFIG["config"]["liveAndVod"]["open"]) { return script.strReplace(script.strReplace(LANGUAGE["liveAndVod"], timeStrArr, timeArr), timeStrArr, timeArr); } else { return script.strReplace(script.strReplace(timeStr, timeStrArr, timeArr), timeStrArr, timeArr); } } //获取当前播放时间 private function getFormatLiveTime(): Object { var nowDate: Date = new Date(); if (C.CONFIG["config"]["time"] > 0) { nowDate = new Date(C.CONFIG["config"]["time"]); } var hours: int = nowDate.hours; var minutes: int = nowDate.minutes; var seconds: int = nowDate.seconds; return { hours: hours, minutes: minutes, seconds: seconds }; } //调整点播时间文本框 private function vodTimeTextResize(): void { if (MOBJ.hasOwnProperty("timeVodText") && MOBJ["timeVodText"] != null) { var timeTextArr: Array = MOBJ["timeVodText"]; var timeText: Object = STYLE["controlBar"]["timeText"]["vod"]; var vodArr: Array = []; if (script.getType(timeText) != "array") { vodArr.push(timeText); } else { vodArr = STYLE["controlBar"]["timeText"]["vod"]; } for (var i: int = 0; i < timeTextArr.length; i++) { var coor: Object = coorDinate(vodArr[i]); timeTextArr[i].x = coor["x"]; timeTextArr[i].y = coor["y"]; M.addChild(timeTextArr[i]); } } } //调整直播时间文本框 private function liveTimeTextResize(): void { if (MOBJ.hasOwnProperty("timeLiveText") && MOBJ["timeLiveText"] != null) { var timeTextArr: Array = MOBJ["timeLiveText"]; var timeText: Object = STYLE["controlBar"]["timeText"]["live"]; var liveArr: Array = []; if (script.getType(timeText) != "array") { liveArr.push(timeText); } else { liveArr = STYLE["controlBar"]["timeText"]["live"]; } for (var i: int = 0; i < timeTextArr.length; i++) { var coor: Object = coorDinate(liveArr[i]); timeTextArr[i].x = coor["x"]; timeTextArr[i].y = coor["y"]; M.addChild(timeTextArr[i]); } } } //加载点播时间文本框 private function loadVodTimeText(): void { if (!STYLE["controlBar"]["timeText"].hasOwnProperty("vod")) { return; } var vodArr: Array = []; var textArr: Array = []; var timeTextArr: Array = []; if (script.getType(STYLE["controlBar"]["timeText"]["vod"]) != "array") { vodArr.push(STYLE["controlBar"]["timeText"]["vod"]); } else { vodArr = STYLE["controlBar"]["timeText"]["vod"]; } for (var i: int = 0; i < vodArr.length; i++) { var obj: Object = { text: getFormatTime(vodArr[i]["text"]), color: vodArr[i]["color"], size: vodArr[i]["size"], font: vodArr[i]["font"], alpha: vodArr[i]["alpha"], bold: vodArr[i]["bold"] }; var newText: TextField = element.newText(obj); M.addChild(newText); timeTextArr.push(newText); } MOBJ["timeVodText"] = timeTextArr; vodTimeTextResize(); } //加载直播时间文本框 private function loadLiveTimeText(): void { if (!STYLE["controlBar"]["timeText"].hasOwnProperty("live")) { return; } var timeText: Object = STYLE["controlBar"]["timeText"]["live"]; var liveArr: Array = []; var textArr: Array = []; var timeTextArr: Array = []; if (script.getType(timeText) != "array") { liveArr.push(timeText); } else { liveArr = STYLE["controlBar"]["timeText"]["live"]; } for (var i: int = 0; i < liveArr.length; i++) { var obj: Object = { text: getFormatTime(liveArr[i]["text"]), color: liveArr[i]["color"], size: liveArr[i]["size"], font: liveArr[i]["font"], alpha: liveArr[i]["alpha"], bold: liveArr[i]["bold"] }; var newText: TextField = element.newText(obj); M.addChild(newText); timeTextArr.push(newText); } MOBJ["timeLiveText"] = timeTextArr; liveTimeTextResize(); } //调用错误提示文本框 private function errorShowResize(): void { if (errorText) { var coor: Object = coorDinate(STYLE["error"]); errorText.x = coor["x"]; errorText.y = coor["y"]; } } //加载全局自定义 private function loadCustom(): void { var buttonObj: Object = {}; var k: String = ""; var obj: Object = {}; var button: Sprite = null; if (STYLE.hasOwnProperty("custom")) { if (STYLE["custom"].hasOwnProperty("button")) { buttonObj = STYLE["custom"]["button"]; for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOver"]) { loaderNum++; button = element.imgButton(obj, k, imgLoaded); if (!MOBJ.hasOwnProperty("vcustomButton")) { MOBJ["vcustomButton"] = {}; } MOBJ["vcustomButton"][k] = button if (STYLE["custom"]["button"][k].hasOwnProperty("show") && STYLE["custom"]["button"][k]["show"] == "false") { button.visible = false; } THIS.addChild(button); button.addEventListener(MouseEvent.MOUSE_OVER, function (event: MouseEvent) { //trace("event.target.name:",event.target.name); showVButtonCustomPrompt(event.target.name); }); button.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); button.addEventListener(MouseEvent.CLICK, mouseClickHandler); } } } //加载自定义的文本 if (STYLE["custom"].hasOwnProperty("text")) { buttonObj = STYLE["custom"]["text"]; for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("text")) { var textTemp: String = getFormatText(obj["text"]); if (textTemp) { var newText: TextField = element.newText({ text: textTemp, color: obj["color"], size: obj["size"], font: obj["font"], alpha: obj["alpha"], bold: obj["bold"] }); THIS.addChild(newText); if (!MOBJ.hasOwnProperty("vcustomText")) { MOBJ["vcustomText"] = {}; } MOBJ["vcustomText"][k] = newText; if (STYLE["custom"]["text"][k].hasOwnProperty("show") && STYLE["custom"]["text"][k]["show"] == "false") { newText.visible = false; } loadCustomResize(); } } } } //加载自定义的图片 //trace("是否有自定义的图片",STYLE["custom"].hasOwnProperty("images")); if (STYLE["custom"].hasOwnProperty("images")) { buttonObj = STYLE["custom"]["images"]; //trace(buttonObj); script.traceObject(buttonObj); for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("img")) { loaderNum++; var imgLoader: loadByteImg = new loadByteImg(obj["img"], function (byte: Loader = null, myName: String = "") { //trace("===加载了吗"); if (byte) { if (!MOBJ.hasOwnProperty("vcustomImages")) { MOBJ["vcustomImages"] = {}; } MOBJ["vcustomImages"][byte.name] = byte; THIS.addChild(MOBJ["vcustomImages"][byte.name]); if (STYLE["custom"]["images"][byte.name].hasOwnProperty("show") && STYLE["custom"]["images"][byte.name]["show"] == "false") { MOBJ["vcustomImages"][byte.name].visible = false; } loadCustomResize(); } else { new log("error:Failed to load STYLE[\"custom\"][\"images\"][\"" + myName + "\"]"); } imgLoaded(); imgLoader = null; }, k); } } } //加载自定义的swf插件 if (STYLE["custom"].hasOwnProperty("swf")) { buttonObj = STYLE["custom"]["swf"]; for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("swf")) { loaderNum++; var swfLoader: loadByteImg = new loadByteImg(obj["swf"], function (byte: Loader = null, myName: String = "") { if (byte) { if (!MOBJ.hasOwnProperty("vcustomSwf")) { MOBJ["vcustomSwf"] = {}; } MOBJ["vcustomSwf"][byte.name] = byte; THIS.addChild(MOBJ["vcustomSwf"][byte.name]); if (STYLE["custom"]["swf"][byte.name].hasOwnProperty("show") && STYLE["custom"]["swf"][byte.name]["show"] == "false") { MOBJ["vcustomSwf"][byte.name].visible = false; } //传递播放器对象 var nObj: Object = STYLE["custom"]["swf"][byte.name]; if (nObj.hasOwnProperty("callActionScript") && nObj["callActionScript"]) { var swfObj: Object = byte.content; if (swfObj.hasOwnProperty("setAppObj")) { if (swfObj.setAppObj.length == 2) { swfObj.setAppObj(THIS, byte.name); } else { swfObj.setAppObj(THIS); } } else { if (swfObj.hasOwnProperty("main")) { if (swfObj.main.setAppObj.length == 2) { swfObj.main.setAppObj(THIS, byte.name); } else { swfObj.main.setAppObj(THIS); } } else { new log("error:Cannot call function STYLE[\"custom\"][\"swf\"][\"" + myName + "\"][\"callActionScript\"]/" + nObj["callActionScript"] + "()"); } } // } loadCustomResize(); imgLoaded(); //传递播放器对象结束 controlBarResize(); } else { new log("error:Failed to load STYLE[\"custom\"][\"swf\"][\"" + myName + "\"]"); } swfLoader = null; }, k); } } } } loadCustomResize(); } //加载前置后置广告 private function loadAdvertisement(): void { var adObj: Object = STYLE["advertisement"]; var button: Sprite = null; MOBJ["advertisement"] = {}; var obj: Object = {}; function loadAdBackground() { //加载纯色层 //加载背景 if (adObj.hasOwnProperty("background")) { var bgSprite: Sprite = null; var bg: Object = adObj["background"]; var elementObj: Object = { backgroundColor: bg["backgroundColor"], backgroundAlpha: bg["alpha"], width: stageW, height: stageH }; bgSprite = element.newSprite(elementObj); MOBJ["advertisement"]["background"] = bgSprite; } loadAdCountDown(); } function loadAdCountDown() { //广告倒计时背景 if (adObj.hasOwnProperty("countDown")) { var countDown: Object = adObj["countDown"]; if (countDown.hasOwnProperty("backgroundImg")) { loaderNum++; var backgroundImgLoader: loadByteImg = new loadByteImg(countDown["backgroundImg"], function (byte: Loader = null) { if (byte) { byte.alpha = countDown["alpha"]; byte.width = countDown["width"]; byte.height = countDown["height"]; THIS.addChild(byte); byte.visible = false; MOBJ["advertisement"]["countDown"] = byte; } else { new log("error:Failed to load STYLE[\"advertisement\"][\"countDown\"][\"backgroundImg\"]"); } imgLoaded(); skipAdButtonLoad(); advertisementResize(); backgroundImgLoader = null; }); } else { var mObj: Object = { backgroundColor: countDown["backgroundColor"], backgroundAlpha: (countDown.hasOwnProperty("backgroundImg") && countDown["backgroundImg"]) ? 0 : countDown["alpha"], //背景透明度 width: countDown["width"], height: countDown["height"], radius: countDown["radius"] }; var background: Sprite = element.newSprite(mObj); MOBJ["advertisement"]["countDown"] = background; advertisementResize(); skipAdButtonLoad(); } } else { skipAdButtonLoad(); } advertisementResize(); } function skipAdButtonLoad() { if (adObj.hasOwnProperty("skipAdButton")) { obj = adObj["skipAdButton"]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOver"]) { loaderNum++; button = element.imgButton(obj, "skipAdButton", imgLoaded); MOBJ["advertisement"]["skipAdButton"] = button button.addEventListener(MouseEvent.CLICK, mouseClickHandler); advertisementResize(); } } loadAdSkipDelay(); } function loadAdSkipDelay() { //延时显示跳过广告按钮倒计时背景 if (adObj.hasOwnProperty("skipDelay")) { var skipDelay: Object = adObj["skipDelay"]; if (skipDelay.hasOwnProperty("backgroundImg")) { loaderNum++; var backgroundImgLoader: loadByteImg = new loadByteImg(skipDelay["backgroundImg"], function (byte: Loader = null) { if (byte) { byte.alpha = skipDelay["alpha"]; byte.width = skipDelay["width"]; byte.height = skipDelay["height"]; MOBJ["advertisement"]["skipDelay"] = byte; } else { new log("error:Failed to load STYLE[\"advertisement\"][\"skipDelay\"][\"backgroundImg\"]"); } imgLoaded(); nuteButtonLoad(); advertisementResize(); backgroundImgLoader = null; }); } else { var mObj: Object = { backgroundColor: skipDelay["backgroundColor"], backgroundAlpha: (skipDelay.hasOwnProperty("backgroundImg") && skipDelay["backgroundImg"]) ? 0 : skipDelay["alpha"], //背景透明度 width: skipDelay["width"], height: skipDelay["height"], radius: skipDelay["radius"] }; var background: Sprite = element.newSprite(mObj); MOBJ["advertisement"]["skipDelay"] = background; advertisementResize(); nuteButtonLoad(); } } else { nuteButtonLoad(); } advertisementResize(); } function nuteButtonLoad() { if (adObj.hasOwnProperty("muteButton") && adObj.hasOwnProperty("escMuteButton")) { obj = adObj["muteButton"]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOver"]) { loaderNum++; button = element.imgButton(obj, "muteButton", imgLoaded); MOBJ["advertisement"]["muteButton"] = button button.addEventListener(MouseEvent.CLICK, mouseClickHandler); advertisementResize(); } obj = adObj["escMuteButton"]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOver"]) { loaderNum++; button = element.imgButton(obj, "escMuteButton", imgLoaded); MOBJ["advertisement"]["escMuteButton"] = button; button.addEventListener(MouseEvent.CLICK, mouseClickHandler); advertisementResize(); } } closeButtonLoad(); } function closeButtonLoad() { if (adObj.hasOwnProperty("closeButton")) { obj = adObj["closeButton"]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOver"]) { loaderNum++; button = element.imgButton(obj, "closeButton", imgLoaded); MOBJ["advertisement"]["closeButton"] = button; button.addEventListener(MouseEvent.CLICK, mouseClickHandler); advertisementResize(); } } adLinkButtonLoad(); } function adLinkButtonLoad() { if (adObj.hasOwnProperty("adLinkButton")) { obj = adObj["adLinkButton"]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOver"]) { loaderNum++; button = element.imgButton(obj, "adLinkButton", imgLoaded); MOBJ["advertisement"]["adLinkButton"] = button; button.visible = false; THIS.addChild(button); button.addEventListener(MouseEvent.CLICK, mouseClickHandler); } advertisementResize(); } else { advertisementResize(); } } loadAdBackground(); } //广告相关的变化 private function advertisementResize(): void { if (MOBJ.hasOwnProperty("advertisement")) { var adObj: Object = STYLE["advertisement"]; var advertisement: Object = MOBJ["advertisement"]; var newCoor: Object = {}; if (advertisement.hasOwnProperty("background")) { advertisement["background"].width = stageW; advertisement["background"].height = stageH; } for (var k: String in advertisement) { if (k != "background") { if (k != "closeButton") { newCoor = coorDinate(adObj[k]); } else { newCoor = coorDinate(adObj[k], pause); newCoor["x"] += pause.x; newCoor["y"] += pause.y; if (newCoor["x"] < 0) { newCoor["x"] = 0; } if (newCoor["x"] > stageW - MOBJ["advertisement"]["closeButton"].width) { newCoor["x"] = stageW - MOBJ["advertisement"]["closeButton"].width; } if (newCoor["y"] < 0) { newCoor["y"] = 0; } if (newCoor["y"] > stageH - MOBJ["advertisement"]["closeButton"].height) { newCoor["y"] = stageH - MOBJ["advertisement"]["closeButton"].height; } } MOBJ["advertisement"][k].x = newCoor["x"]; MOBJ["advertisement"][k].y = newCoor["y"]; } } } } //加载中间播放按钮 private function centerPlayResize(): void { if (MOBJ.hasOwnProperty("centerPlay")) { var newCoor: Object = coorDinate(STYLE["centerPlay"]); MOBJ["centerPlay"].x = newCoor["x"]; MOBJ["centerPlay"].y = newCoor["y"]; } } //加载控制栏按钮 private function loadControlBarButton(): void { var obj: Object = {}; var buttonObj: Object = STYLE["controlBar"]["button"]; var button: Sprite = null; var k: String = ""; for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOver"]) { loaderNum++; button = element.imgButton(obj, k, imgLoaded); if (!MOBJ.hasOwnProperty("button")) { MOBJ["button"] = {}; } MOBJ["button"][k] = button M.addChild(button); button.addEventListener(MouseEvent.MOUSE_OVER, function (event: MouseEvent) { showButtonPrompt(event.target.name); }); button.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); button.addEventListener(MouseEvent.CLICK, mouseClickHandler); } } if (FLASHVARS["autoplay"]) { MOBJ["button"]["play"].visible = false; MOBJ["button"]["pause"].visible = true; } else { MOBJ["button"]["play"].visible = true; MOBJ["button"]["pause"].visible = false; } if (FLASHVARS["volume"] > 0) { MOBJ["button"]["mute"].visible = true; MOBJ["button"]["escMute"].visible = false; } else { MOBJ["button"]["mute"].visible = false; MOBJ["button"]["escMute"].visible = true; } MOBJ["button"]["escFull"].visible = false; MOBJ["button"]["backLive"].visible = false; //加载中间播放按钮 if (STYLE.hasOwnProperty("centerPlay")) { obj = STYLE["centerPlay"]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOver"]) { loaderNum++; button = element.imgButton(obj, "centerPlay", imgLoaded); MOBJ["centerPlay"] = button THIS.addChild(button); button.addEventListener(MouseEvent.CLICK, mouseClickHandler); centerPlayResize(); showCenterPlay(false); } } //加载自定义的按钮 if (STYLE["controlBar"].hasOwnProperty("custom")) { if (STYLE["controlBar"]["custom"].hasOwnProperty("button")) { buttonObj = STYLE["controlBar"]["custom"]["button"]; for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("mouseOut") && obj["mouseOut"]!="") { loaderNum++; button = element.imgButton(obj, k, imgLoaded); if (!MOBJ.hasOwnProperty("customButton")) { MOBJ["customButton"] = {}; } MOBJ["customButton"][k] = button; if (STYLE["controlBar"]["custom"]["button"][k].hasOwnProperty("show") && STYLE["controlBar"]["custom"]["button"][k]["show"] == "false") { button.visible = false; } M.addChild(button); button.addEventListener(MouseEvent.MOUSE_OVER, function (event: MouseEvent) { showButtonCustomPrompt(event.target.name); }); button.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); button.addEventListener(MouseEvent.CLICK, mouseClickHandler); } } } //加载自定义的文本 if (STYLE["controlBar"]["custom"].hasOwnProperty("text")) { buttonObj = STYLE["controlBar"]["custom"]["text"]; for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("text")) { var textTemp: String = getFormatText(obj["text"]); if (textTemp) { var newText: TextField = element.newText({ text: textTemp, color: obj["color"], size: obj["size"], font: obj["font"], alpha: obj["alpha"], bold: obj["bold"] }); M.addChild(newText); if (!MOBJ.hasOwnProperty("customText")) { MOBJ["customText"] = {}; } if (STYLE["controlBar"]["custom"]["text"][k].hasOwnProperty("show") && STYLE["controlBar"]["custom"]["text"][k]["show"] == "false") { newText.visible = false; } MOBJ["customText"][k] = newText } } } } //加载自定义的图片 if (STYLE["controlBar"]["custom"].hasOwnProperty("images")) { buttonObj = STYLE["controlBar"]["custom"]["images"]; for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("img")) { loaderNum++; var imgLoader: loadByteImg = new loadByteImg(obj["img"], function (byte: Loader = null, myName: String = "") { if (byte) { if (!MOBJ.hasOwnProperty("customImages")) { MOBJ["customImages"] = {}; } MOBJ["customImages"][byte.name] = byte; if (STYLE["controlBar"]["custom"]["images"][byte.name].hasOwnProperty("show") && STYLE["controlBar"]["custom"]["images"][byte.name]["show"] == "false") { MOBJ["customImages"][byte.name].visible = false; } M.addChild(MOBJ["customImages"][byte.name]); controlBarResize(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"custom\"][\"images\"][\"" + myName + "\"]"); } imgLoaded(); imgLoader = null; }, k); } } } //加载自定义的swf插件 if (STYLE["controlBar"]["custom"].hasOwnProperty("swf")) { buttonObj = STYLE["controlBar"]["custom"]["swf"]; for (k in buttonObj) { obj = buttonObj[k]; if (obj.hasOwnProperty("swf")) { loaderNum++; var swfLoader: loadByteImg = new loadByteImg(obj["swf"], function (byte: Loader = null, myName: String = "") { if (byte) { if (!MOBJ.hasOwnProperty("customSwf")) { MOBJ["customSwf"] = {}; } MOBJ["customSwf"][byte.name] = byte; if (STYLE["controlBar"]["custom"]["swf"][byte.name].hasOwnProperty("show") && STYLE["controlBar"]["custom"]["swf"][byte.name]["show"] == "false") { MOBJ["customSwf"][byte.name].visible = false; } M.addChild(MOBJ["customSwf"][byte.name]); //传递播放器对象 var nObj: Object = STYLE["controlBar"]["custom"]["swf"][byte.name]; if (nObj.hasOwnProperty("callActionScript") && nObj["callActionScript"]) { var swfObj: Object = byte.content; if (swfObj.hasOwnProperty("setAppObj")) { if (swfObj.setAppObj.length == 2) { swfObj.setAppObj(THIS, byte.name); } else { swfObj.setAppObj(THIS); } } else { if (swfObj.hasOwnProperty("main")) { if (swfObj.main.setAppObj.length == 2) { swfObj.main.setAppObj(THIS, byte.name); } else { swfObj.main.setAppObj(THIS); } } else { new log("error:Cannot call function STYLE[\"controlBar\"][\"custom\"][\"swf\"][\"" + myName + "\"][\"callActionScript\"]/" + nObj["callActionScript"] + "()"); } } // } imgLoaded(); //传递播放器对象结束 controlBarResize(); } else { new log("error:Failed to load STYLE[\"controlBar\"][\"custom\"][\"swf\"][\"" + myName + "\"]"); } swfLoader = null; }, k); } } } } controlBarResize(); } //格式化文本框里的内容 private function getFormatText(str: String = ""): String { var newStr: String = ""; if (str.substr(0, 11) == "[flashvars]") { newStr = script.strReplace(str, ["[flashvars]"], [""]); if (FLASHVARS.hasOwnProperty(newStr)) { newStr = FLASHVARS[newStr]; } else { newStr = ""; } } else { newStr = str; } return newStr; } private function imgLoaded(): void { imgButtonI++; if (imgButtonI > loaderNum - 1 && loaderNum > 1) { imgButtonI = -1000; mMinXY = getMMinXY(); var index: int = 0; if (background["background"]) { index = 1; } intoFun(index); } } //-------------------------------------------------------------------------------------------提示框结束 private function showButtonPrompt(k: String = ""): void { if (k && LANGUAGE["buttonOver"].hasOwnProperty(k)) { if (MOBJ["button"].hasOwnProperty(k)) { var x: int = MOBJ["button"][k].x + M.x + MOBJ["button"][k].width * 0.5; var y: int = MOBJ["button"][k].y + M.y; showPrompt(LANGUAGE["buttonOver"][k], x, y) } } } private function showButtonCustomPrompt(k: String = ""): void { if (k && LANGUAGE["buttonOver"].hasOwnProperty(k)) { //script.traceObject(MOBJ["customButton"]); if (MOBJ["customButton"].hasOwnProperty(k)) { var x: int = MOBJ["customButton"][k].x + M.x + MOBJ["customButton"][k].width * 0.5; var y: int = MOBJ["customButton"][k].y + M.y; showPrompt(LANGUAGE["buttonOver"][k], x, y) } } } private function showVButtonCustomPrompt(k: String = ""): void { if (k && LANGUAGE["buttonOver"].hasOwnProperty(k)) { //script.traceObject(MOBJ); if(MOBJ.hasOwnProperty("vcustomButton")){ //trace("==========",MOBJ["vcustomButton"][k].x); if (MOBJ["vcustomButton"].hasOwnProperty(k)) { //trace("==========d",MOBJ["vcustomButton"][k].x); try{ var x: int = MOBJ["vcustomButton"][k].x + MOBJ["vcustomButton"][k].width * 0.5; var y: int = MOBJ["vcustomButton"][k].y; showPrompt(LANGUAGE["buttonOver"][k], x, y); } catch(event:ErrorEvent){} } } } } private function showPrompt(str: String = "", x: int = 0, y: int = 0): void { if (prompt != null) { THIS.removeChild(prompt); prompt = null; } if (!str || !mShow) { return; } var promptObj: Object = STYLE["prompt"]; var textObj: Object = { text: str, color: promptObj["color"], size: promptObj["size"], font: promptObj["font"], bold: promptObj["bold"], alpha: promptObj["alpha"] }; var text: TextField = element.newText(textObj); var bgObj: Object = { backgroundColor: promptObj["backgroundColor"], //背景颜色 backgroundAlpha: promptObj["backgroundAlpha"], //背景透明度 border: promptObj["border"], borderColor: promptObj["borderColor"], //边框颜色 radius: promptObj["radius"], //圆角弧度 width: text.width + Number(promptObj["paddingLeft"]) + Number(promptObj["paddingRight"]), height: text.height + Number(promptObj["paddingTop"]) + Number(promptObj["paddingBottom"]) } prompt = element.newSprite(bgObj); prompt.addChild(text); text.x = Number(promptObj["paddingLeft"]); text.y = Number(promptObj["paddingTop"]); //画倒三角 var triangleObj: Object = { width: promptObj["triangleWidth"], height: promptObj["triangleHeight"], backgroundColor: promptObj["triangleBackgroundColor"], border: promptObj["triangleBorder"], borderColor: promptObj["triangleBorderColor"], alpha: promptObj["triangleAlpha"] }; var triangle: Sprite = element.newTriangle(triangleObj); triangle.y = prompt.height + Number(promptObj["triangleDeviationY"]); triangle.x = (prompt.width - triangle.width) * 0.5 + Number(promptObj["triangleDeviationX"]); prompt.addChild(triangle); //倒三角结束 prompt.x = x - prompt.width * 0.5; prompt.y = y - prompt.height - Number(promptObj["marginBottom"]); if (prompt.x < 0) { prompt.x = 0; } if (prompt.x > stageW - prompt.width) { prompt.x = stageW - prompt.width; } if (prompt.y < 0) { prompt.y = 0; } if (prompt.y > stageH - prompt.height) { prompt.y = stageH - prompt.height; } THIS.addChild(prompt); } //-------------------------------------------------------------------------------------------提示框结束 //===========================================================================================预览图提示文字 private function showPreviewPrompt(str: String = "", x: int = 0, y: int = 0): void { if (previewPrompt != null) { THIS.removeChild(previewPrompt); previewPrompt = null; } if (!str) { return; } var promptObj: Object = STYLE["previewPrompt"]; var textObj: Object = { text: str, color: promptObj["color"], size: promptObj["size"], font: promptObj["font"], bold: promptObj["bold"], alpha: promptObj["alpha"] //height:160 }; if (Number(promptObj["textWidth"]) > 0) { textObj["width"] = Number(promptObj["textWidth"]); } if (Number(promptObj["textHeight"]) > 0) { textObj["height"] = Number(promptObj["textHeight"]); } var text: TextField = element.newText(textObj); var bgObj: Object = { backgroundColor: promptObj["backgroundColor"], //背景颜色 backgroundAlpha: promptObj["backgroundAlpha"], //背景透明度 border: promptObj["border"], borderColor: promptObj["borderColor"], //边框颜色 radius: promptObj["radius"], //圆角弧度 width: text.width + Number(promptObj["paddingLeft"]) + Number(promptObj["paddingRight"]), height: text.height + Number(promptObj["paddingTop"]) + Number(promptObj["paddingBottom"]) } previewPrompt = element.newSprite(bgObj); previewPrompt.addChild(text); text.x = Number(promptObj["paddingLeft"]); text.y = Number(promptObj["paddingTop"]); var py: int = y - previewPrompt.height - Number(promptObj["marginBottom"]); if (preview) { py -= preview.height; } else { if (prompt) { py -= prompt.height + 10; } } previewPrompt.x = x - previewPrompt.width * 0.5; previewPrompt.y = py; if (previewPrompt.x < 0) { previewPrompt.x = 0; } if (previewPrompt.x > stageW - previewPrompt.width) { previewPrompt.x = stageW - previewPrompt.width; } if (previewPrompt.y < 0) { previewPrompt.y = 0; } if (previewPrompt.y > stageH - previewPrompt.height) { previewPrompt.y = stageH - previewPrompt.height; } //THIS.addChild(previewPrompt); if (preview) { THIS.addChildAt(previewPrompt, THIS.getChildIndex(preview) + 1); } else { THIS.addChild(previewPrompt); } } //-------------------------------------------------------------------------------------------控制栏结束 //-------------------------------------------------------------------------------------------播放器背景 private function backgroundResize(): void { //trace("import flash.display.StageDisplayState;",stageH); if (background["background"]) { var bg: Object = STYLE["background"]; var obj: Object = { stageW: stageW, stageH: stageH, eleW: background["width"], eleH: background["height"], stretched: bg["stretched"], align: bg["align"], vAlign: bg["vAlign"], spacingLeft: bg["spacingLeft"], spacingTop: bg["spacingTop"], spacingRight: bg["spacingRight"], spacingBottom: bg["spacingBottom"] }; var coor: Object = script.getCoor(obj); background["background"].x = coor["x"]; background["background"].y = coor["y"]; background["background"].width = coor["width"]; background["background"].height = coor["height"]; } if (clickSprite) { clickSprite.width = stageW; clickSprite.height = stageH; } } private function loadBackGround(): void { //加载窗体背景 if (STYLE.hasOwnProperty("background")) { var bg: Object = STYLE["background"]; var bgSprite: Sprite = null; var elementObj: Object = {}; if (bg.hasOwnProperty("backgroundColor")) { elementObj = { backgroundColor: bg["backgroundColor"], backgroundAlpha: bg["alpha"], width: stageW, height: stageH }; bgSprite = element.newSprite(elementObj); THIS.addChild(bgSprite); background = { background: bgSprite, width: bgSprite.width, height: bgSprite.height }; } elementObj = { backgroundColor: 0xFFFFFF, backgroundAlpha: 0, width: stageW, height: stageH }; clickSprite = element.newSprite(elementObj); clickSprite.addEventListener(MouseEvent.CLICK, mouseClickHandler); if (bg.hasOwnProperty("backgroundImg") && bg["backgroundImg"]) { if (bgSprite) { THIS.removeChild(bgSprite); } var bgLoader: Loader = null; loaderNum++; var newLoader: loadByteImg = new loadByteImg(bg["backgroundImg"], function (byte: Loader = null) { if (byte) { bgLoader = byte; bgLoader.alpha = bg["alpha"]; THIS.addChild(bgLoader); background = { background: bgLoader, width: bgLoader.width, height: bgLoader.height }; } else { new log("error:Failed to load STYLE[\"background\"][\"backgroundImg\"]"); } THIS.addChild(clickSprite); backgroundResize(); loadControlBar(); //加载控制栏 imgLoaded(); newLoader = null; }); } else { THIS.addChild(clickSprite); backgroundResize(); loadControlBar(); //加载控制栏 } //clickSprite } pause = element.newSprite({ backgroundColor: 0xFFFFFF, backgroundAlpha: 0, width: stageW, height: stageH }); } //--------------------------------------------------------------------------------------------共用的调用事件 private function callEvent(buttonStyle: String = "", callName: String = ""): void { var obj: Object = {}; //trace(buttonStyle, callName); switch (buttonStyle) { case "button": if (mShow) { obj = STYLE["controlBar"]["button"][callName]; } break; case "customButton": if (mShow) { obj = STYLE["controlBar"]["custom"]["button"][callName]; } break; case "vcustomButton": obj = STYLE["custom"]["button"][callName]; break; case "centerPlay": obj = STYLE["centerPlay"]; break; case "advertisement": obj = STYLE["advertisement"][callName]; break; } if (!obj) { return; } //script.traceObject(obj); if (obj.hasOwnProperty("clickEvent") && obj["clickEvent"]) { THIS["clickEvent"](obj["clickEvent"]); } } //--------------------------------------------------------------------------------------------鼠标单击事件 private function mouseClickHandler(event: MouseEvent): void { //trace(event.currentTarget.name); /*MOBJ["volume"] = { backSprite: backSprite, maskSprite: maskSprite, buttonLoader: buttonLoader };*/ if (MOBJ.hasOwnProperty("button")) { if (MOBJ["button"].hasOwnProperty(event.target.name)) { //trace("button",event.target.name); callEvent("button", event.target.name); return; } } if (MOBJ.hasOwnProperty("vcustomButton")) { if (MOBJ["vcustomButton"].hasOwnProperty(event.target.name)) { callEvent("vcustomButton", event.target.name); return; } } if (MOBJ.hasOwnProperty("customButton")) { if (MOBJ["customButton"].hasOwnProperty(event.target.name)) { callEvent("customButton", event.target.name); return; } } if (MOBJ.hasOwnProperty("advertisement")) { if (MOBJ["advertisement"].hasOwnProperty(event.target.name)) { callEvent("advertisement", event.target.name); return; } } if (MOBJ.hasOwnProperty("centerPlay")) { if (event.target.name == "centerPlay") { callEvent("centerPlay", event.target.name); return; } } switch (event.currentTarget) { case clickSprite: //THIS["videoPlay"](); //callEvent("videoClick", {x:event.stageX,y:event.stageY}); videoSpriteXY={x:event.stageX,y:event.stageY} clickMoveClickHanler(); break; case MOBJ["timeSlider"]["backgroundDefaultLoader"]: case MOBJ["timeSlider"]["loadDefaultLoader"]: case MOBJ["timeSlider"]["playDefaultLoader"]: if (timeTotal == 0 || FLASHVARS["live"]) { break; } //trace(MOBJ["timeSlider"]["backDefaultSprite"].mouseX,MOBJ["timeSlider"]["backgroundDefaultLoader"].width); var mx: int = MOBJ["timeSlider"]["backDefaultSprite"].mouseX; var bw: int = MOBJ["timeSlider"]["backgroundDefaultLoader"].width; if (mx > bw - 2) { mx = bw; } var value: int = int(mx * timeTotal / bw); if (value > timeTotal) { value = timeTotal; } if (value < 0) { value = 0; } if (!isFast(value)) { break; } //根据配置进行判断 //trace("+++++", value, timeNow); timeFollow = true; timePlaySliderChange(value); timeFollow = false; //trace("是否跟着走timeFollow03",timeFollow); THIS["videoSeek"](value, false); //调用主程序里的调节时间并且改变调用滑块 //trace(MOBJ["timeSlider"]["backDefaultSprite"].mouseX,MOBJ["timeSlider"]["backgroundDefaultLoader"].width,value,"v"); //showPrompt(getFormatTime(LANGUAGE["timeSliderOver"], value), event.stageX, event.stageY - pointTemp.y); break; case MOBJ["volumeSlider"]["backgroundLoader"]: case MOBJ["volumeSlider"]["maskLoader"]: var vol: Number = Math.round(MOBJ["volumeSlider"]["backSprite"].mouseX * 100 / MOBJ["volumeSlider"]["backSprite"].width) * 0.01; THIS["changeVolume"](vol); //调用主程序里的调节音量并且改变调用滑块 break; case MOBJ["definitionDefault"]: if (MOBJ.hasOwnProperty("definitionBack") && MOBJ["definitionBack"] != null) { MOBJ["definitionBack"].visible = true; definitionTimerStart(); } break; case MOBJ["subtitleDefault"]: //trace("===========================",MOBJ.hasOwnProperty("subtitleBack"),MOBJ["subtitleBack"]); if (MOBJ.hasOwnProperty("subtitleBack") && MOBJ["subtitleBack"] != null) { //trace("显示"); MOBJ["subtitleBack"].visible = true; subtitleTimerStart(); } break; default: if (event.target.name.toString().indexOf("spirte_") > -1) { var ni: int = Number(event.target.name.toString().replace("spirte_", "")); var time: int = promptSpotObjArr[ni]["time"]; if (!isFast(time)) { break; } timeFollow = true; timePlaySliderChange(time); timeFollow = false; //trace("是否跟着走timeFollow04",timeFollow); THIS["videoSeek"](time, false); //调用主程序里的调节时间并且改变调用滑块 } break; } } private function definitionTimerStart(): void { //definitionTimer if (!definitionTimer) { definitionTimer = new timeInterval(100, definitionTimerHandler); } definitionTimer.start(); } private function definitionTimerHandler(): void { var mx: int = M.mouseX, my: int = M.mouseY; var minX: int = MOBJ["definitionDefault"].x < MOBJ["definitionBack"].x ? MOBJ["definitionDefault"].x : MOBJ["definitionBack"].x; var minY: int = MOBJ["definitionDefault"].y < MOBJ["definitionBack"].y ? MOBJ["definitionDefault"].y : MOBJ["definitionBack"].y; var maxX: int = MOBJ["definitionDefault"].x + MOBJ["definitionDefault"].width > MOBJ["definitionBack"].x + MOBJ["definitionBack"].width ? MOBJ["definitionDefault"].x + MOBJ["definitionDefault"].width : MOBJ["definitionBack"].x + MOBJ["definitionBack"].width; var maxY: int = MOBJ["definitionDefault"].y + MOBJ["definitionDefault"].height > MOBJ["definitionBack"].y + MOBJ["definitionBack"].height ? MOBJ["definitionDefault"].y + MOBJ["definitionDefault"].height : MOBJ["definitionBack"].y + MOBJ["definitionBack"].height; if (mx < minX || mx > maxX || my < minY || my > maxY) { MOBJ["definitionBack"].visible = false; definitionTimer.stop(); } } private function subtitleTimerStart(): void { //definitionTimer if (!subtitleTimer) { subtitleTimer = new timeInterval(100, subtitleTimerHandler); } subtitleTimer.start(); } private function subtitleTimerHandler(): void { var mx: int = M.mouseX, my: int = M.mouseY; var minX: int = MOBJ["subtitleDefault"].x < MOBJ["subtitleBack"].x ? MOBJ["subtitleDefault"].x : MOBJ["subtitleBack"].x; var minY: int = MOBJ["subtitleDefault"].y < MOBJ["subtitleBack"].y ? MOBJ["subtitleDefault"].y : MOBJ["subtitleBack"].y; var maxX: int = MOBJ["subtitleDefault"].x + MOBJ["subtitleDefault"].width > MOBJ["subtitleBack"].x + MOBJ["subtitleBack"].width ? MOBJ["subtitleDefault"].x + MOBJ["subtitleDefault"].width : MOBJ["subtitleBack"].x + MOBJ["subtitleBack"].width; var maxY: int = MOBJ["subtitleDefault"].y + MOBJ["subtitleDefault"].height > MOBJ["subtitleBack"].y + MOBJ["subtitleBack"].height ? MOBJ["subtitleDefault"].y + MOBJ["subtitleDefault"].height : MOBJ["subtitleBack"].y + MOBJ["subtitleBack"].height; if (mx < minX || mx > maxX || my < minY || my > maxY) { MOBJ["subtitleBack"].visible = false; subtitleTimer.stop(); } } private function isFast(value: Number = 0): Boolean { switch (CONFIG["config"]["timeScheduleAdjust"]) { case 0: return false; break; case 2: if (value < timeNow) { return false; } break; case 3: if (value > timeNow) { return false; } break; case 4: //trace(timeSeek); if (timeSeek > -1) { if (value < timeSeek) { return false; } } else { if (value < timeNow) { return false; } } break; case 5: if (value > timeMax) { return false; } break; } return true; } private function mouseOverHandler(event: MouseEvent): void { switch (event.currentTarget) { case MOBJ["definitionDefault"]: if (MOBJ.hasOwnProperty("definitionBack") && MOBJ["definitionBack"] != null) { MOBJ["definitionBack"].visible = true; definitionTimerStart(); } break; case MOBJ["subtitleDefault"]: if (MOBJ.hasOwnProperty("subtitleBack") && MOBJ["subtitleBack"] != null) { MOBJ["subtitleBack"].visible = true; definitionTimerStart(); } break; } } private function mouseOutHandler(event: MouseEvent): void { showPrompt(); showPreviewPrompt(); previewHide(); } private function clickMoveClickHanler(): void { //单击视频事件 if (setTimeClick) { setTimeClick.stop(); setTimeClick = null; } if (isClick) { //说明是双击 isClick = false; THIS["sendJS"]("videoDoubleClick",videoSpriteXY); if (CONFIG["config"]["doubleClick"]) { THIS["switchFull"](); } } else { setTimeClick = new timeOut(CONFIG["config"]["doubleClickInterval"], setTimeClickHandler); isClick = true; } } private function setTimeClickHandler(): void { setTimeClick.stop(); setTimeClick = null; isClick = false; THIS["sendJS"]("videoClick",videoSpriteXY); if (CONFIG["config"]["click"]) { //THIS["playOrPause"](); THIS["playOrPause"](); //MovieClip(parent.parent).playOrPause(); } } //--------------------------------------------------------------------------------------------播放器背景结束 private function coorDinate(obj: Object, refer: Sprite = null): Object { //script.traceObject(obj); //根据坐标及参考对象参数计算位置 var nObj: Object = { align: "left", vAlign: "top", offsetX: "0", offsetY: "0" }; nObj = script.mergeObject(nObj, obj); var x: int = 0, y: int = 0, w: int = refer != null ? refer.width : stageW, h: int = refer != null ? refer.height : stageH; switch (nObj["align"]) { case "left": x = 0; break; case "center": x = w * 0.5; break; default: x = w; break; } switch (nObj["vAlign"]) { case "top": y = 0; break; case "middle": y = h * 0.5; break; default: y = h; break; } //trace(x,y); x += nObj["offsetX"].toString().indexOf("%") > -1 ? w * Number(nObj["offsetX"].toString().replace("%", "")) * 0.01 : Number(nObj["offsetX"]); y += nObj["offsetY"].toString().indexOf("%") > -1 ? h * Number(nObj["offsetY"].toString().replace("%", "")) * 0.01 : Number(nObj["offsetY"]); //trace(x,y); return { x: x, y: y }; } //根据宽高返回实际的宽高 private function calculatedSize(w: String, h: String, refer: Sprite = null): Object { var nw: int = Number(w), nh: int = Number(h), ow: int = refer != null ? refer.width : stageW, oh: int = refer != null ? refer.height : stageH; if (w.indexOf("%") > -1) { nw = ow * Number(w.toString().replace("%", "")) * 0.01; } if (h.indexOf("%") > -1) { nh = oh * Number(h.toString().replace("%", "")) * 0.01; } return { width: nw, height: nh }; } //返回控制栏的位置,主要用于在判断鼠标是否在控制栏里 private function getMMinXY(): Object { var w: int = M.width, h: int = M.height, x: int = M.x, y: int = M.y; var minX: int = 0, minY: int = 0; for (var i: int = 0; i <= (M.numChildren - 1); i++) { //trace(M.getChildAt(j).y); //trace(M.getChildAt(j).y,(M.getChildAt(j).height+M.getChildAt(j).y),M.height); if (M.getChildAt(i).x < minX) { minX = M.getChildAt(i).x; } if (M.getChildAt(i).y < minY) { minY = M.getChildAt(i).y; } } return { x: minX, y: minY }; } //============================================================交互函数统一放置 //当修改了C.CONFIG后 public function changeConfig() { CONFIG = C.CONFIG; STYLE = CONFIG["style"]; LANGUAGE = CONFIG["language"]; FLASHVARS = CONFIG["flashvars"]; resize(); } public function addListener(eve: String, fun: Function): void { var isAdd: Boolean = true; //可以加 for (var i: int = 0; i < listenerArr.length; i++) { var arr: Array = listenerArr[i]; if (arr[0] == eve && arr[1] == fun) { isAdd = false; break; } } if (isAdd) { listenerArr.push([eve, fun]); } } public function sendJS(name: String, value: *= null): void { var k: String = ""; var obj: Object = {}; var swfObj: Object = {}; for (var i: int = 0; i < listenerArr.length; i++) { var arr: Array = listenerArr[i]; if (arr[0] == name) { try { if (value) { arr[1](value); } else { arr[1](); } } catch (event: Error) { new log(event); } } } } public function removeListener(eve: String, fun: Function): void { for (var i: int = 0; i < listenerArr.length; i++) { var arr: Array = listenerArr[i]; if (arr[0] == eve && arr[1] == fun) { listenerArr.splice(i, 1); break; } } } public function showBuffer(n: int = 0): void { var show: Boolean = true; if (n < 0 || n >= 100 || (loading && loading.visible) || (MOBJ.hasOwnProperty("centerPlay") && MOBJ["centerPlay"].visible)) { show = false; } if (MOBJ.hasOwnProperty("buffer")) { MOBJ["buffer"].visible = show; } if (MOBJ.hasOwnProperty("bufferText")) { MOBJ["bufferText"].visible = show; if (MOBJ["bufferText"].visible) { MOBJ["bufferText"].text = script.replace(LANGUAGE["buffer"], ["[$percentage]"], [n]); } } } //-------------------------------------------------------------------------------------------loading public function showLoading(show: Boolean = true): void { if (loading) { loading.visible = show; } } //-------------------------------------------------------------------------------------------提示点 public function changePromptSpot(): void { STYLE = C.CONFIG["style"]; FLASHVARS = C.CONFIG["flashvars"]; var i: int = 0; var promptSpot: Object = STYLE["promptSpot"]; if (promptSpotArr) { for (i = 0; i < promptSpotArr.length; i++) { //THIS.removeChild( MOBJ["timeSlider"]["backDefaultSprite"].removeChild(promptSpotArr[i]); } } if (!FLASHVARS.hasOwnProperty("promptSpot")) { return; } if (!FLASHVARS["promptSpot"]) { return; } if (script.getType(FLASHVARS["promptSpot"]) != "array") { return; } promptSpotArr = []; promptSpotObjArr = FLASHVARS["promptSpot"]; for (i = 0; i < promptSpotObjArr.length; i++) { var mObj: Object = { backgroundColor: promptSpot["color"], backgroundAlpha: promptSpot["alpha"], //背景透明度 radius: promptSpot["radius"], width: promptSpot["width"], height: promptSpot["height"] }; var sprite: Sprite = element.newSprite(mObj); sprite.name = "spirte_" + i; sprite.buttonMode = true; sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.addEventListener(MouseEvent.CLICK, mouseClickHandler); promptSpotArr.push(sprite); MOBJ["timeSlider"]["backDefaultSprite"].addChildAt(sprite, MOBJ["timeSlider"]["backDefaultSprite"].getChildIndex(MOBJ["timeSlider"]["playDefaultSprite"]) + 1); } promptSpotResize(); } //根据音量的大小来调整滑块的位置,提供给外部使用 public function volumeSliderChange(volume: Number = 0): void { if (volume < 0) { volume = 0; } if (volume > 1) { volume = 1; } var bkW: int = MOBJ["volumeSlider"]["backSprite"].width; var mkW: int = MOBJ["volumeSlider"]["maskSprite"].width; var btW: int = MOBJ["volumeSlider"]["buttonLoader"].width; var newMkW: int = bkW * volume; var newBtW: int = 0; volumeTemp = volume; newBtW = newMkW - (btW * 0.5); if (newBtW < 0) { newBtW = 0; } if (newBtW > bkW - btW) { newBtW = bkW - btW; } MOBJ["volumeSlider"]["maskSprite"].width = newMkW; MOBJ["volumeSlider"]["buttonLoader"].x = newBtW; muteOrEscMute(volume); } //控制时间进度块是否跟着时间走 public function changeTimePlaySlider(b: Boolean = true): void { if (buttonDown && b) { return; } timeFollow = b; //trace("================================================是否跟着走timeFollow01",timeFollow); } //根据播放时间调整滑块的位置,提供给外部使用 public function changeTimeTotal(n: Number = 0): void { timeTotal = n; if(C.CONFIG["flashvars"]["forceduration"]>0){ timeTotal=C.CONFIG["flashvars"]["forceduration"]; } if (timeTotal > 0) { changePromptSpot(); } } public function timePlaySliderChange(time: Number = 0): void { if (!timeFollow) { return; } if (time <= -999) { var nowObj: Object = getFormatLiveTime(); if (time < -999) { MOBJ["button"]["backLive"].visible = true; } else { MOBJ["button"]["backLive"].visible = false; } //计算时间 time = (CONFIG["config"]["liveAndVod"]["vodTime"] - 1) * 3600 + nowObj["minutes"] * 60 + nowObj["seconds"] + time + 999; } //trace("跳转",timeSeek,timeNow,time); if (timeSeek == -1 && (timeNow - time > 2 || timeNow - time < -2)) { timeSeek = timeNow; } timeNow = time; if (timeMax < time) { timeMax = time; } //trace("timeFollow====",time,timeTotal); var bw: Number = MOBJ["timeSlider"]["buttonDefaultLoader"].width; //按钮的宽 var bgw: Number = MOBJ["timeSlider"]["backgroundDefaultLoader"].width //参数背景的宽 var pw: Number = (time * (bgw - bw)) / timeTotal + bw * 0.5; //进度条的宽度 MOBJ["timeSlider"]["playDefaultSprite"].width = pw; //进度条的宽 var bx: Number = pw - bw * 0.5; //按钮的x if (bx < 0) { bx = 0; } if (bx > bgw - bw) { bx = bgw - bw } //trace("进度按钮的",bx,pw); if (MOBJ.hasOwnProperty("timeSlider")) { MOBJ["timeSlider"]["buttonDefaultLoader"].x = bx; } if (MOBJ.hasOwnProperty("timeOutSlider")) { //简单播放进度 MOBJ["timeOutSlider"]["playOutSprite"].width = (time * MOBJ["timeOutSlider"]["backgroundOutLoader"].width) / timeTotal; } } public function timePlaySimpleChange(time: Number = 0): void { if (MOBJ.hasOwnProperty("simpleSchedule")) { //简单播放进度 if (time == -999) { var nowObj: Object = getFormatLiveTime(); //计算时间 time = (CONFIG["config"]["liveAndVod"]["vodTime"] - 1) * 3600 + nowObj["minutes"] * 60 + nowObj["seconds"]; } var n: int = (time * MOBJ["simpleSchedule"]["backgroundDefaultLoader"].width) / timeTotal; MOBJ["simpleSchedule"]["playDefaultSprite"].width = n; } } //根据加载量调整整滑块的位置,提供给外部使用 public function changeLoadTotal(n: int = 0): void { loadTotal = n; } public function timeLoadSliderChange(load: int = 0): void { loadNow = load; if (MOBJ.hasOwnProperty("timeSlider")) { var n: int = (load * MOBJ["timeSlider"]["backgroundDefaultLoader"].width) / loadTotal; MOBJ["timeSlider"]["loadDefaultSprite"].width = n; } if (MOBJ.hasOwnProperty("timeOutSlider")) { var n2: int = (load * MOBJ["timeOutSlider"]["backgroundOutLoader"].width) / loadTotal; MOBJ["timeOutSlider"]["loadOutSprite"].width = n2; } } public function timeLoadSimpleChange(load: int = 0): void { loadNow = load; if (MOBJ.hasOwnProperty("simpleSchedule")) { var n2: int = (load * MOBJ["simpleSchedule"]["backgroundDefaultLoader"].width) / loadTotal; MOBJ["simpleSchedule"]["loadDefaultSprite"].width = n2; } } //判断是加载直播时间框还是加载点播文本框 public function loadTimeText(): void { var i: int = 0; if (MOBJ.hasOwnProperty("timeVodText") && MOBJ["timeVodText"] != null) { for (i = 0; i < MOBJ["timeVodText"].length; i++) { M.removeChild(MOBJ["timeVodText"][i]); } MOBJ["timeVodText"] = null; } if (MOBJ.hasOwnProperty("timeLiveText") && MOBJ["timeLiveText"] != null) { for (i = 0; i < MOBJ["timeLiveText"].length; i++) { M.removeChild(MOBJ["timeLiveText"][i]); } MOBJ["timeLiveText"] = null; } if (!FLASHVARS["live"] && !C.CONFIG["config"]["liveAndVod"]["open"]) { //trace("vod"); loadVodTimeText(); } else { //trace("live"); loadLiveTimeText(); //加载时间文本框 } } public function changeVodTime(t: Number = 0): void { //改变点播视频时间 var val: int = Math.round(t); if (MOBJ.hasOwnProperty("timeVodText") && MOBJ["timeVodText"] != null) { var timeText: Object = STYLE["controlBar"]["timeText"]["vod"]; var textFiledArr: Array = MOBJ["timeVodText"]; var vodArr: Array = []; var textArr: Array = []; var timeTextArr: Array = []; if (script.getType(STYLE["controlBar"]["timeText"]["vod"]) != "array") { vodArr.push(STYLE["controlBar"]["timeText"]["vod"]); } else { vodArr = STYLE["controlBar"]["timeText"]["vod"]; } for (var i: int = 0; i < textFiledArr.length; i++) { //trace(getFormatTime(vodArr[i]["text"],t)); MOBJ["timeVodText"][i].text = getFormatTime(vodArr[i]["text"], t); } } else { FLASHVARS["live"] = false; loadTimeText(); } } public function changeLiveTime(t: int = 0): void { //直播时间的调用 //trace(t,"==="); if (MOBJ.hasOwnProperty("timeLiveText") && MOBJ["timeLiveText"] != null) { var timeText: Object = STYLE["controlBar"]["timeText"]["live"]; var textFiledArr: Array = MOBJ["timeLiveText"]; var vodArr: Array = []; var textArr: Array = []; var timeTextArr: Array = []; if (script.getType(STYLE["controlBar"]["timeText"]["live"]) != "array") { vodArr.push(STYLE["controlBar"]["timeText"]["live"]); } else { vodArr = STYLE["controlBar"]["timeText"]["live"]; } for (var i: int = 0; i < textFiledArr.length; i++) { //trace(getFormatTime(vodArr[i]["text"],t)); //trace(vodArr[i]["text"]); MOBJ["timeLiveText"][i].text = getFormatTime(vodArr[i]["text"], t); } } else { FLASHVARS["live"] = true; loadTimeText(); } } //加载或移除错误提示文本框 public function errorShow(error: String = ""): void { if (error) { var textObj: Object = STYLE["error"]; textObj["text"] = error; if (errorText) { THIS.removeChild(errorText); errorText = null; } //script.traceObject(textObj); errorText = element.newText(textObj); THIS.addChild(errorText); errorShowResize(); showCenterPlay(false); showLoading(true); showBuffer(100); } else { showLoading(false); if (errorText) { THIS.removeChild(errorText); errorText = null; } } } //改变参考宽高 public function changeFaceWh(obj: Object): void { //trace("改变宽高"); pause.width = obj["w"]; pause.height = obj["h"]; pause.x = obj["x"]; pause.y = obj["y"]; advertisementResize(); THIS.addChild(MOBJ["advertisement"]["closeButton"]); } //显示广告相关元件 public function advertisementShow(objName: String, b: Boolean = true): void { if (MOBJ.hasOwnProperty("advertisement")) { var advertisement: Object = MOBJ["advertisement"]; var newCoor: Object = {}; if (advertisement.hasOwnProperty(objName)) { MOBJ["advertisement"][objName].visible = b; if (b) { THIS.addChild(MOBJ["advertisement"][objName]); } } } } //显示倒计时 public function changeAdCountDown(t: int = 0): void { if (MOBJ.hasOwnProperty("advertisement")) { if (MOBJ["advertisement"].hasOwnProperty("countDown")) { if (t < 0) { t = 0; } var textTemp: String = script.replace(LANGUAGE["adCountdown"], ["[$second]","[$Second]"], [t,t<10?"0"+t:t]); if (!MOBJ["advertisement"].hasOwnProperty("countDownText")) { var obj: Object = STYLE["advertisement"]["countDownText"]; var newText: TextField = element.newText({ text: "0", color: obj["color"], size: obj["size"], font: obj["font"], alpha: obj["alpha"], bold: obj["bold"], textAlign: obj["textAlign"], width: obj["width"] }); MOBJ["advertisement"]["countDownText"] = newText; } MOBJ["advertisement"]["countDownText"].text = textTemp; THIS.addChild(MOBJ["advertisement"]["countDownText"]); advertisementResize(); //trace("倒计时时间:",textTemp,MOBJ["advertisement"]["countDownText"].visible,THIS.getChildIndex(MOBJ["advertisement"]["countDown"])); //trace("countDownText",MOBJ["advertisement"]["countDownText"].x,MOBJ["advertisement"]["countDownText"].y,MOBJ["advertisement"]["countDownText"].width,MOBJ["advertisement"]["countDownText"].height); } } } //显示跳过广告按钮延时显示的文本 public function changeAdSkipDelay(t: int): void { //trace("++"); if (MOBJ.hasOwnProperty("advertisement")) { if (MOBJ["advertisement"].hasOwnProperty("skipDelay")) { if (t < 0) { t = 0; } var textTemp: String = script.replace(LANGUAGE["skipDelay"], ["[$second]","[$Second]"], [t,t<10?"0"+t:t]); if (!MOBJ["advertisement"].hasOwnProperty("skipDelayText")) { var obj: Object = STYLE["advertisement"]["skipDelayText"]; var newText: TextField = element.newText({ text: textTemp, color: obj["color"], size: obj["size"], font: obj["font"], alpha: obj["alpha"], bold: obj["bold"], textAlign: obj["textAlign"], width: obj["width"] }); MOBJ["advertisement"]["skipDelayText"] = newText; } MOBJ["advertisement"]["skipDelayText"].text = textTemp; THIS.addChild(MOBJ["advertisement"]["skipDelayText"]); advertisementResize(); //trace("倒计时时间:",textTemp); //trace("countDownText",MOBJ["advertisement"]["countDownText"].x,MOBJ["advertisement"]["countDownText"].y,MOBJ["advertisement"]["countDownText"].width,MOBJ["advertisement"]["countDownText"].height); } } } public function showCenterPlay(b: Boolean = true): void { //显示中间点击播放按钮 if (MOBJ.hasOwnProperty("centerPlay")) { MOBJ["centerPlay"].visible = b; } } public function showButton(name: String, b: Boolean = true): void { //显示/隐藏控制栏按钮 if (MOBJ["button"].hasOwnProperty(name)) { MOBJ["button"][name].visible = b; } } public function checkFullScreen(): void { //检查是否全屏 if (STAGE.displayState == "normal") { MOBJ["button"]["full"].visible = true; MOBJ["button"]["escFull"].visible = false; if (full) { full = false; THIS["sendJS"]("full", full); new log("full:" + full); } } else { MOBJ["button"]["full"].visible = false; MOBJ["button"]["escFull"].visible = true; if (!full) { full = true; THIS["sendJS"]("full", full); new log("full:" + full); } } } public function getClickSpriteIndex(): int { //获取播放器上方用来单击双击层的深度 return THIS.getChildIndex(clickSprite); } public function custom(arr: Array = null): void { if (!arr) { return; } //trace(arr); //trace("custom=============="); var customeName: String = ""; if (arr.length != 3 && arr.length != 4) { return } var style: String = ""; var ks: String = ""; if (arr.length == 3) { ks = arr[1] switch (arr[0]) { case "button": style = "vcustomButton"; break; case "swf": style = "vcustomSwf"; break; case "images": style = "vcustomImages"; break; case "text": style = "vcustomText"; break; } customeName = arr[0] + "." + arr[1]; } else { ks = arr[2]; switch (arr[1]) { case "button": style = "customButton"; break; case "swf": style = "customSwf"; break; case "images": style = "customImages"; break; case "text": style = "customText"; break; } customeName = arr[0] + "." + arr[1] + "." + arr[2]; } //trace("stylename",style,ks); if (style) { if (!MOBJ.hasOwnProperty(style) || !MOBJ[style]) { return; } if (!MOBJ[style].hasOwnProperty(ks) || !MOBJ[style][ks]) { return; } MOBJ[style][ks].visible = arr[arr.length - 1]; new log(customeName + ":" + arr[arr.length - 1]); THIS["sendJS"](customeName, arr[arr.length - 1]); } } public function clear(): void { var i: int = 0; changeLoadTotal(0); timeLoadSliderChange(0); changeTimeTotal(0); timePlaySliderChange(0); changeVodTime(0); showLoading(); if (previewTop) { THIS.removeChild(previewTop); previewTop = null; } if (preview) { THIS.removeChild(preview); preview = null; } previewLoad = false; previewLoadIng = false; if (promptSpotArr) { for (i = 0; i < promptSpotArr.length; i++) { //THIS.removeChild( MOBJ["timeSlider"]["backDefaultSprite"].removeChild(promptSpotArr[i]); } } promptSpotArr = []; } public function changeControlBarShow(show: Boolean = true): void { if (show) { force = false; mShowHandler(); } else { force = true; mHideHandler(); } } } }