CSS样式:
html,body{ height: 100%; overflow: hidden; padding: 0; margin:0; } .games{ height: 100%; background: url(images/road.png) repeat-x bottom; } .games .sky{ background: url(images/sky.png) repeat-x center; height: 512px; } .games .person{ width: 122px; height: 104px; background: url(images/1.png) no-repeat center; background-size: cover; position: absolute; left: 10px; bottom: 80px; animation: myani 1s; animation-iteration-count: infinite; animation-timing-function: linear; z-index: 1; } @keyframes myani{ 0%{ background-image: url(images/1.png); } 10%{ background-image: url(images/2.png); } 20%{ background-image: url(images/3.png); } 30%{ background-image: url(images/4.png); } 40%{ background-image: url(images/5.png); } 50%{ background-image: url(images/6.png); } 60%{ background-image: url(images/7.png); } 70%{ background-image: url(images/8.png); } 80%{ background-image: url(images/9.png); } 90%{ background-image: url(images/10.png); } 100%{ background-image: url(images/11.png); } } .hinder{ width: 170px; height: 88px; background: url(images/hinder.png) no-repeat center; background-size: cover; position: absolute; bottom: 80px; } .msg{ width: 200px; line-height: 100px; background: #FFF; border: #CCC solid 1px; position: absolute; text-align:center; } .msg2{ width: 100%; height: 100%; position: relative; } .msg2 .close{ position: absolute; top: -60px; right: 5px; }
Javascript代码:
var bakx=0; var bakTimeId; var createHinderTimeId; var moveHinderTimeIdArr=new Array(); function $(id){ return document.getElementById(id); } //显示窗口 function showMsg(){ var width=$("msg").offsetWidth; var height=$("msg").offsetHeight; console.log(height); console.log(document.body.offsetHeight); $("msg").style.left=(document.body.offsetWidth-width)/2+"px"; $("msg").style.top=(document.body.offsetHeight-height)/2+"px"; } //初始化背景 function initBak(){ bakTimeId=setInterval(function(){ $("games").style.backgroundPositionX=bakx+"px"; $("sky").style.backgroundPositionX=bakx+"px"; bakx-=5; },20); } //跳 function jump(){ var top=$("person").offsetTop; var left=$("person").offsetLeft; if(document.body.offsetHeight-$("person").offsetHeight-top==80){ top-=220; left+=220; $("person").style.top=top+"px"; $("person").style.left=left+"px"; setTimeout(function(){ top+=220; $("person").style.top=top+"px"; },200); } } //向左移动 function moveLeft(){ var left=$("person").offsetLeft; left-=5; $("person").style.left=left+"px"; } //向右移动 function moveRight(){ var left=$("person").offsetLeft; left+=5; $("person").style.left=left+"px"; } //初始化键盘事件 function initKeyDown(){ document.onkeydown=function(){ switch(event.keyCode){ case 32: jump(); break; case 37: moveLeft(); break; case 39: moveRight(); break; } } } //创建障碍物 function createHinder(){ var hinder=document.createElement("div"); hinder.className="hinder"; hinder.style.left=document.body.offsetWidth+Math.random()*document.body.offsetWidth+"px"; $("games").appendChild(hinder); moveHinder(hinder); } //移动障碍物 function moveHinder(hinder){ var moveHinderTimeId=setInterval(function(){ var left=hinder.offsetLeft; var top=hinder.offsetTop; left-=5; hinder.style.left=left+"px"; //判断人是否碰到障碍物 var personLeft=$("person").offsetLeft; var personTop=$("person").offsetTop; var personWidth=$("person").offsetWidth; var personHeight=$("person").offsetHeight; var hinderWidth=hinder.offsetWidth; var hinderHeight=hinder.offsetHeight; if(personLeft+personWidth>=left &&personLeft+personWidth<=left+hinderWidth){ console.log("game over"); clearInterval(bakTimeId); clearInterval(createHinderTimeId); for(var timeId of moveHinderTimeIdArr){ clearInterval(timeId); } $("person").style.animationIterationCount=0; showMsg(); } },20); moveHinderTimeIdArr.push(moveHinderTimeId); } //初始化障碍物 function initHinder(){ var time=2000+Math.random()*5000; createHinderTimeId=setInterval(createHinder,time); } //点击关闭 function initClose(){ $("close").onclick=function(){ $("msg").style.left=-500+"px"; restart(); } } function restart(){ initBak(); initKeyDown(); initHinder(); initClose(); var hinders=document.getElementsByClassName("hinder"); for(var hinder of hinders){ hinder.style.display="none"; } $("person").style.animationIterationCount="infinite"; $("person").style.left=10+"px"; } function start(){ initBak(); initKeyDown(); initHinder(); initClose(); } function init(){ start(); } window.onload=init;
html代码:
<body> <div id="games"> <div id="sky"></div> <div id="person"></div> </div> <div id="msg"> <div> <span id="close">关闭</span> <h1>Game Over</h1> </div> </div> </body>
实现效果截图:
0条评论
点击登录参与评论