您的位置:首页 > 其它

Ajax无刷新实现图片切换特效

2007-06-14 13:10 711 查看


Ajax无刷新实现图片切换特效




1.页面cs代码


using System;


using System.Data;


using System.Configuration;


using System.Web;


using System.Web.Security;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.WebControls.WebParts;


using System.Web.UI.HtmlControls;


using AjaxPro;




public partial class _Default : System.Web.UI.Page






{


protected string displayCategoryID;


protected void Page_Load(object sender, EventArgs e)






{


Utility.RegisterTypeForAjax(typeof(AjaxMethod));


displayCategoryID = "17";


}


}
2.html代码


<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">


<title>Ajax无刷新实现图片切换特效</title>


<link type="text/css" href="css/tree.css" rel="stylesheet">


<link type="text/css" href="css/global.css" rel="stylesheet">


<script type=text/javascript src=javascript/tree.js></script>


</head>


<body onload="PreloadImage('<%=displayCategoryID %>');">


<form id="form1" runat="server">


<div id="photoarea" style="width: 514px; height: 496px; left: 0px; top: 0px;">




<div id="photo" style="left: 5px; top: 9px; height: 432px;">


<img id="slideShow" src="images/space.gif" style="filter:revealTrans(duration=2,transition=23)">




</div>


<div id="op" align="left" style="left: 12px; top: 457px">


<span id="progress" style="FONT-SIZE: 20px"></span>


   


<img id="btnPlay" src="images/play_bw.gif">


<img id="btnPause" src="images/pause_bw.gif">


<img id="btnPrev" src="images/prev_bw.gif">


<img id="btnNext" src="images/next_bw.gif">


</div>


</div>






<SCRIPT type="text/javascript">





// 定时器


var timeDelay;




// 图片自动浏览时的时间间隔


var timeInterval = 4000;




// Array对象,存储图片文件的路径


var image;




// 当前显示的图片序号


var num;




// 当前浏览状态,该状态用于控制4个按钮的状态


var nStatus;




// 图片显示区域


var slideShow = el("slideShow");




// 图片信息数据表


var dt;




// 预加载图片信息


function PreloadImage(iCategoryID)






{


// 采用同步调用的方式获取图片的信息


var ds = AjaxMethod.GetPhotoList(iCategoryID).value;




// 如果返回了结果


if (ds)






{


// 判断数据表是否不为空


if (ds.Tables[0].Rows.length > 0)






{


// 返回的图片信息数据表


dt = ds.Tables[0];




// 用image对象存储图片的文件路径


image = new Array();




// 图片在Photos目录下


for (var i = 0; i < dt.Rows.length; i++)






{


image.push("Photos/" + dt.Rows[i].photo_path);


}




// imagePreload对象用于实现图片的预缓存


var imagePreload = new Array();


for (var i = 0;i < image.length;i++)






{


// 通过新建Image对象,并将其src属性指向图片的URL


// 显现图片的预缓存


imagePreload[i] = new Image();


imagePreload[i].src = image[i];


}




// 初始化一些变量


num = -1;


nStatus = 0x09;




// 加载第一张图片


next_image();


}


else // 分类下没有图片






{


alert("该目录下没有图片!");


}


}




}




// 实现图片切换时的效果


function image_effects()






{


// Transition的值为0~23之间的随机数,代表24种切换效果


// 具体值与效果之间的对应见MSDN


slideShow.filters.revealTrans.Transition = Math.random() * 23;




// 应用并播放切换效果


slideShow.filters.revealTrans.apply();


slideShow.filters.revealTrans.play();


}




// 切换到上一张图片


function previous_image()






{


// 图片序号向前移动,如果已经是第一张,则切换到最后一张


num += image.length - 1;


num %= image.length;




// 图片切换的效果


image_effects();




// 将<img>对象的src属性设置为当前num对应的路径


// 切换图片的显示


slideShow.src = image[num];




// 获取图片的标题、说明信息


getPhotoInfo();




// 设置按钮状态


setBtnStatus();


}




// 切换到下一张图片


function next_image()






{


// 当前图片的序号向后移动,如果已经是最后一张,


// 则切换到第一张图片


num++;


num %= image.length;




// 图片的切换效果


image_effects();




// 将<img>对象的src属性设置为当前num对应的路径


// 切换图片的显示


slideShow.src = image[num];




// 获取图片的标题、说明信息


getPhotoInfo();




// 设置按钮状态


setBtnStatus();


}




// 自动浏览图片


function slideshow_automatic()






{


// 当前图片的序号向后移动,如果已经是最后一张,


// 则切换到第一张图片


num++;


num %= image.length;




// 图片的切换效果


image_effects();




// <img>对象的src属性设置为当前num指定的URL


// 切换图片的显示


slideShow.src = image[num];




// 获取图片的标题、说明信息


getPhotoInfo();




// 设置按钮的状态,使播放按钮失效,暂停按钮有效


nStatus &= 0x0E;


nStatus |= 0x02;


setBtnStatus();




// slideshow_automatic函数每隔一段时间自动执行


timeDelay = setTimeout("slideshow_automatic()", timeInterval);


}




// 停止自动播放


function pauseSlideShow()






{


// 清除定时器,不再执行slideshow_automatic函数


clearTimeout(timeDelay);




// 设置按钮的状态,使播放按钮有效,暂停按钮失效


nStatus &= 0x0d;


nStatus |= 0x01;


setBtnStatus();


}




// 设置按钮的状态:


// 判断的依据是当前是否处于自动播放的状态


// 以及当前显示的图片是否第一张或最后一张图片


function setBtnStatus(bDir)






{


// 如果是第一张图片


if (num == 0)






{


// 向前切换图片的按钮失效


nStatus &= 0x0b;


}




// 如果是最后一张图片


if (num == (image.length - 1))






{


// 向后切换图片的按钮失效


nStatus &= 0x07;


}




// 如果既不是最后一张,也不是第一张图片


if (num != 0 && num !=(image.length - 1))






{


// 向前、向后切换图片的按钮均有效


nStatus |= 0x0c;


}




// 根据nStatus每一位的值确定4个按钮的背景图


el("btnPlay").src = ((nStatus & 0x01) == 0x01) ?


"images/play.gif" : "images/play_bw.gif";


el("btnPause").src = ((nStatus & 0x02) == 0x02) ?


"images/pause.gif" : "images/pause_bw.gif";


el("btnPrev").src = ((nStatus & 0x04) == 0x04) ?


"images/prev.gif" : "images/prev_bw.gif";


el("btnNext").src = ((nStatus & 0x08) == 0x08) ?


"images/next.gif" : "images/next_bw.gif";




// 根据nStatus每一位的值确定鼠标移动到4个按钮上方时的形状


el("btnPlay").style.cursor = ((nStatus & 0x01) == 0x01) ?


"pointer" : "default";


el("btnPause").style.cursor = ((nStatus & 0x02) == 0x02) ?


"pointer" : "default";


el("btnPrev").style.cursor = ((nStatus & 0x04) == 0x04) ?


"pointer" : "default";


el("btnNext").style.cursor = ((nStatus & 0x08) == 0x08) ?


"pointer" : "default";




// 根据nStatus的每一位确定4个按钮是否具有onclick响应


el("btnPlay").onclick = ((nStatus & 0x01) == 0x01) ?




function()

{slideshow_automatic();} : function()

{return false;};


el("btnPause").onclick = ((nStatus & 0x02) == 0x02) ?




function()

{pauseSlideShow();} : function()

{return false;};


el("btnPrev").onclick = ((nStatus & 0x04) == 0x04) ?




function()

{previous_image();} : function()

{return false;};


el("btnNext").onclick = ((nStatus & 0x08) == 0x08) ?




function()

{next_image();} : function()

{return false;};




// 显示当前图片浏览的进度


el("progress").innerHTML = (num + 1) + " / " + image.length;


}




// 获取图片的标题、说明信息


function getPhotoInfo()






{


return;


// 图片ID号


var id = dt.Rows[num].id;




// 如果存在


if (id)






{


// 异步调用Ajax方法GetPhotoInfo


AjaxMethod.GetPhotoInfo(id, GetPhotoInfo_callback);


}


}




// 回调函数,根据响应的内容显示标题和说明信息


function GetPhotoInfo_callback(response)






{


// 获取图片的信息


var dt_photo = response.value.Tables[0];




// 如果图片存在


if (dt_photo.Rows.length > 0)






{


// 显示图片的标题和说明


el("title").innerHTML = dt_photo.Rows[0].photo_title;


el("description").innerHTML = dt_photo.Rows[0].photo_description;


}


}


</SCRIPT>


</form>


</body>


</html>
3.AjaxMethod类


using System;


using System.Data;


using System.Configuration;


using System.Web;


using System.Web.Security;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.WebControls.WebParts;


using System.Web.UI.HtmlControls;


using System.Data.SqlClient;


using AjaxPro;






/**//// <summary>


/// Summary description for AjaxMethod


/// </summary>


public class AjaxMethod






{


public AjaxMethod()






{


//


// TODO: Add constructor logic here


//


}


public static string ConnectionString = ConfigurationSettings.AppSettings["ConnectionString"].ToString();






GetDataSet#region GetDataSet


public static DataSet GetDataSet(string sql)






{


SqlDataAdapter sda = new SqlDataAdapter(sql, ConnectionString);


DataSet ds = new DataSet();


sda.Fill(ds);


if (ds != null)


return ds;


else


return null;


}


#endregion






/**//// <summary>


/// 获取某个分类下图片的id和photo_path信息


/// </summary>


/// <param name="iCategoryID">分类ID号</param>


/// <returns>图片信息(id, photo_path)的信息</returns>


[AjaxMethod(HttpSessionStateRequirement.ReadWrite)]


public static DataSet GetPhotoList(int iCategoryID)






{


string sql = string.Format("SELECT id, photo_path FROM Photo WHERE photo_category_id = {0}", iCategoryID);


return GetDataSet(sql);


}






/**//// <summary>


/// 获取图片信息(标题、说明)


/// </summary>


/// <param name="id">图片id</param>


/// <returns>图片信息</returns>


[AjaxMethod(HttpSessionStateRequirement.ReadWrite)]


public static DataSet GetPhotoInfo(int id)






{


string sql = string.Format("SELECT photo_title, photo_description FROM Photo WHERE id = {0}", id);




return GetDataSet(sql);


}




}
4.Web.config


<?xml version="1.0"?>


<configuration>


<appSettings>


<add key="ConnectionString" value="Data Source=localhost;user id=sa;password=sa;initial catalog=DB"/>


</appSettings>


<connectionStrings/>


<system.web>


<httpHandlers>


<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>


</httpHandlers>


<compilation debug="false" />


<authentication mode="Windows" />


</system.web>


</configuration>
5.sql脚本


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Photo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)


drop table [dbo].[Photo]


GO




CREATE TABLE [dbo].[Photo] (


[id] [int] IDENTITY (1, 1) NOT NULL ,


[photo_title] [varchar] (128) COLLATE Chinese_PRC_CI_AS NULL ,


[photo_description] [text] COLLATE Chinese_PRC_CI_AS NULL ,


[photo_category_id] [int] NULL ,


[photo_path] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL


) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]


GO
6.原代码/Files/singlepine/AjaxChangeImage.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: