Files
moeplayer/source/ckaction/main.as
T
2020-09-17 18:40:01 +08:00

1791 lines
50 KiB
ActionScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package ckaction {
import flash.display.Sprite;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.events.Event;
import flash.system.Security;
import flash.display.StageDisplayState;
import flash.events.KeyboardEvent;
import ckaction.process.config;
import ckaction.act.script;
import ckaction.style.face;
import ckaction.process.analysisVideoUrl;
import ckaction.act.timeOut;
import ckaction.process.analysis;
import ckaction.style.poster;
import ckaction.ad.adPlayer;
import ckaction.C.C;
import ckaction.player.player;
import ckaction.act.timeInterval;
import ckaction.ad.adOtherPlayer;
import ckaction.style.newElement;
import flash.external.ExternalInterface;
import ckaction.act.log;
import ckaction.menu.rightMenu;
import ckaction.act.script;
import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;
import ckaction.process.analysisVideoUrlNum;
import ckaction.act.loadXml;
import ckaction.style.track;
import flash.events.ErrorEvent;
import flash.events.MouseEvent;
public class main extends Sprite {
Security.allowDomain("*");
Security.allowInsecureDomain("*");
private var FLASHVARS: Object = {}; //flashvars
private var FACE: face = null;
//
private var tempVolume: Number = 0,
nowVolume: Number = 0;
//
private var controlBarShow: Boolean = true;
//
private var videoUrl: Array = null; //视频地址
private var adUrl: Object = null; //广告地址
private var autoPlay: Boolean = false; //是否自动播放
private var noPlay: Boolean = false; //加载完但不播放(因为前置广告在播放,或默认加载没有前置广告但默认暂停)
private var autoLoad: Boolean = false; //默认加载
private var firstPlay: Boolean = false; //是否第一次播放
private var posterFun: poster = null; //用来加载封面图片的
private var trackClass: track = null;
private var mouseCoorObj:Object={x:0,y:0};//保存鼠标坐标
//广告类
private var adPlayClass: adPlayer = null;
private var adName: String = "";
private var adFrontPlayed: Boolean = false; //前置广告是否已播放
private var adInsertPlayed: Boolean = false; //插入广告是否在播放
private var adEndPlayed: Boolean = false; //结束广告是否已播放
private var adFunObj: Object = {};
private var insertTimeArr: Array = null; //插入广告的开始时间数组
private var insertPlay: Array = []; //插入广告保存是否播放的数组
private var otherTimeArr: Array = null; //其它广告的开始时间数组
private var otherAdArr: Array = []; //其它广告数组
private var otherPlay: Array = []; //其它广告保存是否播放的数组
private var otherAd: Array = []; //其它广告数组
//
private var vPlayer: player = null;
private var time: Number = 0; //当前播放时间
private var timeTotal: Number = 0;
private var newVideoTimeOut: timeOut = null;
//
private var loadIndex: int = 0; //视频显示的深度,因为界面加载完后在有背景的情况下深度不一定
//状态
private var videoState: Object = {};
private var isKeyClock: Boolean = false; //是否锁定按键
//其它广告
private var otherInterVal: timeInterval = null;
private var otherTime: int = 0;
//
private var timeMax: Number = 0,
timeSeek: Number = -1;
//构建弹幕文件
private var element: newElement = null;
//监听函数列表
private var listenerArr: Array = [];
private var playNum: int = 0;
private var errorShow: Boolean = false;
//是否可以加载官方广告
private var changeNum: int = 0;
public function main() {
// constructor code
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
var flashvars: Object = stage.loaderInfo.parameters;
if (flashvars.hasOwnProperty("log")) {
if (flashvars["log"] == "true" || flashvars["log"] == "yes" || flashvars["log"] == 1 || flashvars["log"] == "1") {
C.CONFIG["flashvars"]["log"] = true;
}
}
stage.addEventListener(Event.RESIZE, resizeHandler);
adFunObj = {
advertisementShow: advertisementShow,
changeAdCountDown: changeAdCountDown,
changeAdSkipDelay: changeAdSkipDelay,
adStop: videoPlay,
changeFaceWh: changeFaceWh
};
config(); //加载配置文件
new log("process:Loaded");
}
private function config(): void {
//加载配置文件
new log("process:Config load");
new ckaction.process.config(stage, configHandler);
}
private function configHandler(): void {
//配置文件加载完成
new log("process:Config loaded");
//new log(C.CONFIG);
if (C.CONFIG["config"]["buttonMode"]["player"]) {
this.buttonMode = true;
}
//adUrl=C.CONFIG["flashvars"]["adUrl"];
new rightMenu(this);//构建右键
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); //监听键盘事件
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler);
addCallback();
if (C.CONFIG["flashvars"]["loaded"] != "") {
new log("process:Config loaded:"+C.CONFIG["flashvars"]["loaded"]);
if (C.CONFIG["flashvars"]["variable"] != "") {
script.callJs(script.formatSsl(C.CONFIG["flashvars"]["variable"]) + ".loadedHandler");
} else {
script.callJs(script.formatSsl(C.CONFIG["flashvars"]["loaded"]));
}
} else {
if (C.CONFIG["flashvars"]["variable"] != "") {
script.callJs(script.formatSsl(C.CONFIG["flashvars"]["variable"]) + ".loadedHandler");
}
}
if (C.CONFIG["config"]["time"] > 0) {
var tempTimer: timeInterval = new timeInterval(1000, function () {
var tempNowTime: Number = C.CONFIG["config"]["time"];
C.CONFIG["config"]["time"] = tempNowTime + 1000;
});
tempTimer.start();
}
//script.traceObject(C.CONFIG["config"]);
}
public function loadFace(): void { //加载风格
if (C.CONFIG.hasOwnProperty("style") && C.CONFIG.hasOwnProperty("language")) {
if (C.CONFIG["style"].hasOwnProperty("controlBar")) {
new log("process:Face load");
FACE = new face(stage, this, into);
} else {
into();
}
} else {
into();
}
//script.traceObject(C.CONFIG["flashvars"]);
}
private function into(index: int = -1): void { //界面加载完成后开始的动作
//trace("动作开始");
//custom('controlBar','button','previousPage',false)
//script.traceObject(getConfig("config"));
new log("process:Player start");
sendJS("playerStart");
if (C.CONFIG["flashvars"]["crossdomain"] != "") {
//如果在flashvars里指定了跨域策略,则加载
flash.system.Security.loadPolicyFile(C.CONFIG["flashvars"]["crossdomain"]);
} else {
if (C.CONFIG["config"]["crossdomain"] != "") {
//如果在配置文件里指定了跨域策略,则加载
flash.system.Security.loadPolicyFile(C.CONFIG["config"]["crossdomain"]);
}
}
videoError();
if (loadIndex != index && index != -1) {
loadIndex = index;
}
if (newVideoTimeOut != null) {
newVideoTimeOut.stop();
newVideoTimeOut = null;
}
if (FACE) { //如果界面对象存在,则初始化
FACE.changeLoadTotal();
FACE.timeLoadSliderChange();
FACE.timeLoadSimpleChange();
FACE.changeTimeTotal(C.CONFIG["flashvars"]["duration"]);
FACE.timePlaySimpleChange();
FACE.timePlaySliderChange();
if (!C.CONFIG["flashvars"]["live"]) {
FACE.changeVodTime();
}
FACE.showLoading();
FACE.showCenterPlay(false);
}
if (trackClass) {
trackClass.close();
trackClass = null;
}
new log("process:Analysis video url");
if (C.CONFIG["flashvars"].hasOwnProperty("video") && C.CONFIG["flashvars"]["video"]) {
trace("分析视频");
new analysisVideoUrl(newPlayerHandler); //分析视频地址
} else {
new log("error:There is no video in the flashvars");
videoError(C.CONFIG["flashvars"]["cannotFindUrl"] != "" ? C.CONFIG["flashvars"]["cannotFindUrl"] : C.CONFIG["language"]["error"]["cannotFindUrl"]);
}
}
private function newPlayerHandler(arr: Array = null, m: int = 0): void {
//视频地址分析完成
trace("===||");
script.traceObject(arr);
new log(arr);
trace("===");
if (!arr) {
new log("error:flashvars[\"video\"] format error");
videoError(C.CONFIG["flashvars"]["formatError"] != "" ? C.CONFIG["flashvars"]["formatError"] : C.CONFIG["language"]["error"]["formatError"]);
//trace("已经出错");
return;
}
if (FACE && C.CONFIG["flashvars"]["duration"] > 0) { //如果界面对象存在,则初始化
FACE.changeTimeTotal(C.CONFIG["flashvars"]["duration"]);
if (!C.CONFIG["flashvars"]["live"]) {
FACE.changeVodTime();
}
}
new log("process:Video url analysis completed");
playNum = m; //要播放的数组索引
if (C.CONFIG["config"]["definition"] && FACE) {
FACE.loadDefinition(playNum);
FACE.newDefinition(playNum);
}
//C.CONFIG["flashvars"]["video"] = arr;
//C.CONFIG["flashvars"]["weight"] = weight;
FLASHVARS = C.CONFIG["flashvars"];
autoPlay = FLASHVARS["autoplay"]; //是否自动播放
//script.traceObject(C.CONFIG["flashvars"]);
//trace("autoPlay:",autoPlay,FLASHVARS["autoplay"]);
autoLoad = C.CONFIG["config"]["autoLoad"];
nowVolume = FLASHVARS["volume"];
//trace("autoPlay",autoPlay,autoLoad,nowVolume);
//script.traceObject(C.CONFIG);
//return;
if (otherInterVal) {
otherInterVal.close();
otherInterVal = null;
}
//script.traceObject(C.CONFIG["flashvars"]);
if (!FLASHVARS.hasOwnProperty("advertisements") || !FLASHVARS["advertisements"]) {
advsHandler(null);
} else {
//trace("进行分析");
//script.traceObject(FLASHVARS["advertisements"]);
new log("process:Analysis advertisements");
new analysis(FLASHVARS["advertisements"], advsHandler); //分析广告内容
}
}
private function advsHandler(obj: Object): void { //广告分析结束
advertisementsHandler(obj);
}
private function advertisementsHandler(obj: Object): void { //广告分析结束
//script.traceObject(obj);
new log("process:Advertisements analysis completed");
if (obj) {
adUrl = obj;
if (adUrl.hasOwnProperty("inserttime")) {
FLASHVARS["inserttime"] = adUrl["inserttime"];
}
}
//script.traceObject(adUrl);
//分析其它广告
if (adUrl && adUrl.hasOwnProperty("other") && adUrl["other"]) {
otherPlay = [];
otherTimeArr = [];
otherAdArr = adUrl["other"];
for (var i: int = 0; i < otherAdArr.length; i++) {
otherPlay.push(0);
otherAd.push(null);
if (otherAdArr[i].hasOwnProperty("startTime") && otherAdArr[i]["startTime"] > 0) {
otherTimeArr.push(otherAdArr[i]["startTime"]);
} else {
otherTimeArr.push(0);
}
}
}
//script.traceObject(otherTimeArr);
//其它广告分析完成
if (vPlayer) {
vPlayer.clear();
vPlayer = null;
}
//trace(C.CONFIG["flashvars"]["cktrack"]);
loadSubbtitle();
if (C.CONFIG["config"]["delay"] > 0) {
new timeOut(C.CONFIG["config"]["delay"], addPlayer);
} else {
addPlayer();
}
//script.traceObject(C.CONFIG["flashvars"]);
}
private function loadSubbtitle():void{//加载字幕文件
var trackS:String=C.CONFIG["flashvars"]["cktrack"];
var trackDelay:Number=C.CONFIG["flashvars"]["cktrackdelay"];
var trackArr=[];
if(trackS && trackS.indexOf(",")>-1){
trackArr=script.trackToArray(trackS);
var index:int=0;
for(var i:int=0;i<trackArr.length;i++){
if(trackArr[i][2]>index){
index=trackArr[i][2];
}
}
trackS=trackArr[index][0];
}
if (trackS) {
trackClass = new track(this, C.CONFIG["style"]["cktrack"],trackS,trackDelay);
}
if (C.CONFIG["config"]["subtitle"] && FACE && trackArr.length>0) {
FACE.loadSubtitles(index);
FACE.newSubtitles(index);
}
}
private function addPlayer(): void {
if (!FLASHVARS.hasOwnProperty("video") || !FLASHVARS["video"]) {
videoError(C.CONFIG["language"]["error"]["cannotFindUrl"]);
return;
}
noPlay = false;
firstPlay = true;
if (autoPlay) { //如果自动播放
//trace("===========", adUrl.hasOwnProperty("front"), adUrl["front"]);
//script.traceObject(adUrl);
/*-----------------------------------------------------*/
if (adUrl && adUrl.hasOwnProperty("front") && adUrl["front"]) { //如果有前置广告
frontAdPlay();
//trace("autoLoad", autoLoad);
if (autoLoad) {
noPlay = true;
newPlayer();
}
} else {
newPlayer();
}
/*-----------------------------------------------------*/
} else { //如果不自动播放
loadPoster();
if (autoLoad) {
noPlay = true;
newPlayer();
}
}
}
//======================================================加载初始化图片==================================================================
private function loadPoster(): void {
if (FLASHVARS.hasOwnProperty("poster") && FLASHVARS["poster"]) {
if (posterFun) {
posterFun.hide();
posterFun = null;
}
new log("process:Poster load");
posterFun = new poster(stage, this, videoPlay, getControlBarShow, posterHandler);
posterFun.loadPoster(FLASHVARS["poster"], C.CONFIG["style"]["video"], loadIndex);
} else {
//如果没有封面图,则隐藏loading
if (FACE) { //如果界面对象存在
FACE.showLoading(false);
FACE.showCenterPlay();
}
}
}
private function posterHandler(loaded: Boolean = false): void {
if (FACE) { //如果界面对象存在
FACE.showLoading(false);
FACE.showCenterPlay();
}
if (vPlayer) {
vPlayer.posterHandler();
}
}
//======================================================开始播放前置广告==================================================================
private function frontAdPlay(): void { //加载前置广告
if (FACE) { //如果界面对象存在
FACE.showLoading(false);
FACE.showCenterPlay(false);
}
if (adPlayClass) {
adPlayClass.close();
adPlayClass = null;
}
trace("播放前置广告");
adName = "front";
new log("process:front ad play");
this.sendJS("frontAd", "play");
adPlayClass = new adPlayer(stage, this, adFunObj, adUrl["front"], C.CONFIG["style"]["advertisement"], adName);
adFrontPlayed = true; //说明前置广告已经播放了
}
//控制广告元件(背景,倒计时,跳过广告按钮等)显示
private function advertisementShow(objName: String, b: Boolean = true): void {
if (FACE) {
FACE.advertisementShow(objName, b);
}
}
//向face里发送广告的尺寸
private function changeFaceWh(obj: Object): void {
if (FACE) {
FACE.changeFaceWh(obj);
}
}
//改变文本框
private function changeAdCountDown(t: int = 0): void {
//trace(t);
if (FACE) {
FACE.changeAdCountDown(t);
}
}
//改变跳过广告延时时间
private function changeAdSkipDelay(t: int = 0): void {
if (FACE) {
FACE.changeAdSkipDelay(t);
}
}
//======================================================开始播放暂停广告================================================================
private function adPausePlay(): void {
if (adInsertPlayed || firstPlay || adEndPlayed) { //如果正在播放插入广告
return;
}
if (adUrl && adUrl.hasOwnProperty("pause") && adUrl["pause"]) {
//script.traceObject(adUrl["pause"]);
trace("开始播放暂停广告");
new log("process:Pause ad play");
this.sendJS("pauseAd", "play");
adName = "pause";
adPlayClass = new adPlayer(stage, this, adFunObj, adUrl["pause"], C.CONFIG["style"]["advertisement"], adName);
}
}
public function closePauseAd(): void {
//trace("关闭了暂停广告");
if (adPlayClass != null) {
adPlayClass.close();
adPlayClass = null;
new log("process:Pause ad close");
this.sendJS("pauseAd", "close");
}
}
//=======================================================开始播放结束广告==============================================================
private function endAdPlay(): void {
if (adPlayClass) {
adPlayClass.close();
adPlayClass = null;
}
//trace("播放结束广告");
var adEndObj: Object = {
advertisementShow: advertisementShow,
changeAdCountDown: changeAdCountDown,
changeAdSkipDelay: changeAdSkipDelay,
adStop: ended,
changeFaceWh: changeFaceWh
};
new log("process:End ad play");
this.sendJS("endAd", "play");
adName = "end";
trace("播放广告");
adPlayClass = new adPlayer(stage, this, adEndObj, adUrl["end"], C.CONFIG["style"]["advertisement"], adName);
adEndPlayed = true; //说明结束广告已经播放了
}
//======================================================播放其它广告====================================================================
private function otherInterValHandler(): void {
otherTime++;
for (var i: int = 0; i < otherAdArr.length; i++) {
if (otherPlay[i] == 0) {
if (otherTime >= otherTimeArr[i]) {
otherPlay[i] = 1;
otherAd[i] = new adOtherPlayer(stage, this, otherAdArr[i], i);
}
}
}
}
public function closeOtherAd(num: int = 0): void {
if (otherAd.length > num) {
if (otherAd[num]) {
otherAd[num].close();
otherAd[num] = null;
}
}
}
//======================================================开始播放视频====================================================================
private function newPlayer(): void {
trace("NOPLAY+++", noPlay);
vPlayer = new player(stage, this, noPlay, loadIndex, playNum, FLASHVARS["seek"]);
vPlayer.volume = nowVolume;
}
public function changeDefinition(n: int = 0): void {
trace("切换清晰度编号:" + n);
playNum = n;
if (vPlayer) {
vPlayer.clear();
vPlayer = null;
}
if (FACE) { //如果界面对象存在,则初始化
FACE.changeLoadTotal();
FACE.timeLoadSliderChange();
FACE.timeLoadSimpleChange();
FACE.changeTimeTotal();
FACE.timePlaySimpleChange();
FACE.timePlaySliderChange();
if (!C.CONFIG["flashvars"]["live"]) {
FACE.changeVodTime();
}
FACE.showLoading();
FACE.showCenterPlay(false);
}
autoPlay = true;
var videoArr: Array = C.CONFIG["flashvars"]["video"];
var vObj: Object = videoArr[playNum];
if (vObj.hasOwnProperty("video") && vObj["video"]) {
if (vObj["video"].toString().substr(0, 8) == "website:") {
new analysisVideoUrlNum(changeDefinitionHandler, playNum);
} else {
changeDefinitionHandler();
}
} else {
changeDefinitionHandler();
}
}
public function changeSubtitles(n:int=0):void{
var trackS:String=C.CONFIG["flashvars"]["cktrack"];
var trackArr=[];
if(trackS.indexOf(",")>-1){
trackArr=script.trackToArray(trackS);
trackS=trackArr[n][0];
}
if (trackS != "") {
if(trackClass){
trackClass.close();
trackClass=null;
}
trackClass = new track(this, C.CONFIG["style"]["cktrack"],trackS);
}
if (C.CONFIG["config"]["subtitle"] && FACE && trackArr.length>0) {
trace("FACE.loadSubtitles");
FACE.loadSubtitles(n);
FACE.newSubtitles(n);
}
}
public function changeSubtitlesSize(n:int=0,m:int=0):void{
if(trackClass){
C.CONFIG["style"]["cktrack"]["size"]=n;
C.CONFIG["style"]["cktrack"]["leading"]=m;
trackClass.changeSize(n,m);
}
}
private function changeDefinitionHandler(b: Boolean = true): void {
if (!b) {
if (changeNum < C.CONFIG["config"]["errorNum"]) {
changeNum++;
changeDefinition(playNum);
} else {
videoError(C.CONFIG["flashvars"]["cannotFindUrl"] != "" ? C.CONFIG["flashvars"]["cannotFindUrl"] : C.CONFIG["language"]["error"]["cannotFindUrl"]);
}
return;
}
changeNum = 0;
vPlayer = new player(stage, this, false, loadIndex, playNum);
sendJS("definitionChange",playNum);
vPlayer.firstSeek = time;
vPlayer.volume = nowVolume;
faceDefinition(playNum);
}
public function faceDefinition(n: int = 0): void {
if (C.CONFIG["config"]["definition"] && FACE) {
FACE.loadDefinition(n);
FACE.newDefinition(n);
}
}
public function getPlayerData(obj: Object): void {
//script.traceObject(obj);
var i: int = 0;
switch (obj["name"]) {
case "changeTimeTotal":
timeTotal = obj["val"];
sendJS("duration", timeTotal);
new log("duration:" + timeTotal);
//trace(FLASHVARS.hasOwnProperty("inserttime"), (FLASHVARS["inserttime"] + ""), timeTotal > 0, adUrl);
if (FLASHVARS.hasOwnProperty("inserttime") && (FLASHVARS["inserttime"] + "") != "" && timeTotal > 0 && adUrl) {
if (adUrl.hasOwnProperty("insert") && adUrl["insert"]) {
insertTimeArr = script.formatInsertTime(FLASHVARS["inserttime"], obj["val"]);
trace("insertTimeArr", insertTimeArr);
insertPlay = [];
if (insertTimeArr) {
for (i = 0; i < insertTimeArr.length; i++) {
insertPlay.push(false);
}
} else {
insertPlay = null;
}
}
}
break;
case "changeLoadTotal":
sendJS("bytesTotal", obj["val"]);
new log("bytesTotal:" + obj["val"]);
break;
case "changeVodTime":
time = obj["val"];
if (!vPlayer.getPaused()) {
sendJS("time", time);
if (trackClass!=null) {
//trace(trackClass);
trackClass.sendTime(time);
}
}
//new log("time:"+time);
if (timeMax < time) {
timeMax = time;
}
if (insertPlay && !adInsertPlayed) { //播放中插广告
for (i = 0; i < insertPlay.length; i++) {
if (insertPlay[i] == false) {
if (obj["val"] >= insertTimeArr[i]) {
insertPlay[i] = true;
if (adPlayClass) {
adPlayClass.close();
adPlayClass = null;
}
adInsertPlayed = true;
videoPause(false);
adName = "insert";
new log("process:Insert ad play");
this.sendJS("insertAd", "play");
adPlayClass = new adPlayer(stage, this, adFunObj, adUrl["insert"], C.CONFIG["style"]["advertisement"], adName);
}
break;
}
}
}
break;
case "timeLoadSliderChange":
sendJS("bytes", obj["val"]);
//new log("bytes:" + obj["val"]);
break;
case "showBuffer":
if (obj["val"] < 100) {
sendJS("buffer", obj["val"]);
new log("buffer:" + obj["val"]);
}
break;
default:
break;
}
if (FACE) {
//trace("===");
//script.traceObject(obj);
if (FACE.hasOwnProperty(obj["name"])) {
FACE[obj["name"]](obj["val"]);
}
}
}
public function netStatus(status: String) {
//trace("-----++------", status);
new log("netStatus:" + status);
this.sendJS("netStatus", status)
switch (status) {
case "NetConnection.Connect.Closed": //针对rtmp流暂停后被关闭的操作
trace(C.CONFIG["flashvars"]["live"]);
if(vPlayer && vPlayer.vType=="rtmp" && C.CONFIG["flashvars"]["live"]==true){
break;
}
case "NetConnection.Connect.Failed":
case "NetStream.Play.StreamNotFound": //加载出错
videoError(C.CONFIG["flashvars"]["streamNotFound"] != "" ? C.CONFIG["flashvars"]["streamNotFound"] : C.CONFIG["language"]["error"]["streamNotFound"]);
break;
case "NetStream.Play.Start":
if (FACE) { //如果界面对象存在
FACE.showLoading(false);
FACE.showCenterPlay(false);
}
//M.showLoading(false);
//M.definition();
sendJS("loadedmetadata");
break;
case "NetStream.SeekStart.Notify":
case "NetStream.Seek.seeking":
videoState["seeking"] = true;
new log("netStream:seek start");
this.sendJS("seek", "start");
new log("netStream:seeking");
//listenerJs("seeking");
//M.showLoading();
break;
//case "NetStream.Seek.Notify":
case "NetStream.Seek.seeked":
case "NetStream.Seek.Complete":
videoState["seeking"] = false;
new log("netStream:seek ended");
this.sendJS("seek", "ended");
if (FACE) {
FACE.changeTimePlaySlider();
}
if (!firstPlay) {
videoPlay();
}
videoError();
//listenerJs("seeked");
//script.callJs(chplayer + ".resetTrack");
//videoPlay();
//M.showLoading(false);
break;
case "NetStream.Buffer.Empty": //开始缓冲
break;
case "NetStream.Pause.Notify": //暂停状态
videoState["paused"] = true;
//listenerJs("pause");
sendJS("loadedmetadata");
if (FACE) {
FACE.changeTimePlaySlider();
}
//if(newElement){
// newElement.changePauseded(true);
//}
break;
case "NetStream.Unpause.Notify":
//return;
videoState["paused"] = false;
closePauseAd();
//listenerJs("play");
sendJS("loadedmetadata");
videoError();
break;
case "NetStream.Buffer.Full": //缓冲完成,进行播放
//videoState["seeking"] = false;
//new log("netStream:seek ended");
//this.sendJS("seek","ended");
new log("netStream:buffer");
sendJS("buffer", 100);
new log("buffer:100");
videoError();
if (FACE) {
FACE.changeTimePlaySlider();
}
//M.showLoading(false);
break;
case "NetStream.Play.Stop": //播放完毕
ended();
break;
default:
break;
}
}
//-----------------------------------------------------------------------可交互动作---------------------------------------------
public function videoSeek(time: Number = 0, face: Boolean = true): void {
if (!firstPlay) {
new log("seekTime:" + time);
this.sendJS("seekTime", time);
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
//videoPlay();
vPlayer.videoSeek(time);
if (timeSeek == -1) {
timeSeek = time;
}
if (face && FACE) {
FACE.timePlaySliderChange(time);
}
}
} else {
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
vPlayer.firstSeek = time;
}
if (face && FACE) {
FACE.timePlaySliderChange(0);
}
videoPlay();
}
}
public function backLive(): void {
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
vPlayer.backLive();
}
}
public function videoPlay(): void {
trace("执行了main:videoPlay");
//隐藏封面图
if (errorShow) {
return;
}
trace("第一次播放", firstPlay);
if (firstPlay) {
if (posterFun) { //如果有封面图片,则隐藏
posterFun.hide();
posterFun = null;
}
//隐藏loading和centerPlay
if (FACE) { //如果界面对象存在
FACE.showLoading(false);
FACE.showCenterPlay(false);
}
}
//如果广告正在播放
//trace("adPlayClass",adPlayClass);
if (adPlayClass != null) {
new log("process:" + adPlayClass.STYLE + " ad ended");
this.sendJS(adPlayClass.STYLE + "Ad", "ended");
adPlayClass.close();
adPlayClass = null;
} else {
//trace(adUrl , adFrontPlayed && adUrl.hasOwnProperty("front") , adUrl["front"]);
if (adUrl && !adFrontPlayed && adUrl.hasOwnProperty("front") && adUrl["front"]) { //如果前置广告没有播放而又有前置广告则播放前置广告
trace("需要播放前置");
closePauseAd();
frontAdPlay()
return;
}
}
if (vPlayer) { //如果播放对象存在
if (vPlayer.haveNetStream()) { //如果播放对象存在流,则播放
vPlayer.videoPlay();
new log("netStream:play");
this.sendJS("play");
this.sendJS("paused", false);
if (!otherInterVal) {
otherInterVal = new timeInterval(1000, otherInterValHandler);
otherInterVal.start();
}
} else { //如果不存在,则设置成加载完自动播放
vPlayer.NOPLAY = false;
}
} else {
noPlay = false;
newPlayer();
}
if (FACE) {
FACE.showCenterPlay(false);
FACE.showButton("pause");
FACE.showButton("play", false);
}
firstPlay = false;
adInsertPlayed = false;
//trace("执行了:videoPlay==");
if (element) {
element.changePauseded(false);
}
}
public function videoPause(b: Boolean = true): void {
trace("执行了main:videoPause");
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
vPlayer.videoPause();
new log("netStream:pause");
this.sendJS("pause");
this.sendJS("paused", true);
if (FACE) {
FACE.showCenterPlay();
FACE.showButton("play");
FACE.showButton("pause", false);
}
}
if (element) {
element.changePauseded(true);
}
if (!firstPlay) {
closePauseAd();
}
if (b) {
adPausePlay();
}
}
public function playOrPause(): void {
if (vPlayer && vPlayer.haveNetStream()) {
if (vPlayer.getPaused()) {
videoPlay();
} else {
videoPause();
}
} else {
videoPlay();
}
}
public function changeVolume(vol: Number, face: Boolean = true): void {
//如果face=true,则调用face里的相关函数
//trace("调节音量:", vol);
nowVolume = vol;
if (vPlayer && vPlayer.haveNetStream()) {
vPlayer.changeVolume(vol);
new log("volume:" + vol);
this.sendJS("volume", vol);
//sendVolume
if (C.CONFIG["flashvars"]["variable"] != "") {
script.callJs(C.CONFIG["flashvars"]["variable"] + ".sendVolume", vol);
}
}
if (face && FACE) {
FACE.volumeSliderChange(vol);
}
}
public function videoMute(): void {
//trace("执行了:videoMute");
new log("mute:true");
this.sendJS("mute", true);
tempVolume = nowVolume;
nowVolume = 0;
changeVolume(0);
}
public function videoEscMute(): void {
//trace("执行了:videoEscMute");
new log("mute:false");
sendJS("mute", false);
if (tempVolume == 0) {
tempVolume = FLASHVARS["volume"];
}
if (tempVolume == 0) {
tempVolume = 0.8;
}
changeVolume(tempVolume);
}
public function adMute(): void {
//trace("执行了adMute");
new log("adMute:true");
this.sendJS("adMute", true);
if (adPlayClass) {
adPlayClass.adMute();
}
}
public function escAdMute(): void {
//trace("执行了adEscMute");
new log("adMute:false");
this.sendJS("adMute", false);
if (adPlayClass) {
adPlayClass.adMute(false);
}
}
public function videoBrightness(n: int = 0): void {
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
new log("videoBrightness:" + n);
this.sendJS("videoBrightness", n);
vPlayer.videoBrightness(n);
}
}
public function videoContrast(n: Number = 127.5): void {
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
new log("videoContrast:" + n);
this.sendJS("videoContrast", n);
vPlayer.videoContrast(n);
}
}
public function videoSaturation(n: int = 1): void {
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
new log("videoSaturation:" + n);
this.sendJS("videoSaturation", n);
vPlayer.videoSaturation(n);
}
}
public function videoHue(n: int = 0): void {
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
new log("videoHue:" + n);
this.sendJS("videoHue", n);
vPlayer.videoHue(n);
}
}
public function videoZoom(n: Number = 1): void {
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
new log("videoZoom:" + n);
this.sendJS("videoZoom", n);
vPlayer.videoZoom(n);
}
}
public function videoProportion(w: int = 0, h: int = 0): void {
if (vPlayer && vPlayer.haveNetStream() && !errorShow) {
new log("videoProportion:width" + w + ",height:" + h);
this.sendJS("videoProportion", {
width: w,
height: h
});
vPlayer.videoProportion(w, h);
}
}
public function videoError(error: String = ""): void {
if (error) {
errorShow = true;
if (vPlayer) {
vPlayer.clear();
}
} else {
errorShow = false;
}
if (FACE) {
if (error) {
new log("error:" + error);
this.sendJS("error", error);
//trace(vPlayer["ddd"]["=="]);
//trace(error);
FACE.errorShow(error);
if (posterFun) {
posterFun.hide();
}
} else {
FACE.errorShow("");
}
}
}
public function volumeDown(): void {
nowVolume -= C.CONFIG["config"]["volumeJump"];
if (nowVolume < 0) {
nowVolume = 0;
}
changeVolume(nowVolume);
}
public function volumeUp(): void {
nowVolume += C.CONFIG["config"]["volumeJump"];
changeVolume(nowVolume);
}
public function fastBack(): void { //快退
if (timeTotal == 0) {
return;
}
var value: Number = 0;
if (time - C.CONFIG["config"]["timeJump"] >= 0) {
value = time - C.CONFIG["config"]["timeJump"];
} else {
value = 0;
}
if (!isFast(value)) {
return;
}
videoSeek(value);
new log("fastBack:" + value);
this.sendJS("fastBack", value);
}
public function fastNext(): void { //快进
if (timeTotal == 0) {
return;
}
var value: Number = 0;
if (time + C.CONFIG["config"]["timeJump"] <= timeTotal) {
value = (time + C.CONFIG["config"]["timeJump"]);
} else if (timeTotal > 0) {
value = timeTotal;
}
if (!isFast(value)) {
return;
}
videoSeek(value);
new log("fastNext:" + value);
this.sendJS("fastNext", value);
}
private function isFast(value: Number = 0): Boolean {
switch (C.CONFIG["config"]["timeScheduleAdjust"]) {
case 0:
return false;
break;
case 2:
if (value < time) {
return false;
}
break;
case 3:
if (value > time) {
return false;
}
break;
case 4:
//trace(timeSeek);
if (timeSeek > -1) {
if (value < timeSeek) {
return false;
}
} else {
if (value < time) {
return false;
}
}
break;
case 5:
if (value > timeMax) {
return false;
}
break;
}
return true;
}
public function videoRotation(r: Number = 0): Object { //旋转
if (vPlayer && vPlayer.haveNetStream()) {
vPlayer.videoRotation(r);
new log("videoRotation:" + r);
this.sendJS("videoRotation", r);
}
return null;
}
public function adPlay(): void {
if (adPlayClass) {
adPlayClass.play();
}
}
public function adPause(): void {
if (adPlayClass) {
adPlayClass.pause();
}
}
public function controlBarIsShow(b: Boolean = true): void {
//监听控制栏是否隐藏
controlBarShow = b;
new log("controlBar:" + b.toString());
this.sendJS("controlBar", b);
if (vPlayer) {
vPlayer.controlBarIsShow(b);
}
}
public function getControlBarShow(): Boolean { //获取控制栏是否隐藏
return controlBarShow;
}
public function keyDownClock(b: Boolean): void {
isKeyClock = b;
}
//构建元件
public function addElement(obj: Object): String {
var n: int = 0;
if (FACE) {
n = FACE.getClickSpriteIndex();
}
if (!element) {
element = new newElement(stage, this, n);
}
var sp: Sprite = element.addelement(obj);
return sp.name;
}
public function getElement(name: String): Object {
if (element) {
return element.getElement(name);
}
return false;
}
public function deleteElement(name: String): void {
if (element) {
element.deleteElement(name);
}
}
public function elementShow(name:String="",bn:Boolean=true):void {
if (element) {
element.elementShow(name,bn);
}
}
public function animate(obj: Object): String {
if (element) {
return element.animate(obj);
}
return "";
}
public function animateResume(name: String = ""): void {
if (element) {
element.animateResume(name);
}
}
public function animatePause(name: String = ""): void {
if (element) {
element.animatePause(name);
}
}
public function deleteAnimate(name: String = ""): void {
if (element) {
element.deleteAnimate(name);
}
}
public function copy(k: String = ""): void { //复制flashvars里的值
if (!FLASHVARS.hasOwnProperty(k)) {
new log(k + " is not present in the flashvars");
return;
}
Clipboard.generalClipboard.clear();
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, FLASHVARS[k], false);
}
//共用的触发事件
public function clickEvent(call: String = ""): void {
sendJS("clickEvent",call);
if (call == "none" || call == "" || call == null) {
return;
}
var callArr: Array = call.split("->");
if (callArr.length == 2) {
var callM: String = callArr[0];
var callE: String = callArr[1];
//trace(callE,callM);
if (!callE) {
return;
}
var val: String = "";
var eArr: Array = [];
switch (callM) {
case "actionScript":
//trace(THIS.hasOwnProperty(callE));
if (callE.indexOf("(") > -1) {
eArr = callE.split("(");
callE = eArr[0];
val = script.strReplace(eArr[1], [")"], [""]);
}
if (this.hasOwnProperty(callE)) {
if (val == "") {
this[callE]();
} else {
eArr = val.split(",");
switch (eArr.length) {
case 1:
this[callE](eArr[0]);
break;
case 2:
this[callE](eArr[0], eArr[1]);
break;
case 3:
this[callE](eArr[0], eArr[1], eArr[2]);
break;
case 4:
this[callE](eArr[0], eArr[1], eArr[2], eArr[3]);
break;
case 5:
this[callE](eArr[0], eArr[1], eArr[2], eArr[3], eArr[4]);
break;
case 6:
this[callE](eArr[0], eArr[1], eArr[2], eArr[3], eArr[4], eArr[5]);
break;
default:
this[callE]();
break;
}
}
}
break;
case "javaScript":
if (callE.substr(0, 11) == "[flashvars]") {
callE = script.strReplace(callE, ["[flashvars]"], [""]);
if (FLASHVARS.hasOwnProperty(callE)) {
callE = FLASHVARS[callE];
} else {
break;
}
}
if (callE.indexOf("(") > -1) {
eArr = callE.split("(");
callE = eArr[0];
val = script.strReplace(eArr[1], [")"], [""]);
}
new log("callJs:" + callE + "(" + val + ")");
if (val == "") {
script.callJs(callE);
} else {
script.callJs(callE, val);
}
break;
case "link":
var callLink: Array = (callE + ",").split(",");
if (callLink[0].substr(0, 11) == "[flashvars]") {
var fl: String = script.strReplace(callLink[0], ["[flashvars]"], [""]);
if (FLASHVARS.hasOwnProperty(fl)) {
callLink[0] = FLASHVARS[fl];
} else {
break;
}
}
script.openLink(callLink[0], callLink[1]);
break;
default:
break;
}
}
}
//==============================================修改config
public function changeConfig(...arg): Boolean {
var obj: Object = C.CONFIG;
var i: int = 0;
if (script.getType(arg[0]) == "object") {
var bj: Object = arg[0];
arg = [];
for (var k: String in bj) {
arg.push(bj[k]);
}
}
for (i = 0; i < arg.length - 1; i++) {
if (obj.hasOwnProperty(arg[i])) {
obj = obj[arg[i]];
} else {
return false;
}
}
obj = arg[arg.length - 1];
switch (arg.length) {
case 2:
C.CONFIG[arg[0]] = obj;
break;
case 3:
C.CONFIG[arg[0]][arg[1]] = obj;
break;
case 4:
C.CONFIG[arg[0]][arg[1]][arg[2]] = obj;
break;
case 5:
C.CONFIG[arg[0]][arg[1]][arg[2]][arg[3]] = obj;
break;
case 6:
C.CONFIG[arg[0]][arg[1]][arg[2]][arg[3]][arg[4]] = obj;
break;
case 7:
C.CONFIG[arg[0]][arg[1]][arg[2]][arg[3]][arg[4]][arg[5]] = obj;
break;
case 8:
C.CONFIG[arg[0]][arg[1]][arg[2]][arg[3]][arg[4]][arg[5]][arg[6]] = obj;
break;
case 9:
C.CONFIG[arg[0]][arg[1]][arg[2]][arg[3]][arg[4]][arg[5]][arg[6]][arg[7]] = obj;
break;
case 10:
C.CONFIG[arg[0]][arg[1]][arg[2]][arg[3]][arg[4]][arg[5]][arg[6]][arg[7]][arg[8]] = obj;
break;
default:
return false;
break;
}
//script.traceObject(CONFIG["flashvars"]);
if (vPlayer) {
vPlayer.changeConfig();
}
if (FACE) {
FACE.changeConfig();
}
if (element) {
element.changeConfig();
}
if (otherAd) {
for (i = 0; i < otherAd.length; i++) {
if (otherAd[i] != null) {
otherAd[i].changeConfig();
}
}
}
new log("configChange");
new log(C.CONFIG);
this.sendJS("configChange", C.CONFIG);
return true;
}
//获取config
public function getConfig(...arg): * {
if (script.getType(arg[0]) == "object") {
var bj: Object = arg[0];
arg = [];
for (var k: String in bj) {
arg.push(bj[k]);
}
}
var obj: Object = C.CONFIG;
for (var i: int = 0; i < arg.length; i++) {
if (obj.hasOwnProperty(arg[i])) {
obj = obj[arg[i]];
} else {
return null;
break;
}
}
return obj;
}
//打开广告链接
public function openAdLink(): void {
if (adPlayClass) {
adPlayClass.openAdLink();
}
}
//结束
public function ended(): void {
//new log("enddd");
//trace("结束播放",!adEndPlayed ,adUrl.hasOwnProperty("end") , adUrl["end"]);
new log(adUrl);
if (adUrl && !adEndPlayed && adUrl.hasOwnProperty("end")) { //如果结束广告没有播放而又有结束广告则播放结束广告
if (adUrl["end"]) {
videoPause();
endAdPlay();
return;
}
}
adEndPlayed = false;
if (adEndPlayed) {
new log("process:End ad ended");
this.sendJS("endAd", "ended");
}
trace("1429-videoPause");
videoPause();
this.sendJS("ended");
new log("process:Ended");
if (FLASHVARS["loop"]) {
if (vPlayer && vPlayer.haveNetStream()) {
adEndPlayed = false;
videoSeek(0);
}
}
}
//清除视频
public function videoClear(): void {
var i: int = 0;
if (vPlayer) {
vPlayer.clear();
vPlayer = null;
}
if (adPlayClass) {
adPlayClass.close();
adPlayClass = null;
}
if (otherPlay.length > 0) {
for (i = 0; i < otherPlay.length; i++) {
otherPlay[i].close();
otherPlay[i] = null;
}
}
if (posterFun) {
posterFun.hide();
posterFun = null;
}
if (FACE) {
FACE.clear();
}
//重置初始化数据
videoUrl = null; //视频地址
adUrl = null; //广告地址
autoPlay = false; //是否自动播放
noPlay = false; //加载完但不播放(因为前置广告在播放,或默认加载没有前置广告但默认暂停)
autoLoad = false; //默认加载
firstPlay = false; //是否第一次播放
adName = "";
adFrontPlayed = false; //前置广告是否播放了
adInsertPlayed = false; //插入广告是否在播放
adEndPlayed = false; //结束广告是否播放了
insertTimeArr = null; //插入广告的开始时间数组
insertPlay = []; //插入广告保存是否播放的数组
otherTimeArr = null; //其它广告的开始时间数组
otherAdArr = []; //其它广告数组
otherPlay = []; //其它广告保存是否播放的数组
otherAd = []; //其它广告数组
//
time = 0; //当前播放时间
timeTotal = 0;
new log("videoClear");
this.sendJS("videoClear");
}
//播放新视频
public function newVideo(obj: * ): void {
videoClear();
new log("videoChange");
this.sendJS("videoChange");
var newObj: Object = {};
var type: String = script.getType(obj);
switch (type) {
case "string":
case "array":
newObj = {
video: obj
};
break;
case "object":
if (obj.hasOwnProperty("video")) {
newObj = obj;
} else {
newObj = {
video: obj
};
}
break;
default:
new log("error:newVideo error");
break;
}
C.CONFIG["flashvars"] = script.simpleMergeObject(C.CONFIG["flashvars"], newObj);
C.CONFIG["flashvars"]["volume"] = nowVolume;
newVideoTimeOut = new timeOut(200, into);
}
public function getStatus(): Object {
return getMetaDate();
}
public function getMetaDate(): Object {
//获取播放器状态
var objTemp: Object = {};
var obj: Object = {
width: stage.stageWidth,
height: stage.stageHeight,
controlBarShow: controlBarShow
};
if (vPlayer && vPlayer.haveNetStream()) {
objTemp = vPlayer.getStatus();
obj = script.simpleMergeObject(obj, objTemp);
}
return obj;
}
public function getCurrentSrc():String{
if (vPlayer) {
return vPlayer.getCurrentSrc();
}
return "";
}
//自定义插件
public function custom(...arg): void {
if (script.getType(arg[0]) == "object") {
var bj: Object = arg[0];
arg = [];
for (var k: String in bj) {
arg.push(bj[k]);
}
}
if (FACE) {
FACE.custom(arg);
}
}
//注册外部监听函数
public function addListenerJS(...arg) {
listenerArr = script.addListenerArr(listenerArr, arg[0], arg[1]);
new log("javascript.addListener:" + arg[0] + "," + arg[1]);
//new log(listenerArr);
}
//删除外部监听函数
public function removeListenerJS(...arg) {
listenerArr = script.removeListenerArr(listenerArr, arg[0], arg[1]);
new log("javascript.removeListener" + arg[0] + "," + arg[1]);
//new log(listenerArr);
}
public function addListener(...arg): void {
if (arg.length == 2) {
if (FACE) {
FACE.addListener(arg[0], arg[1]);
}
new log("actionscript.addListener:" + arg[0] + "," + arg[1]);
} else {
if (FACE) {
FACE.addListener(arg[1], arg[2]);
}
new log("actionscript.addListener:" + arg[0] + "," + arg[1] + "," + arg[2]);
}
}
public function removeListener(...arg): void {
if (arg.length == 2) {
if (FACE) {
FACE.removeListener(arg[0], arg[1]);
}
new log("actionscript.removeListener:" + arg[0] + "," + arg[1]);
} else {
if (FACE) {
FACE.removeListener(arg[1], arg[2]);
}
new log("actionscript.removeListener:" + arg[0] + "," + arg[1] + "," + arg[2]);
}
}
public function resizeHandler(event: Event): void {
var obj: Object = {
width: stage.stageWidth,
height: stage.stageHeight
}
this.sendJS("resize", obj);
new log("resize");
new log(obj);
}
public function enterFrameHandler(event: Event): void {
var coor:Object={
x: mouseX,
y: mouseY
};
if(mouseCoorObj["x"]!=mouseX && mouseCoorObj["y"]!=mouseY){
sendJS("mouse", coor);
mouseCoorObj=coor;
}
}
private function wheelHandler(event: MouseEvent): void {
var n: int = int(event.delta);
sendJS("wheel", n);
}
public function sendJS(name: String, value: *= null): void {
//trace(name,value);
if (name) {
//第一步向swf插件里发送
if (FACE) {
FACE.sendJS(name, value);
}
if (listenerArr.length == 0) {
return;
}
for (var i: int = 0; i < listenerArr.length; i++) {
var arr: Array = listenerArr[i];
if (arr[0] == name) {
if(C.CONFIG["flashvars"]["variable"]){
script.callJs(arr[1], value,C.CONFIG["flashvars"]["variable"])
}
else{
script.callJs(arr[1], value)
}
}
}
}
}
public function openUrl(url: String, target: String = '_blank', features: String = ""): void {
script.openLink(url, target, features)
}
//============================================================================================================================
//注册外部控制函数
private function addCallback(): void {
if (!ExternalInterface.available) {
//new log("addCallback error");
return;
}
new log("register addCallback");
var i: int = 0;
var ac: String = C.CONFIG["config"]["addCallback"];
var crr: Array = ac.split(",");
var arr: Array = [];
for (i = 0; i < crr.length; i++) {
switch (crr[i]) {
case "getStatus":
arr.push([crr[i], getMetaDate]);
break;
case "addListener":
arr.push([crr[i], addListenerJS]);
break;
case "removeListener":
arr.push([crr[i], removeListenerJS]);
break;
default:
try{
arr.push([crr[i], this[crr[i]]]);
}
catch(event:ErrorEvent){
}
break;
}
}
arr.push(["getVersion", getVersion]);
for (i = 0; i < arr.length; i++) {
ExternalInterface.addCallback(arr[i][0], arr[i][1]);
}
}
//控制控制栏隐藏
public function changeControlBarShow(show: Boolean = true): void {
if (FACE) {
FACE.changeControlBarShow(show);
}
}
//获取内部版本
public function getVersion(): String {
return C.VERSION;
}
//截图功能
public function screenshot(obj: String, save: Boolean = false, name: String = ""): void {
if (vPlayer) {
vPlayer.screenshot(obj, save, name);
}
}
//接受截图监听
public function screenshotJS(obj: String, save: Boolean, name: String, base64: String) {
new log(name + ":" + base64);
this.sendJS("screenshot", {
object: obj,
save: save,
name: name,
base64: base64
});
}
//============================================================================================================================
public function switchFull(): void { //操作全屏/退出全屏
switch (stage.displayState) {
case "normal":
if (C.CONFIG["fullInteractive"] == "true") {
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
} else {
stage.displayState = "fullScreen";
}
break;
default:
stage.displayState = "normal";
break;
}
if (FACE) {
FACE.checkFullScreen();
}
}
public function fullScreen(): void {
switch (stage.displayState) {
case "normal":
if (C.CONFIG["fullInteractive"] == "true") {
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
} else {
stage.displayState = "fullScreen";
}
break;
}
if (FACE) {
FACE.checkFullScreen();
}
}
public function quitFullScreen(): void {
switch (stage.displayState) {
case "fullScreen":
stage.displayState = "normal";
break;
}
if (FACE) {
FACE.checkFullScreen();
}
}
//===================================================按下键盘事件
private function keyDownHandler(event: KeyboardEvent): void {
if (isKeyClock) {
return;
}
var now: Number = 0;
var keyDown: Object = C.CONFIG["config"]["keyDown"];
//trace("按键", event.keyCode);
this.sendJS("keyDown", event.keyCode);
new log("keyDown:" + event.keyCode);
switch (event.keyCode) {
case 32:
if (adInsertPlayed || (firstPlay && adFrontPlayed) || adEndPlayed) { //如果正在播放插入广告
break;
}
if (keyDown["space"]) {
playOrPause();
}
break;
case 37: //左
if (adInsertPlayed || (firstPlay && adFrontPlayed) || adEndPlayed) { //如果正在播放插入广告
break;
}
if (keyDown["left"]) {
fastBack();
}
break;
case 39: //右
if (adInsertPlayed || (firstPlay && adFrontPlayed) || adEndPlayed) { //如果正在播放插入广告
break;
}
if (keyDown["right"]) {
fastNext();
}
break;
case 38: //上
if (keyDown["up"]) {
volumeUp();
}
break;
case 40: //下
if (keyDown["down"]) {
volumeDown();
}
break;
}
}
}
}