`
dengzhi007
  • 浏览: 7885 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ImgPlayer控件

阅读更多
最近在学习JavaScript,试着写了一个图片播放器。
其实网上已经有各种各样的图片播放器了,我这个写得也不好,原理和别人的也差不多,就当作练习好了,希望能给初学者提供一点帮助!

简单介绍:ImgPlayer控件,可配置参数,支持自动播放、循环播放、显示设置和时间设置等。

使用方法:在html中创建一个(或多个)控件实例,与div(或td)绑定,代码如下:

<html> 
<head>
<title>ImgPlayer</title>
<link href="ImgPlayer.css" rel="stylesheet" type="text/css"/>
<script src="ImgPlayer.js" type="text/javascript"></script>
<script language="javascript">
<!--
window.onload=function(){
	var imgPlayer=new ImgPlayer();//创建控件实例
	imgPlayer.add("0.jpg");//添加图片
	imgPlayer.add("1.jpg");//添加图片
	imgPlayer.add("2.jpg");//添加图片
	imgPlayer.add("3.jpg");//添加图片
	imgPlayer.bind(document.getElementById('Player'));//绑定控件
}
-->
</script>
</head>
<body>
<div id="Player"><div>
</body> 
</html> 

ImgPlayer控件效果图:



上面效果是采用控件默认配置,我们也可以自定义参数如:

window.onload=function(){
	var imgPlayer=new ImgPlayer();//创建控件实例
	imgPlayer.add("0.jpg");//添加图片
	imgPlayer.add("1.jpg");//添加图片
	imgPlayer.add("2.jpg");//添加图片
	imgPlayer.add("3.jpg");//添加图片
	imgPlayer.setImgWidth(800);//设置图片宽度(默认为400px)
	imgPlayer.setImgHeight(600);//设置图片高度(默认为300px)
	imgPlayer.setAuto(true);//设置自动播放(默认为false)
	imgPlayer.setLoop(true);//设置循环播放(默认为false)
	imgPlayer.setShowMode(2);//设置显示模式(默认为0)(0:全部;1:图片和描述;2:图片)
	imgPlayer.setTime(1);//设置时间间隔(默认为3秒)
	imgPlayer.bind(document.getElementById('Player'));//绑定控件
}
注意:添加图片和配置参数必须在绑定控制之前完成。

ImgPlayer.css文件代码如下:

body { 
	font-size:12px;
}
input { 
	border-left: #7b9ebd 1px solid;
	padding-left: 2px;
	border-right: #7b9ebd 1px solid;
	padding-right: 2px;
	border-top: #7b9ebd 1px solid;
	padding-top: 2px;
	border-bottom: #7b9ebd 1px solid;
	padding-bottom: 2px;
	font-size: 12px;
	filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#cecfde);
	cursor: hand;
	color: black;
}
button { 
	border-left: #7b9ebd 1px solid;
	padding-left: 2px;
	border-right: #7b9ebd 1px solid;
	padding-right: 2px;
	border-top: #7b9ebd 1px solid;
	padding-top: 2px;
	border-bottom: #7b9ebd 1px solid;
	padding-bottom: 2px;
	font-size: 12px;
	filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#cecfde);
	cursor: hand;
	color: black;
}
PS:控件样式可根据具体需要自行修改.

控件源码在ImgPlayer.js文件中,代码如下:

/**
 * 名称:ImgPlayer
 * 用途:播放图片
 * 描述:作为控件使用,可配置参数,支持自动播放、循环播放和时间设置等
 * 设计:zhi.deng
 * 邮箱:dz_005@163.com
 * 日期:10 Sep 2009
 */
function ImgPlayer(){
	var imgPlayer = this;           
	this.cur = 0;					//当前图片索引
	this.isAuto = false;			//是否自动播放
	this.isLoop = false;			//是否循环播放
	this.showMode = 0;				//显示模式(0:全部;1:图片和描述;2:图片)
	this.time = 3;					//默认播放间隔时间
	this.minWidth = 400;			//图片最小宽度
	this.minHeight = 300;			//图片最小高度
	this.imgWidth = this.minWidth;  //图片宽度
	this.imgHeight = this.minHeight;//图片高度
	this.imgSrc = new Array();		//图片路径

	this.divPlayer = document.createElement("div");		//播放器总区域
	this.divScreen = document.createElement("div");		//播放器屏幕区域
	this.divControl = document.createElement("div");	//播放器控制区域
	this.divImage = document.createElement("div");		//图片显示区域
	this.divDesc = document.createElement("div");		//图片描述区域
	this.txtDesc = document.createElement("input");		//图片描述
	this.btnPlay = document.createElement("button");	//播放按钮
	this.btnStop = document.createElement("button");	//停止按钮
	this.btnBack = document.createElement("button");	//上一页按钮
	this.btnNext = document.createElement("button");	//下一页按钮
	this.txtSecond = document.createElement("input");	//时间输出框
	this.btnSet = document.createElement("button");	    //时间设置按钮

	/* 设置自动播放 */
	this.setAuto = function(is){
		this.isAuto=is;
	}

	/* 设置循环播放 */
	this.setLoop = function(is){
		this.isLoop=is;
	}

	/* 设置显示模式 */
	this.setShowMode = function(mode){
		this.showMode=mode;
	}

	/* 设置默认播放间隔时间 */
	this.setTime = function(t){
		this.time=t;
	}

	/* 设置图片宽度 */
	this.setImgWidth = function(width){
		this.imgWidth=width;
	}

	/* 设置图片高度 */
	this.setImgHeight = function(height){
		this.imgHeight=height;
	}

	/* 批量添加图片 */
	this.addArray = function(imgArray){
		for(var i=0;i<imgArray.length;i++){
			this.add(imgArray[i]);
		}
	}

	/* 添加单个图片 */
	this.add = function(src){
		this.imgSrc[this.imgSrc.length] = src;
	}

	/* 按钮显示控制 */
	this.btnDisplay = function(){
		//如果不循环,则到最后一张停止自动播放
		if(this.cur==this.imgSrc.length-1&&!this.isLoop){
			this.isAuto=false;
		}
		this.btnPlay.disabled=this.isAuto;
		this.btnStop.disabled=!this.btnPlay.disabled;
		this.btnBack.disabled=(this.cur==0);
		this.btnNext.disabled=(this.cur==this.imgSrc.length-1);
	}

	/* 加载当前图片 */
	this.load = function(){
		this.btnDisplay();
		if(this.cur>=0&&this.cur<=this.imgSrc.length-1){
			var htmlStr = '<img src="' + this.imgSrc[this.cur] 
						+ '" width="' + this.imgWidth 
						+ '" height="' + this.imgHeight
						+ '" style="border:1px solid #CCCCCC;">';
			this.txtDesc.value=htmlStr;
			this.divImage.innerHTML = htmlStr;
		}
	}

	/* 加载指定图片以及一下张图片 */
	this.loads = function(i){
		if(i==this.imgSrc.length&&this.isLoop){
			i=0;
		}
		if(i>=0&&i<=this.imgSrc.length-1&&this.isAuto){
			this.cur=i;
			this.load();
			window.setTimeout(function(){
				imgPlayer.loads(imgPlayer.cur+1);
			},this.time*1000);
		}
	}

	/* 启动自动播放 */
	this.play = function(){
		var i=(this.cur==this.imgSrc.length-1)?0:this.cur;
		this.isAuto=true;
		this.loads(i);
	}

	/* 结束自动播放 */
	this.stop = function(){
		this.isAuto=false;
		this.btnDisplay();
	}

	/* 显示上一张并结束自动播放 */
	this.back = function(){
		this.isAuto=false;
		if(this.cur-1 >= 0){
			this.cur=this.cur-1;
			this.load();
		}
	}
	
	/* 显示下一张并结束自动播放 */
	this.next = function(){
		this.isAuto=false;
		if(this.cur+1<=this.imgSrc.length-1){
			this.cur=this.cur+1;
			this.load();
		}
	}
	
	/* 字符检测 */
	this.isInteger = function(str){
		var regu = /^[1-9][0-9]{0,}$/;
		return regu.test(str);
	}

	/* 间隔时间设置 */
	this.set = function(){
		if (this.isInteger(this.txtSecond.value)){
			this.time = this.txtSecond.value;
		}else{
			alert('提示:只能输入正整数!');
			this.txtSecond.value=this.time;
			this.txtSecond.select();
		}
	}

	/* 绑定控件 */
	this.bind = function(player){
		if(this.showMode==2){
			this.divPlayer.style.width=this.imgWidth;
			this.divImage.style.height=this.imgHeight;
		}else{
			this.divPlayer.style.width=this.imgWidth>this.minWidth?this.imgWidth:this.minWidth;
			this.divImage.style.height=this.imgHeight>this.minHeight?this.imgHeight:this.minHeight;
		}
		this.divPlayer.align="center";
		this.divImage.style.width=this.divPlayer.style.width;

		this.txtDesc.type="text";
		this.txtDesc.size="65";

		this.btnPlay.value="开始播放";
		this.btnPlay.onclick=function(){
			imgPlayer.play();
		}

		this.btnStop.value="暂停播放";
		this.btnStop.onclick=function(){
			imgPlayer.stop();
		}

		this.btnBack.value="上一张";
		this.btnBack.onclick=function(){
			imgPlayer.back();
		}

		this.btnNext.value="下一张";
		this.btnNext.onclick=function(){
			imgPlayer.next();
		}

		this.txtSecond.type="text";
		this.txtSecond.value=this.time;
		this.txtSecond.height="21";
		this.txtSecond.size="2";
		this.txtSecond.maxLength="2"

		this.btnSet.value="设置时间";
		this.btnSet.onclick=function(){
			imgPlayer.set();
		}

		player.appendChild(this.divPlayer);
		this.divPlayer.appendChild(this.divScreen);
		this.divPlayer.appendChild(this.divControl);
		this.divScreen.appendChild(this.divImage);
		this.divScreen.appendChild(this.divDesc);
		this.divDesc.appendChild(this.txtDesc);
		this.divControl.appendChild(this.btnPlay);
		this.divControl.appendChild(this.btnStop);
		this.divControl.appendChild(this.btnBack);
		this.divControl.appendChild(this.btnNext);
		this.divControl.appendChild(this.txtSecond);
		this.divControl.appendChild(this.btnSet);

		if(this.showMode==1){//初始化显示模式
			this.divControl.style.display="none";
		}else if(this.showMode==2){
			this.divControl.style.display="none";
			this.divDesc.style.display="none";
		}

		//初始化播放模式
		this.isAuto?this.play():this.load();
	}
}

上面就是控件的核心代码了,都有中文注释,应该不难理解,如果有问题可以发eMail给我dz_005@163.com

转载请注明出处http://dengzhi.iteye.com/blog/466631
1
0
分享到:
评论

相关推荐

    qmlGUI控件合集 qmlGUI控件合集

    qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集qmlGUI控件合集...

    C#自定义控件库

    "C#自定义控件库"是指使用C#语言编写的、由开发者自定义的控件集合,这些控件可以扩展.NET Framework的标准控件集,为用户提供更丰富的界面元素和功能。自定义控件是软件开发中的一个重要环节,特别是在UI设计和用户...

    ASP.NET用户控件和自定义控件

    在ASP.NET中,用户控件和自定义控件是两种重要的组件,它们扩展了.NET Framework的内置控件,帮助开发者创建具有特定功能和交互性的界面元素。 **用户控件(User Control)** 用户控件是ASP.NET中的基本自定义UI元素...

    c# 动态改变控件位置、控件大小、拖动控件

    在C#编程中,动态改变控件的位置、大小以及实现拖动功能是常见的需求,尤其在设计用户界面(UI)时。以下将详细介绍如何通过C#实现这些功能,并结合提供的"Panel"控件来举例说明。 1. **控件位置的动态改变**: 在...

    vb6.0用户控件自定义控件

    在VB6.0中,用户控件(User Control)和自定义控件(Custom Control)是两种非常重要的组件开发技术,它们允许开发者扩展Visual Basic的标准控件库,以满足特定项目的需求。通过创建用户控件和自定义控件,我们可以...

    vba 日期控件和listview控件注册

    在VBA(Visual Basic for Applications)编程环境中,我们经常需要使用各种控件来增强用户界面的交互性。在WPS Office中,有时会遇到不同版本的内置控件不兼容的问题,比如日期控件和ListView控件。本教程将详细介绍...

    Qt动态控件生成并布局

    Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局...

    C#控件学习参考~有详细控件用途

    在C#编程中,控件是构建用户界面(UI)的核心元素,它们允许用户与应用程序进行交互。本学习参考资料旨在帮助初学者理解并熟练掌握C#中的控件使用,从而创建功能丰富的桌面应用。以下是对C#控件的详细解释和相关知识...

    WPF查找一个控件下的子控件

    在Windows Presentation Foundation (WPF) 中,查找一个控件下的子控件是常见的需求,特别是在进行数据绑定、事件处理或自定义控件操作时。WPF 提供了几种方法来实现这一目标,让我们深入探讨一下。 首先,我们可以...

    c#工业控件集合

    在IT行业中,尤其是在工业自动化和监控系统开发领域,自定义控件扮演着至关重要的角色。本文将深入探讨“C#工业控件集合”,一个专为工业应用设计的自定义控件库,它包含了丰富的可视化元素,如图表、温度计和仪表盘...

    C# Winform遍历控件(窗体、Panel的子控件)Controls

    ### C# Winform遍历控件(窗体、Panel的子控件)Controls #### 一、概述 在Windows Forms (Winform) 开发中,窗体(Form)扮演着非常重要的角色,它是一个可以容纳多种控件的大容器。除了基本的控件如Button、...

    wpf控件拖动,控件换位置

    在Windows Presentation Foundation (WPF) 中,开发人员可以创建丰富的用户界面,包括让控件具有拖放功能,允许用户自由调整控件的位置。本篇将深入探讨如何实现控件的拖动以及控件之间位置的交换,同时也会涉及到在...

    VB控件教程 VB控件大全 VB控件详解 VB控件用法 所有控件介绍

    首先,VB控件分为基本控件、ActiveX控件和自定义控件三类。基本控件是VB内置的,如按钮(Button)、文本框(TextBox)、标签(Label)、复选框(CheckBox)、单选按钮(RadioButton)等,它们满足了大多数常见应用的...

    C#控件大全(C#所有的控件)

    C#控件大全 C#控件大全是指C#语言中提供的所有控件的集合,包括窗体、按钮、文本框、列表框、组合框、checkbox、RadioButton、 label、ProgressBar、TextBox、RichTextBox、DataGridView、ListView、TreeView等。...

    C#.net自定义控件开发用户自定义控件扩展控件

    本教程将深入探讨如何使用C#.NET进行自定义控件的开发,特别关注用户控件和扩展控件的创建,以及如何实现文件上传功能。这对于初学者来说是一个很好的实践项目,因为它可以帮助理解控件的原理和自定义UI元素的方法。...

    遍历窗体中的所有控件

    在Windows编程领域,遍历窗体中的所有控件是一项常见的任务,特别是在开发用户界面时,我们需要获取或操作界面上的各个元素。这个压缩包提供的源码实现了一个实用工具,允许用户通过输入窗体标题的部分字符来查找并...

    极品工业控件.zip_onlyysq_vb工业控件_vs 极品控件_工业 vb_极品控件

    工业控件,适用于vb工控编程的控件 简单易用

    树形控件和列表控件的结合

    在Windows编程领域,MFC(Microsoft Foundation Classes)库提供了一系列的控件,使得开发者能够创建出功能丰富的用户界面。在本项目中,我们关注的是"树形控件(CTreeCtrl)"和"列表控件(CListCtrl)"的结合使用。...

    Qt控件集合下载

    **Qt控件集合详解** Qt是一款跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的控件和API,使得开发者能够创建出美观且功能强大的应用程序。本集合中包含了一系列Qt编写的控件,既有开源作品也有原创设计,...

Global site tag (gtag.js) - Google Analytics