javascript寫碰撞運動且同時切換背景

編程語言 JavaScript HTML 技術 下班很無聊 下班很無聊 2017-10-31

一、HTML

佈局比較簡單

一個開始按鈕+一個內含多個img的div

<input type="button" value="開始運動" id="btn" />

<div id="div1">

<img src="img/5.png" alt="" style="display:block" />

<img src="img/juzi.jpg" alt="" />

<img src="img/laofuzi.jpg" alt="" />

<img src="img/make.jpg" alt="" />

<img src="img/zhuge.jpg" alt="" />

<img src="img/yangjian.jpg" alt="" />

</div>

二、CSS

div加absolute屬性,因為最後運動的是div;

img絕對定位,使圖片摞起來,設置display為none,第一img設置行內樣式為block,保證初始時div中的內容;

#div1 {

width:200px;

height:200px;

position:absolute;

}

#div1 img{

display: none;

width: 200px;

height: 200px;

position: absolute;

left: 0px;

top: 0px;

}

三、script

startMove()函數,為避免div碰撞後出現閃現滾動條,要提前檢測,並將div拉回邊界;

tabImg()函數,為解決num大於aImg.length的情況,採用了取模;

javascript寫碰撞運動且同時切換背景

javascript寫碰撞運動且同時切換背景

javascript寫碰撞運動且同時切換背景

javascript寫碰撞運動且同時切換背景

window.onload=function(){

var oBtn=document.getElementById('btn');

oBtn.onclick=function(){

startMove();

}

}

var iSpeedX=6;

var iSpeedY=8;

var num=0;

function startMove(){

setInterval(function (){

var oDiv=document.getElementById('div1');

var l=oDiv.offsetLeft+iSpeedX;

var t=oDiv.offsetTop+iSpeedY;

if(t>=document.documentElement.clientHeight-oDiv.offsetHeight){

iSpeedY*=-1;

t=document.documentElement.clientHeight-oDiv.offsetHeight;

num++;

tabImg(num);

}

else if(t<=0){

iSpeedY*=-1;

t=0;

num++;

tabImg(num);

}

if(l>=document.documentElement.clientWidth-oDiv.offsetWidth)

{

iSpeedX*=-1;

l=document.documentElement.clientWidth-oDiv.offsetWidth;

num++;

tabImg(num);

}

else if(l<=0)

{

iSpeedX*=-1;

l=0;

num++;

tabImg(num);

}

oDiv.style.left=l+'px';

oDiv.style.top=t+'px';

}, 30);

}

function tabImg(num){

var oDiv=document.getElementById('div1');

var aImg=oDiv.getElementsByTagName('img');

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

aImg[i].style.display='none';

}

aImg[num%aImg.length].style.display='block';

}

四、最終效果

點擊開始運動,圖片運動,每次碰撞後圖片切換;

多次點擊開始運動,運動會疊加加快,因為沒有清空定時器,大家可以定義一個定時器,在startMove()函數一開始先清空老的定時器,在設置新的定時器,本問為設置;

javascript寫碰撞運動且同時切換背景

javascript寫碰撞運動且同時切換背景

相關推薦

推薦中...