📄 playercontroller.as
字号:
/**
* User input management of the players MCV pattern.
*
* @author Jeroen Wijering
* @version 1.5
**/
import com.jeroenwijering.players.*;
class com.jeroenwijering.players.PlayerController extends AbstractController {
/** use SharedObject to save current file, item and volume **/
private var playerSO:SharedObject;
/** Constructor, save arrays and set currentItem. **/
function PlayerController(cfg:Object,fed:Object) {
super(cfg,fed);
playerSO = SharedObject.getLocal("com.jeroenwijerin.players", "/");
if(playerSO.data.volume != undefined && _root.volume == undefined) {
config["volume"] = playerSO.data.volume;
}
if(playerSO.data.usecaptions != undefined &&
_root.usecaptions == undefined) {
config["usecaptions"] = playerSO.data.usecaptions;
}
};
/** Complete the build of the MCV cycle and start flow of events. **/
public function startMCV(mar:Array) {
registeredModels = mar;
sendChange("item",currentItem);
sendChange("volume",config["volume"]);
if(config["usecaptions"] == "false") {
config["clip"].captions._visible = false;
config["clip"].controlbar.cc.icn._alpha = 40;
}
if(config["autostart"] == "false" &&
feeder.feed[currentItem]["category"] != "commercial") {
sendChange("pause",0);
isPlaying = false;
} else {
sendChange("start",0);
isPlaying = true;
}
};
/** PlayPause switch **/
private function setPlaypause() {
if(isPlaying == true) {
isPlaying = false;
sendChange("pause");
} else {
isPlaying = true;
sendChange("start");
}
};
/** Play previous item. **/
private function setPrev() {
if(currentItem == 0) { var i:Number = feeder.feed.length - 1; }
else { var i:Number = currentItem-1; }
setPlayitem(i);
};
/** Play next item. **/
private function setNext() {
if(currentItem == feeder.feed.length - 1) { var i:Number = 0; }
else { var i:Number = currentItem+1; }
setPlayitem(i);
};
/** Stop and clear item. **/
private function setStop() {
sendChange("pause",0);
sendChange("stop");
sendChange("item",currentItem);
isPlaying = false;
};
/** Forward scrub number to model. **/
private function setScrub(prm) {
isPlaying == true ? sendChange("start",prm): sendChange("pause",prm);
};
/** Play a new item. **/
private function setPlayitem(itm:Number) {
if(itm != currentItem) {
sendChange("stop");
itm > feeder.feed.length-1 ? itm = feeder.feed.length-1: null;
currentItem = itm;
sendChange("item",itm);
}
if(feeder.feed[itm]["start"] == undefined) {
sendChange("start",0);
} else {
sendChange("start",feeder.feed[itm]["start"]);
}
currentURL = feeder.feed[itm]['file'];
isPlaying = true;
};
/** Get url from an item if link exists, else playpause. **/
private function setGetlink(idx:Number) {
if(feeder.feed[idx]["link"] == undefined) {
setPlaypause();
} else {
getURL(feeder.feed[idx]["link"],config["linktarget"]);
}
};
/** Determine what to do if an item is completed. **/
private function setComplete() {
itemsPlayed++;
if(feeder.feed[currentItem]["category"] == "commercial") {
setNext();
} else if(config["repeat"] == "false" || (config["repeat"] == "list"
&& itemsPlayed == feeder.feed.length)) {
sendChange("pause",0);
isPlaying = false;
itemsPlayed = 0;
} else {
if(config["shuffle"] == "true") {
var i:Number = randomizer.pick();
} else if(currentItem == feeder.feed.length - 1) {
var i:Number = 0;
} else {
var i:Number = currentItem+1;
}
setPlayitem(i);
}
};
/** Check volume percentage and forward to models. **/
private function setVolume(prm) {
if (prm < 0 ) { prm = 0; } else if (prm > 100) { prm = 100; }
if(config["volume"] == 0 && prm == 0) { prm = 80; }
config["volume"] = prm;
sendChange("volume",prm);
playerSO.data.volume = prm;
playerSO.flush();
};
/** Fullscreen switch function. **/
private function setFullscreen() {
if(Stage["displayState"] == "normal" &&
config["usefullscreen"] == "true") {
Stage["displayState"] = "fullScreen";
} else if (Stage["displayState"] == "fullScreen" &&
config["usefullscreen"] == "true") {
Stage["displayState"] = "normal";
} else if (config["fsbuttonlink"] != undefined) {
getURL(config["fsbuttonlink"],config["linktarget"]);
}
};
/** Captions toggle **/
private function setCaptions() {
if(config["usecaptions"] == "true") {
config["usecaptions"] = "false";
config["clip"].captions._visible = false;
config["clip"].controlbar.cc.icn._alpha = 40;
} else {
config["usecaptions"] = "true";
config["clip"].captions._visible = true;
config["clip"].controlbar.cc.icn._alpha = 100;
}
playerSO.data.usecaptions = config["usecaptions"];
playerSO.flush();
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -