今天主要实现:飞机打出子弹;
子弹图片:
- 大家可以看见子弹就是一张图片,怎么实现子弹连续射出;
- 子弹的创建
/** * * @param x 子弹距左边的距离; * @param y 子弹距顶部的距离; * @param sizeX 子弹大小 * @param sizeY 子弹大小; * @param Imagesrc 子弹图片; */ `function bullet(x,y,sizeX,sizeY,Imagesrc){ this.x=x; this.y=y; this.sizeX=sizeX; this.sizeY=sizeY; this.Imagesrc=Imagesrc; this.init=function(){ this.bulletImag=document.createElement("img"); this.bulletImag.style.left=this.x+"px"; this.bulletImag.style.top=this.y+"px"; this.bulletImag.style.position="absolute"; this.bulletImag.src=Imagesrc; main.appendChild(this.bulletImag); } this.init(); //后面调用子弹上升; this.move=function(){ this.bulletImag.style.top=parseInt(this.bulletImag.style.top)-20+"px"; } }`
2. 先把一颗子弹定在飞机上方(并可以随着飞机移动)//后面会有改动,可以先new 个子弹,并把left/top跟飞机绑定(自己动手思考哈!)
- 子弹的移动,它应该是在我方飞机的上方(随着飞机移动)下面只是关键代码的提示;
var bullets=[];
bullets.push(new bullet(parseInt(document.defaultView.getComputedStyle(myPlane.oImg,null).left)+30,
- 这里涉及到循环执行函数,这样子弹才会一直发射;
setInterval("moveBullet()",20);
- 子弹图片超过一定范围的删除,(不删除会怎么样?)
- 图片的删除
main.removeChild(bullets[i].bulletImag);
- 由于图片是装在数组里面的,所以数组也要删除,不然数组一直在创建;
bullets.splice(i,1);
- 图片的删除
> `/*
> 移动子弹
> */
> var bulletslen=bullets.length;
> for(var i=0;i<bulletslen;i++){
> bullets[i].bulletmove();
> /*
> 如果子弹超出边界,删除子弹
> */
> if(bullets[i].bulletimage.offsetTop<0){//offsetTop第一节有介绍
> mainDiv.removeChild(bullets[i].bulletimage);
> bullets.splice(i,1);
> bulletslen--;
> }>
> }`
参数:arr.splice(index,howmany,element1,… …,elementN);
1、index———从该下标开始删除
2、howmany—-删除指定数量的元素
3、elements—–插入的元素