在以前的課程中,我們學習了對文本和字符串的各種操作,今天我們專注於兩種不同的數據類型:圖象和對象。學完這一課,你將知道如何:
使用JavaScript來加速圖象交換。
創建你自己的對象來使腳本易於理解。
使用關聯數組來快速存取腳本中的每一個對象。
使用JavaScript做圖象變換的一個主要問題是,它直到需要換圖時才去告訴浏覽器下載那張圖象。如果你有一張大的圖象,想在鼠標滑過一副圖象時調出來,浏覽器得臨時下載這張圖,這可能會花一定時間從而使滑動效果大打折扣。
如果你的連接速度較慢,而你要調入的是一個相當大的圖象的話,那你把鼠標放到圖上後只好去等待。由於有的浏覽器要求被調入的圖象必須保存在緩沖區裡,所以有時你可能根本就看不到圖象變換的效果。為了避免這些煩心的問題,我們可以把要變換的圖象在頁面調入時就預先裝載。
在Web編程時,預裝載是在需要圖片之前就將圖片下載到緩存的技術。采用這樣的方式可以使當確實需要顯示圖片時迅速將其從緩存中恢復回來並立即顯示。
預裝載圖象其實並不困難。你要做的就是創建一個新的image對象,然後把要預裝的圖象名設定成image的src屬性,如下所示:
var an_image = new Image();
an_image.src = "my_nice_image.gif";
通過設置image的src屬性就可以自動地把圖象下載到你的硬盤裡(當然假設你的cache可以用),然後圖象變換時就從硬盤直接讀入圖象而不用再去下載了。
剩下要做的唯一一件事就是,怎樣在頁面被下載以後和圖象變換操作之前使預裝圖象發生。讓人愉快的是這很簡單。HTML中的body標記有一個事件處理器叫onLoad,當頁面被調入後它將被調用。如果你的body標記是這樣的:
<body onLoad="doPreload();">
那麼doPreload()函數將在網頁下載後被調用。函數的代碼是這樣的:
function doPreload()
{
var the_images = new Array(kwmatt.jpg,matbon.jpg,lunchMat.jpg);
preloadImages(the_images);
}
function preloadImages(the_images_array) {
for(loop = 0; loop < the_images_array.length; loop++)
{
var an_image = new Image();
an_image.src = the_images_array[loop];
}
}
doPreload()函數創建了需要預裝的圖象名的數組,並把數組作為參數傳送到preloadImages()函數, preloadImages()函數包含了一個循環,每次循環都創建一個新的圖象對象,並把圖象名設到它的src屬性中。
不很難吧?圖象對象相當有用對吧?我很高興你這樣想,休息一會兒,馬上我們就要進入一個更令人興奮,更讓人動腦筋的話題:創建你自己的對象。