⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 captionsview.as

📁 FLASH 个人主页代码
💻 AS
字号:
/**
* Captions display management of the players MCV pattern.
*
* @author	Jeroen Wijering
* @version	1.2
**/


import com.jeroenwijering.players.*;
import com.jeroenwijering.utils.CaptionsParser;
import flash.filters.DropShadowFilter;


class com.jeroenwijering.players.CaptionsView extends AbstractView { 


	/** The current volume **/
	private var parser:CaptionsParser;
	/** The captions array **/
	private var captions:Array;
	/** The current elapsed time **/
	private var currentTime:Number;
	/** The captions textfield **/
	private var clip:MovieClip;


	/** Constructor, loads caption file. **/
	function CaptionsView(ctr:AbstractController,cfg:Object,fed:Object) {
		super(ctr,cfg,fed);
		var ref = this;
		Stage.addListener(this);
		parser = new CaptionsParser();
		parser.onParseComplete = function() {
			this.parseArray.sortOn("bgn",Array.NUMERIC);
			ref.captions = this.parseArray;
			delete this;
		}
		clip = config["clip"].captions;
		setDimensions();
	};


	/** onLoad override, sets capture sizes. **/
	private function setDimensions() {
		clip.txt.autoSize = "center";
		clip.bck._height = clip.txt._height + 10;
		if(Stage["displayState"] == "fullScreen") {
			clip._width = Stage.width;
			clip._yscale= clip._xscale;
			clip._y = Stage.height - clip._height;
		} else {
			clip._width = config["displaywidth"];
			clip._yscale = clip._xscale;
			clip._y = config["displayheight"] - clip._height;
		}
		if(System.capabilities.version.indexOf("7,0,") == -1) {
			var blr = 2 + Math.round(clip._yscale/100);
			var flt = new flash.filters.DropShadowFilter(
				0,0,0x000000,1,blr,blr,50,2);
			clip.filters = new Array(flt);
		}
	};


	/** parse a new captions file every time an item is set **/
	private function setItem(idx:Number) {
		if(feeder.feed[idx]["captions"] == undefined) {
			captions = new Array();
			clip.bck._alpha = 0;
		} else {
			parser.parse(feeder.feed[idx]["captions"]);
		}
	};


	/** Check elapsed time, evaluate captions every second. **/
	private function setTime(elp:Number,rem:Number) {
		if(Math.round(elp) != currentTime) {
			currentTime = Math.round(elp);
			setCaption();
		}
	};


	/** Check if a new caption should be displayed **/
	private function setCaption() {
		var nxt:Number = captions.length;
		for (var i=0; i<captions.length; i++) {
			if(captions[i]["bgn"] > currentTime) {
				nxt = i;
				break;
			}
		}
		if(captions[nxt-1]["bgn"] + captions[nxt-1]["dur"] > currentTime) {
			clip.txt.htmlText = captions[nxt-1]["txt"];
			if(System.capabilities.version.indexOf("7,0,") > -1) {
				clip.bck._alpha = 50;
				clip.bck._height = Math.round(clip.txt._height + 10);
			} else {
				clip.bck._height = Math.round(clip.txt._height + 15);
			}
			if(Stage["displayState"] == "fullScreen") {
				clip._y = Stage.height - clip._height;
			} else {
				clip._y = config["displayheight"] - clip._height;
			}
		} else {
			clip.txt.htmlText = "";
		}
	};


	/** OnResize Handler: catches stage resizing **/
	public function onResize() { setDimensions(); };


	/** Catches fullscreen escape  **/
	public function onFullScreen(fs:Boolean) { 
		if(fs == false) { setDimensions(); }
	};


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -