web: แสดงรูปแบบสุ่ม - revised
Submitted by wd on Wed, 2006-08-30 18:58
เอาโค๊ดเดิมจาก http://javascript.internet.com และโค๊ดเดิมจาก http://www.brainerror.net/scripts_js_blendtrans.php และโค๊ดเพิ่มเติมจาก http://www.javascriptkit.com/javatutors/externalphp2.shtml มาผสมผสานกัน
- ปรับปรุงให้สามารถอ่านไฟล์รูปภาพจากไดเรคทอรี่ที่กำหนดได้ จะได้ไม่ต้องมาเขียนโค๊ดใหม่ทุกครั้งที่ไฟล์ภาพมีการเปลี่ยนแปลง
- จะทำให้มีการจางหายก่อนการแสดงผลใหม่ เพื่อให้นุ่มนวลขึ้น (จริง ๆ แล้ว ตรงนี้สามารถตั้งค่าฉากหลังเป็นภาพเดิม แล้วจึงแสดงผลใหม่ จะทำให้ดูเหมือนภาพค่อย ๆ เปลี่ยนไป แต่ปัญหาคือจะดูไม่สวยเวลาขนาดภาพไม่เท่ากัน) ความสามารถนี้ ทดสอบกับ Konqueror และ IE ไม่ได้ผล
โค๊ดมีดังนี้
<?php // CODE FROM http://www.javascriptkit.com/javatutors/externalphp2.shtml // Header("content-type: application/x-javascript"); function returnimages($dirname=".") { // ***** CHANGE SOURCE OF IMAGE HERE $dirname="/swww2/var/www/palapanyo/gal/random/w150"; // ***** URL OF IMAGE $url="http://www.palapanyo.com/gal/random/w150"; $pattern="(\.jpg$)|(\.png$)|(\.jpeg$)|(\.gif$)"; //valid image extensions $files = array(); $curimage=0; if($handle = opendir($dirname)) { while(false !== ($file = readdir($handle))) { if(eregi($pattern, $file)) { //if this file is a valid image //Output it as a JavaScript array element echo 'image_list['.$curimage.'] = new imageItem("'.$url.'/'.$file.'");'; $curimage++; } } closedir($handle); } return ($files); } ?> <script language="JavaScript"> <!-- Original: Robert Bui (astrogate@hotmail.com) --> <!-- Web Site: http://astrogate.virtualave.net --> <!-- This script and many more are available free online at --> <!-- The JavaScript Source!! http://javascript.internet.com --> <!-- Begin // ***** CHANGE TIMING HERE var interval = 5; var random_display = 1; // 0 = no, 1 = yes interval *= 1000; var image_index = 0; image_list = new Array(); // ***** INSERT IMAGE LIST HERE // image_list[image_index++] = new imageItem("http://www.palapanyo.com/gal/random/w150/chwesigon.jpg"); // ***** OR GET IMAGE FROM DIRECTORY // CODE FROM http://www.javascriptkit.com/javatutors/externalphp2.shtml <?php returnimages() ?> // END IMAGE LIST var number_of_image = image_list.length; function imageItem(image_location) { this.image_item = new Image(); this.image_item.src = image_location; } function get_ImageItemLocation(imageObj) { return(imageObj.image_item.src) } function generate(x, y) { var range = y - x + 1; return Math.floor(Math.random() * range) + x; } function getNextImage() { if (random_display) { image_index = generate(0, number_of_image-1); } else { image_index = (image_index+1) % number_of_image; } var new_image = get_ImageItemLocation(image_list[image_index]); return(new_image); } //change the opacity for different browsers function changeOpac(opacity, id) { var object = document.getElementById(id); opacity = (opacity == 100)?99.99:opacity; // New Firefox object.style.opacity = (opacity / 100); // Mozilla & Firefox object.style.MozOpacity = (opacity / 100); // Safari, Konqueror object.style.KhtmlOpacity = (opacity/100) ; // IE/Win object.style.filter = "alpha(opacity:" + opacity + ")"; } function dFadeOut(imageId, speed) { for (timer = 0; timer <= 100; timer++) { setTimeout("changeOpac(" + (100-timer) + ",'" + imageId + "')",(timer * speed)) } } function FadeImage(place) { var imageId = 'imggalid'; var image = document.getElementById(imageId); var speed = Math.round(2500 / 100); dFadeOut(imageId, speed) var recur_call = "rotateImage('"+place+"')"; setTimeout(recur_call, 2500); } function rotateImage(place) { var divId = 'divgalid'; var divbg = document.getElementById(divId); var imageId = 'imggalid'; var image = document.getElementById(imageId); // set speed of fading var speed = Math.round(1500 / 100); // set background to old image document[place].backgroundImage=document[place].src; // make new image var new_image = getNextImage(); document[place].src = new_image; // set opac to 0 changeOpac(0, imageId); // fade image from 0 to 100 for (timer = 0; timer <= 100; timer++) { setTimeout("changeOpac(" + timer + ",'" + imageId + "')",(timer * speed)) } //var recur_call = "rotateImage('"+place+"')"; //setTimeout(recur_call, interval); var recur_call = "FadeImage('"+place+"')"; setTimeout(recur_call, interval); } // End --> </script>
ตรงที่จะแทรกโค๊ดใช้ html เหมือนเดิม ดังนี้
<div id="divgalid" style="width: 200px; height: 230px; text-align: center; float: right; background: #eee;"> <img name="rImage" src="http://www.palapanyo.com/gal/random/w150/chaitiyo.jpg" id="imggalid" /> </div>
Recent comments