pickles/static/contrib/mediaplayer-3.15/source/com/jeroenwijering/players/PlayerController.as

235 lines
No EOL
5.5 KiB
ActionScript
Executable file

/**
* User input management of the players MCV pattern.
*
* @author Jeroen Wijering
* @version 1.12
**/
import com.jeroenwijering.players.AbstractController;
import com.jeroenwijering.utils.Randomizer;
class com.jeroenwijering.players.PlayerController extends AbstractController {
/** use SharedObject to save current file, item and volume **/
private var playerSO:SharedObject;
/** save independent mute state **/
private var muted:Boolean;
/** Constructor, save arrays and set currentItem. **/
function PlayerController(cfg:Object,fed:Object) {
super(cfg,fed);
playerSO = SharedObject.getLocal("com.jeroenwijering.players", "/");
};
/** Complete the build of the MCV cycle and start flow of events. **/
public function startMCV(mar:Array) {
if(mar != undefined) { registeredModels = mar; }
itemsPlayed = 0;
if(config["shuffle"] == "true") {
randomizer = new Randomizer(feeder.feed);
currentItem = randomizer.pick();
} else {
currentItem = 0;
}
sendChange("item",currentItem);
if(config["autostart"] == "muted") {
sendChange("volume",0);
} else {
sendChange("volume",Number(config["volume"]));
}
if(config["usecaptions"] == "false") {
config["clip"].captions._visible = false;
config["clip"].controlbar.cc.icn._alpha = 40;
}
if(config["useaudio"] == "false") {
config["clip"].audio.setStop();
config["clip"].controlbar.au.icn._alpha = 40;
}
if(config["autostart"] == "false") {
sendChange("pause",feeder.feed[currentItem]['start']);
isPlaying = false;
} else {
sendChange("start",feeder.feed[currentItem]['start']);
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) {
setPlayitem(feeder.feed.length - 1);
} else {
setPlayitem(currentItem-1);
}
};
/** Play next item. **/
private function setNext() {
if(currentItem == feeder.feed.length - 1) {
setPlayitem(0);
} else {
setPlayitem(currentItem+1);
}
};
/** 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) {
if(isPlaying == true) {
sendChange("start",prm);
} else {
sendChange("pause",prm);
}
};
/** Play a new item. **/
private function setPlayitem(itm:Number) {
if(itm != currentItem) {
itm > feeder.feed.length-1 ? itm = feeder.feed.length-1: null;
if(feeder.feed[currentItem]['file'] != feeder.feed[itm]['file']) {
sendChange("stop");
}
currentItem = itm;
sendChange("item",itm);
}
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]['type'] == "rtmp" ||
config["streamscript"] != undefined) {
sendChange("stop");
}
if(config["repeat"] == "false" || (config["repeat"] == "list"
&& itemsPlayed >= feeder.feed.length)) {
sendChange("pause",0);
isPlaying = false;
itemsPlayed = 0;
} else {
var itm;
if(config["shuffle"] == "true") {
itm = randomizer.pick();
} else if(currentItem == feeder.feed.length - 1) {
itm = 0;
} else {
itm = currentItem+1;
}
setPlayitem(itm);
}
};
/** 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) {
sendChange("stop");
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();
};
/** Audiotrack toggle **/
private function setAudio() {
if(config["useaudio"] == "true") {
config["useaudio"] = "false";
config["clip"].audio.setStop();
config["clip"].controlbar.au.icn._alpha = 40;
} else {
config["useaudio"] = "true";
config["clip"].audio.setStart();
config["clip"].controlbar.au.icn._alpha = 100;
}
playerSO.data.useaudio = config["useaudio"];
playerSO.flush();
};
/** Check volume percentage and forward to models. **/
private function setVolume(prm) {
if (prm < 0 ) { prm = 0; } else if (prm > 100) { prm = 100; }
if(prm == 0) {
if(muted == true) {
muted = false;
sendChange("volume",config['volume']);
} else {
muted = true;
sendChange("volume",0);
}
} else {
sendChange("volume",prm);
config['volume'] = prm;
playerSO.data.volume = config["volume"];
playerSO.flush();
muted = false;
}
};
}