JQ(jQuery)实现会飞的小鸟
1.获取图片和浏览器的宽和高
2.获取图片的方位
3.设置小鸟移动的大小,全局变量
4.获取键盘上的上下左右键
5.根据键盘上的上下左右控制小鸟的移动
6.超出浏览器从反方向出来
7.旋转
<divclass="dbird"><imgsrc="bird.gif"width="206"height="121"alt=""/></div>
.dbird{width:206px;height:121px;}
第一步获取该div的宽和高以及浏览器的宽和高
vardwidth=$(".dbird").width();vardheight=$(".dbird").height();varbwidth=$(window).width();varbheight=$(window).height();
第二步获取方位 x、y,不设置位置的话,默认在浏览器的左上角的(0,0)位置,即图片的左上角的位置是浏览器的(0,0)
varoff=$(".dbird").offset();
第三步设置小鸟移动到大小,我们设置一个全局变量,大小为20
varstep=20;
第四步响应键盘,键盘上的都是用数字表示的,如上下左右是37-40。把按得键赋给keycode,然后用来做第五步判断
$(document).keydown(function(e){varkeycode=e.keyCode;}
第五步根据按键的是上下左右给出移动,使用switch-case比较简单
switch(keycode){case37://左off.left-=step;//按一下往左动20break;case38://上off.top-=step;//按一下往上动20break;case39://右off.left+=step;//按一下往右动20break;case40://下off.top+=step;//按一下往下动20break;}
此时应该是没有效果的,刷新小鸟的位置才可以,在switch后重新获取移动后的位置即可
$(".dbird").offset(off);
第六步超出浏览器从反方向飞回,解释一下,如一直往右飞,当小鸟的位置大于了浏览器的宽度,那么就看不见小鸟了,此时我们让小鸟在从浏览器的左边飞进来,因为我们没有设置小鸟的位置,那么应该是从图片的右边先进来,那么off.left就是-dwidth了,看图片分析:
其他三个同理
if(off.left<=-dwidth){//37off.left=bwidth;}if(off.top<=-dheight){//38off.top=bheight;}if(off.left>=bwidth){//39off.left=-dwidth}if(off.top>=bheight){//40off.top=-dheight;}
第七步按方位进行旋转
默认是39(头朝右)可以做判断,如果是39,则不旋转,如果不是39就根据按键的数做相应的旋转,左就旋转180°,上或下就旋转60°(度数自己定),可以先写好按键数对应的效果,如37,我们给定37的类dir_37类的css样式是旋转180°,当按37时添加dir_37类即可,如果按的不是37而是40了,就移除dir_37类添加dir_40类。
首先先写好三个类
.dri_37{transform:rotateY(180deg);/*直接转身*/}.dri_38{transform:rotate(-60deg);/*倾斜*/}.dri_40{transform:rotate(60deg);}
其次可以定义一个全局变量,赋值为默认值39
varrcode=39;
最后根据按键和rcode比较,如果不等于,那么就添加对应的类,添加之前可以先移除上一次添加的类(如果没有添加过类就不会执行的)。否则继续执行。
if(keycode!=rcode){$(".dbird").removeClass().addClass("dri_"+keycode);}
源码:(为了方便,写在一个文件里边了)
<!doctypehtml><html><head><metacharset="UTF-8"><metaname="Generator"content="EditPlus®"><metaname="Author"content="华慕熊"><metaname="Keywords"content=""><metaname="Description"content="html注释和取消注释是shift+/,js注释ctrl+/,js取消注释ctrl+shift+/"><title>Document</title><scriptsrc="jquery-1.10.2.min.js"></script><style>*{margin:0px;padding:0PX;}bady{overflow:hidden;}#dbird{width:206px;height:121px;position:absolute;}.dri_37{transform:rotateY(180deg);/*直接转身*/}.dri_38{transform:rotate(-60deg);/*倾斜*/}.dri_40{transform:rotate(60deg);}</style><script>/*1.获取图片和浏览器的宽和高2.获取图片的方位3.设置小鸟移动的大小,全局变量4.获取键盘上的上下左右键5.根据键盘上的上下左右控制小鸟的移动6.超出浏览器从反方向出来7.旋转*///设置移动的大小varstep=20;//步长varrcode=39;$(function(){//获取小鸟图片的宽和高varbwidth=$("#dbird").width();varbheight=$("#dbird").height();//获取浏览器的宽和高vardwidth=$(window).width();vardheight=$(window).height();//获取图片的方位varoff=$("#dbird").offset();//xy$(document).keydown(function(e){varkeycode=e.keyCode;//获取按键的数:左键->37,上键38,右键->39,下键->40if(keycode!=rcode){$("#dbird").removeClass().addClass("dri_"+keycode);}rcode=keycode;switch(keycode){case37://左边off.left-=step;if(off.left<=-bwidth){off.left=dwidth;}break;case38://上off.top-=step;if(off.top<=-bheight){off.top=dwidth;}break;case39://右off.left+=step;if(off.left>=dwidth){off.left=-bwidth;}break;case40://下off.top+=step;if(off.top>=dheight){off.top=-bheight;}break;}$("#dbird").offset(off);//更新小鸟的位置});});</script></head><body><divid="dbird"><imgsrc="bird.gif"width="206"height="121"alt=""></div></body></html>
百度网盘连接:链接:https://pan.baidu.com/s/1siJIFDhg6PwAQsYply1img 密码:6du1
若失效请联系我: huamuxiong_2018#163.com (请自动转换#为@)
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。