編程(Programming)是編定程序的中文簡(jiǎn)稱(chēng),就是讓計(jì)算機(jī)代碼解決某個(gè)問(wèn)題,對(duì)某個(gè)計(jì)算體系規(guī)定一定的運(yùn)算方式,使計(jì)算體系按照該計(jì)算方式運(yùn)行,并最終得到相應(yīng)結(jié)果的過(guò)程。為了使計(jì)算機(jī)能夠理解(understand)人的意圖,人類(lèi)就必須將需解決的問(wèn)題的思路、方法和手段通過(guò)計(jì)算機(jī)能夠理解的形式告訴計(jì)算機(jī),使得計(jì)算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計(jì)算體系之間交流的過(guò)程就是編程。 【實(shí)例名稱(chēng)】 JS實(shí)現(xiàn)晃動(dòng)的圖片 【實(shí)例描述】 文字可以實(shí)現(xiàn)左右滾動(dòng),圖片也可以實(shí)現(xiàn)左右移動(dòng)。本例介紹一個(gè)圖片左右移動(dòng)的特效。 【實(shí)例代碼】 <html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>標(biāo)題頁(yè)-本站(www.xue51.com)</title>
<script language="JavaScript">
step = 0;
obj = new Image(); //創(chuàng)建圖片對(duì)象
function anim(xp,xk,smer) //smer 代表晃動(dòng)方向
{
obj.style.left = x;
x += step*smer;
if (x>=(xk+xp)/2) {
if (smer == 1) step--; //往左移動(dòng)
else step++;
}
else {
if (smer == 1) step++; //往右移動(dòng)
else step--;
}
if (x >= xk) { //如果已經(jīng)到右邊界,則反向晃動(dòng)
x = xk;
smer = -1;
} if (x <= xp) { //如果一定到左邊界,則反向晃動(dòng)
x = xp;
smer = 1;
}
setTimeout('anim('+xp+','+xk+','+smer+')', 40);
//設(shè)置定時(shí)器,實(shí)現(xiàn)不斷晃動(dòng)效果
} function moveLR(objID,movingarea_width,c)
{ if (navigator.appName=="Netscape")
window_width = window.innerWidth;
else window_width = document.body.offsetWidth;
//獲取窗體的寬度
obj = document.images[objID];
image_width = obj.width;
//獲取圖像的寬度
x1 = obj.style.left;
//獲取圖像的X坐標(biāo)
x = Number(x1.substring(0,x1.length-2));
//去掉后面的像素標(biāo)記“px”
if (c == 0) {
if (movingarea_width == 0) {
//沒(méi)有設(shè)置移動(dòng)區(qū)域的情況
right_margin = window_width - image_width;
anim(x,right_margin,1);
//開(kāi)始晃動(dòng)圖片
}
else {
right_margin = x + movingarea_width - image_width;
if (movingarea_width < x + image_width)
window.alert("No space for moving!");
else anim(x,right_margin,1);
}
}
else {
if (movingarea_width == 0)
//沒(méi)有設(shè)置移動(dòng)區(qū)域的情況
right_margin = window_width - image_width;
else {
x = Math.round((window_width-movingarea_width)/2);
right_margin = Math.round((window_width+movingarea_width)/2)-image_width;
//獲取可以移動(dòng)的空間
}
anim(x,right_margin,1);
}
}
</script>
<img src="http://www.baidu.com/img/logo.gif" name="img1"
style='position: absolute; top: 50px; left: 213px;' border=0 id="myImg">
<script language="JavaScript">
setTimeout("moveLR('myImg',400,1)",10);
</script>
</head>
<body>
</body>
</html>
【運(yùn)行效果】
 【難點(diǎn)剖析】 本例的重點(diǎn)是定時(shí)器和隨機(jī)數(shù)的應(yīng)用。定時(shí)器用來(lái)不斷移動(dòng)圖片,隨機(jī)數(shù)的獲取是使用“Math.random”函數(shù)。“Math.round”是四舍五人函數(shù),返回一個(gè)偽隨機(jī)數(shù)(0~1之間的double數(shù))。 【源碼下載】 為了JS代碼的準(zhǔn)確性,請(qǐng)點(diǎn)擊:JS實(shí)現(xiàn)晃動(dòng)的圖片 進(jìn)行本實(shí)例源碼下載
使用編程語(yǔ)言寫(xiě)的程序,由于每條指令都對(duì)應(yīng)計(jì)算機(jī)一個(gè)特定的基本動(dòng)作,所以程序占用內(nèi)存少、執(zhí)行效率高。 |