999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PHP AJAX的幻燈片播放實現

2010-01-01 00:00:00
電腦知識與技術 2010年6期

摘要:綜合運用所有與Ajax模型相關的基本元素,實現了一個具有圖片淡入淡出特效的客戶端Ajax幻燈片播放應用程序。用戶不必下載任何插件或運行有潛在風險的應用程序,僅需瀏覽網頁就可以看到炫麗的圖片特效。

關鍵詞:幻燈片播放;AJAX;PHP AJAX;DOM;XML

Implementation of Slide Show with PHP and AJAX

LI Yan

(Academy of Equipment Command Technology, Beijing 101416, China)

Abstract: Blending all the elements related with the Ajax model to create an Ajax client-side slide show with images fading in and out. Your users don't have to download any extensions or run potentially unsafe applications. They can just surf to your pages and get brilliant graphic effects.

Key words: Slide Show; AJAX; PHP AJAX; DOM; XML

Ajax作為客戶端與用戶間交互的一種技術,因其在Google maps地圖服務和Gmail網頁郵件服務中的應用,使人們看到了使用Ajax也可以很容易地做出炫麗的視覺效果。Ajax技術包含了HTML, JavaScript, CSS, XML, 以及異步WEB請求[1],使用Ajax可以做出比Web1.0時代更美觀、更靈活的網頁互動應用。雖說自IE4.0時代就出現了這種技術,但是直到最近的這些應用展示了它的優勢以后,Ajax才引起了大家的關注。

實現Ajax難嗎? Ajax模型中的單個元素如XML可能相對要容易學,但難的是把所有的這些元素綜合運用起來。本文中的Ajax幻燈片播放應用程序讓瀏覽器從服務器上獲取圖片信息列表(包含有圖片文件的地址,寬和高)。然后,使用這些數據結合DHTML組成客戶端的幻燈片播放頁,在不下載Flash插件或其他應用程序的情況下,讓圖片淡入淡出交替顯現達到令人滿意的視覺效果。

1 獲取圖片信息列表

在服務器端,使用PHP代碼來返回所有可用圖片的相關屬性信息。所有這些圖片都保存在Images文件夾下。文件名的形式是name_width_height.jpg[2],例如,horse_768_700.jpg,這樣只看文件名就知道圖片的寬為768像素,高為700像素。用這種方式命名的好處就是可以讓你更方便地讀取圖片屬性信息,進而生成前面所提到的圖片信息列表。具體代碼如下:

header( \"Content-type: text/xml\" );//聲明此文件的類型為XML

?>

if ($handle = opendir('images')) {//打開文件夾

while (1 !== ($file = readdir($handle)))//逐個檢索文件夾中的文件

{

if ( preg_match( \"/[.]jpg$/\", $file ) ) {//判斷是否為jpg格式的文件

preg_match( \"/_(\\d+)_(\\d+)[.]/\", $file, $found );//用正則表達式匹配圖片文件名

?>

\"http://圖片文件的地址

width=\"\"http://圖片的寬

height=\"\" />//圖片的高

}

}

closedir($handle);//關閉文件夾

}

?>

這段代碼中要注意的是要在代碼的開頭處設置content type為XML,只有這樣瀏覽器才能把該代碼所生成的頁面識別為XML格式的文件并為它創建文檔對象模型。代碼以標簽開始,然后讀取images文件夾下jpg格式的圖片文件并為每張圖片創建對應的標簽,最后代碼以標簽結束。

2 創建客戶端的AJAX幻燈片播放頁

幻燈片播放頁中的AJAX代碼從服務端的slides.php服務頁獲取圖片數據,關于這里使用AJAX回調服務頁面獲取更多數據的實現,一般都使用XMLHttp方式這里就不再贅述了。實現淡入淡出交替顯示幻燈片,主要通過以下三個JavaScript類:

1)圖片封裝類,該類中包含有圖片的相關屬性和操縱圖片對象的方法。

2)幻燈片播放管理類,該類主要用于幻燈片循環播放的實現。

3)效果類,該類用來實現圖像淡入淡出的效果。

2.1 圖片封裝類

首先做一個圖片容器,創建了一個名為ImageInfo的類。關鍵代碼如下:

function ImageInfo( src, width, height, htmlObj )

{

this.src = src;//圖片文件的地址

this.width = width;//圖片的寬

this.height = height;//圖片的高

this.htmlObj.src=this.src;//htmlObj是對標簽的引用

……

}

ImageInfo.prototype.set_opacity = function( opacity )

{

this.htmlObj.style.MozOpacity = opacity / 100;

var f = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+opacity+')';

this.htmlObj.style.filter = f;

}

對于幻燈片中每個圖片都有一個對應的ImageInfo對象,這個對象封裝了該圖片的相關屬性(src, width, height)以及對標簽的引用(代碼中的htmlObj)。有了這個引用就可以通過ImageInfo對象調用set_opacity方法來設置該圖片對象的透明度。注意Firefox和其他基于Gecko的瀏覽器要使用MozOpacity來設置透明度,而IE瀏覽器則使用濾鏡效果。

2.2 效果類

在本類中先使用簡單的算法來確定透明度之后,再調用圖片封裝類的set_opacity方法設置圖片的透明度,隨著透明度的值不斷發生變化最終實現圖片的淡入淡出效果。部分關鍵代碼如下:

function Fader( img, windowSize )

{

this.img = img;//標簽的引用

this.windowSize = windowSize;

}

Fader.prototype.apply = function( percent )

{

var opacity = 100;

if ( percent <= this.windowSize )

opacity = ( percent / this.windowSize ) * 100;

else if ( percent >= ( 100 - this.windowSize ) )

opacity = ( ( 100 - percent ) / this.windowSize ) * 100;

this.img.set_opacity( opacity );//設置圖片透明度

}

2.3 幻燈片播放管理類

幻燈片播放管理類用于幻燈片的播放控制。以下是部分關鍵代碼:

function SlidesManager( speed )

{

this.Slides = [];//用來存放圖片信息列表的數組

var self = this;

window.setInterval( function() { self.idle(); }, speed );

}// setInterval方法不停地調用state函數

SlidesManager.prototype.state = function()

{

if ( this. Slides.length > 0 )

{

this. Slides [0].play();//播放幻燈片

if ( this. Slides [0].done() )

this. Slides.shift();//達到指定的顯示時長就刪除當前正播放的幻燈片

if ( this. Slides.length == 0 )

this.on_finished();//全部圖片播放完畢則調用on_finished方法重新開始幻燈片播放

}

}

Slides.prototype.done = function()

{

var d = new Date();

return ( ( d.valueOf() - this.startMS ) / 1000 ) > this.seconds;

//控制幻燈片的顯示時長

}//這里startMS是開始播放的時間

使用JavaScript編寫動畫代碼時常用window.setInterval方法來實現動態效果[3]。在該方法中可以指定調用函數的時間間隔和所要調用的函數,但是使用該方法設定的時間間隔常常不穩定。比如,設定為20毫秒調用一次,真正執行時可能得到的是每25毫秒調用一次,下一次執行時又可能比上一次的間隔長一點,所以你不能依賴這個方法的時間間隔設置實現所期望的動態效果。這里使用的解決方法就是用new Date().valueOf方法來記錄幻燈片開始播放的時間,如果圖片播放持續的時間超過設定的時間就立即終止當前圖片的播放,播放下一張圖片。

2.4 AJAX幻燈片播放頁

編寫幻燈片播放頁主要有以下幾個步驟:

1)完成上面三個基本的類之后,把這三個類保存為JS格式的文件在幻燈播放頁用

主站蜘蛛池模板: swag国产精品| 亚洲精品国产自在现线最新| 欧美精品aⅴ在线视频| 国产白浆视频| 亚洲一区二区三区国产精品 | 亚洲天堂在线免费| 国产尤物jk自慰制服喷水| 国产精品成| 麻豆AV网站免费进入| 精品成人一区二区三区电影 | 欧美精品三级在线| 99久久国产综合精品女同 | 国模极品一区二区三区| 中文国产成人久久精品小说| 日本91在线| 亚洲成人在线免费观看| 手机在线看片不卡中文字幕| 97在线观看视频免费| 波多野结衣AV无码久久一区| 国产午夜一级毛片| 国产永久免费视频m3u8| 综合色亚洲| 亚洲国产成人久久精品软件| 再看日本中文字幕在线观看| 免费毛片网站在线观看| 91亚洲国产视频| 久久精品欧美一区二区| V一区无码内射国产| 亚洲AV无码一二区三区在线播放| 久久国产精品麻豆系列| 国产对白刺激真实精品91| 91小视频在线观看| 日韩欧美网址| 六月婷婷综合| 狠狠色狠狠色综合久久第一次| 国产精品免费入口视频| 国产剧情国内精品原创| 国产成人精品男人的天堂| 精品自窥自偷在线看| a级毛片免费网站| 亚洲男人天堂久久| 国产91熟女高潮一区二区| 欧美亚洲国产精品第一页| 日韩高清中文字幕| 国产91导航| julia中文字幕久久亚洲| 国产精品偷伦在线观看| 首页亚洲国产丝袜长腿综合| 成人毛片免费观看| 中文字幕66页| 小说 亚洲 无码 精品| 欧美精品v欧洲精品| 蜜臀av性久久久久蜜臀aⅴ麻豆| 91区国产福利在线观看午夜| 波多野结衣AV无码久久一区| 免费看一级毛片波多结衣| 91精品国产自产在线观看| 永久免费无码日韩视频| 呦视频在线一区二区三区| 国产97公开成人免费视频| 制服丝袜一区| 国产免费网址| 国产精品人莉莉成在线播放| 久久中文无码精品| 亚洲第一极品精品无码| 久草视频中文| 毛片基地视频| 国产在线观看一区精品| 亚洲区一区| 国产哺乳奶水91在线播放| 日韩高清欧美| 欧美国产三级| 中文字幕天无码久久精品视频免费| 麻豆国产精品视频| 亚洲日本韩在线观看| 国产欧美在线观看视频| 波多野衣结在线精品二区| 成人午夜网址| 国产精品一区二区无码免费看片| 成人免费午夜视频| 丁香六月综合网| 丰满人妻一区二区三区视频|