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

📄 playlistview.as

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


import com.jeroenwijering.players.*;
import com.jeroenwijering.utils.Scroller;
import com.jeroenwijering.utils.ImageLoader;


class com.jeroenwijering.players.PlaylistView extends AbstractView 
	implements com.jeroenwijering.feeds.FeedListener { 


	/** ImageLoader **/
	private var thumbLoader:ImageLoader;
	/** Scroller instance **/
	private var listScroller:Scroller;
	/** Position of the playlist **/
	private var listRight:Boolean;
	/** Position of the playlist **/
	private var listWidth:Number;
	/** number of items in the playlist **/
	private var listLength:Number;
	/** Currently highlighted playlist item **/
	private var currentItem:Number;


	/** Constructor **/
	function PlaylistView(ctr:AbstractController,cfg:Object,fed:Object) { 
		super(ctr,cfg,fed);
		if(config["displaywidth"] < config["width"]) { 
			listRight = true;
			listWidth = config["width"]-config["displaywidth"]-1;
		} else {
			listRight = false;
			listWidth = config["width"];
		}
		setButtons();
		Stage.addListener(this);
		feeder.addListener(this);
	};


	/** OnLoad event handler; sets up the playlist sizes and colors. **/
	private function setButtons() {
		var ref = this;
		var tgt = config["clip"].playlist;
		tgt.btn._visible = false;
		for (var i=99; i >=0; i--) { tgt["btn"+i].removeMovieClip(); }
		// iterate playlist and setup each button
		listLength = feeder.feed.length;
		for(var i=0; i<feeder.feed.length; i++) {
			// set text and background
			tgt.btn.duplicateMovieClip("btn"+i,i);
			tgt["btn"+i].txt._width = listWidth - 20;
			tgt["btn"+i].col = new Color(tgt["btn"+i].bck);
			tgt["btn"+i].col.setRGB(config["frontcolor"]);
			tgt["btn"+i].col2 = new Color(tgt["btn"+i].icn);
			tgt["btn"+i].col2.setRGB(config["frontcolor"]);
			tgt["btn"+i].bck._width = listWidth;
			tgt["btn"+i].bck.onRollOver = function() { 
				this._parent.txt.textColor = ref.config["backcolor"];
				this._parent.col.setRGB(ref.config["lightcolor"]);
				this._parent.col2.setRGB(ref.config["backcolor"]);
				if(ref.currentItem != this._parent.getDepth()) {
					this._alpha = 90;
				}
			};
			tgt["btn"+i].bck.onRollOut = function() { 
				this._parent.col.setRGB(ref.config["frontcolor"]);
				if(ref.currentItem != this._parent.getDepth()) {
					this._parent.txt.textColor=ref.config["frontcolor"];
					this._parent.col2.setRGB(ref.config["frontcolor"]);
					this._alpha = 10;
				}
			};
			tgt["btn"+i].bck.onRelease = function() {
				ref.sendEvent("playitem",this._parent.getDepth());
			};
			// set thumbnails
			if(config["thumbsinplaylist"] == "true") {
				tgt["btn"+i].bck._height = 40;
				tgt["btn"+i].icn._y += 9;
				tgt["btn"+i]._y = i*41;
				tgt["btn"+i].txt._height += 20;
				if(feeder.feed[i]["author"]  == undefined) {
					tgt["btn"+i].txt.htmlText = "<b>"+(i+1)+"</b>:<br />"+
						feeder.feed[i]["title"];
				} else {
					tgt["btn"+i].txt.htmlText = "<b>"+feeder.feed[i]["author"]+
						"</b>:<br />"+feeder.feed[i]["title"];
				}
				if(feeder.feed[i]["image"] != undefined) {
					tgt["btn"+i].txt._x += 60;
					tgt["btn"+i].txt._width -= 60;
					thumbLoader = new ImageLoader(tgt["btn"+i].img,"true",60,40);
					thumbLoader.loadImage(feeder.feed[i]["image"]);
					tgt["btn"+i].img.setMask(tgt["btn"+i].msk);
				} else {
					tgt["btn"+i].msk._height = 10;
					tgt["btn"+i].img._visible = 
					tgt["btn"+i].msk._visible = false;
				}
			} else {
				tgt["btn"+i]._y = i*23;
				if(feeder.feed[i]["author"]  == undefined) {
					tgt["btn"+i].txt.htmlText = feeder.feed[i]["title"];
				} else {
					tgt["btn"+i].txt.htmlText = feeder.feed[i]["author"] +
						" - " + feeder.feed[i]["title"];
				}
				tgt["btn"+i].msk._height = 10;
				tgt["btn"+i].img._visible = tgt["btn"+i].msk._visible = false;
			}
			tgt["btn"+i].txt.textColor = config["frontcolor"];
			// set link icon
			if(feeder.feed[i]["link"] != undefined) {
				tgt["btn"+i].txt._width -= 20;
				tgt["btn"+i].icn._x = listWidth - 24;
				tgt["btn"+i].icn.onRollOver = function() { 
					this._parent.col2.setRGB(ref.config["lightcolor"]);
				};
				tgt["btn"+i].icn.onRollOut = function() { 
					if(ref.currentItem == this._parent.getDepth()) {
					this._parent.col2.setRGB(ref.config["backcolor"]);
					} else {
					this._parent.col2.setRGB(ref.config["frontcolor"]);
					}
				};
				tgt["btn"+i].icn.onPress = function() { 
					ref.sendEvent("getlink",this._parent.getDepth());
				};
			} else { 
				tgt["btn"+i].icn._visible = false;
			}
		}
		// setup mask and scrollbar if needed
		var msk = config["clip"].playlistmask;
		if(listRight == true) { 
			msk._x = tgt._x = Number(config["displaywidth"]) + 1;
			msk._y = tgt._y = 0;
			msk._height =  config["displayheight"];
		} else {
			msk._y = tgt._y = Number(config["displayheight"]) + 19;
			msk._height = Number(config["height"]) - 
				Number(config["displayheight"]) - 19;
			if(config["largecontrols"] == "true") { 
				msk._y+=20;
				tgt._y+=20;
				msk._height -= 20;
			}
		}
		msk._width = listWidth;
		tgt.setMask(msk);
		if(tgt._height > msk._height + 2 && feeder.feed.length > 1) {
			if(config["autoscroll"] == "false") {
				msk._width -= 10;
				for(var i=0; i<feeder.feed.length; i++) {
					tgt["btn"+i].bck._width -= 10;
					tgt["btn"+i].icn._x -= 10;
				}
				listScroller = new Scroller(tgt,msk,false,
					config["frontcolor"],config["lightcolor"]);
			} else {	
				listScroller = new Scroller(tgt,msk,true,
					config["frontcolor"],config["lightcolor"]);
			}
		}
	};


	/** Set a new item as the current playing one **/
	private function setItem(itm:Number):Void {
		var tgt = config["clip"].playlist;
		tgt["btn"+currentItem].col.setRGB(config["frontcolor"]);
		tgt["btn"+currentItem].bck._alpha = 10;
		tgt["btn"+currentItem].col2.setRGB(config["frontcolor"]);
		tgt["btn"+currentItem].txt.textColor = config["frontcolor"];
		currentItem = itm;
		tgt["btn"+currentItem].txt.textColor = config["backcolor"];
		tgt["btn"+currentItem].col2.setRGB(config["backcolor"]);
		tgt["btn"+currentItem].bck._alpha = 90;
		if(config["autoscroll"] == "false") {
			listScroller.scrollTo(tgt["btn"+currentItem]._y);
		}
	};


	/** Hide the scrollbar on fullscreen **/
	public function onFullScreen(fs:Boolean) {
		if(listScroller == undefined) {
			break;
		} else if(fs == true) {
			config["clip"].scrollbar._visible = false;
		} else {
			config["clip"].scrollbar._visible = true; 
		}
	};


	/** Render a new playlist when the feed updates **/
	public function onFeedUpdate() {
		var tgt = config["clip"].playlist;
		for(var i=0; i<feeder.feed.length; i++) {
			tgt["btn"+i].removeovieclip();
		}
		listScroller.purgeScrollbar();
		setButtons();
		setItem(currentItem);
	};


}

⌨️ 快捷键说明

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