游戏开发:Rectangle应用实战+Array中被你忽略的方法
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-08
显示列表 addChild(shape);//选择框 //产生20辆坦克 for(vari=0;i<20;i++) { vartank=newTank(); map.addChild(tank); tankList.push(tank);//把坦克的引用记录下来 } addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler) addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler) functionmouseDownHandler(evt:MouseEvent) { targetPoint=newPoint(evt.currentTarget.mouseX,evt.currentTarget.mouseY); //如果点击在坦克上,则此坦克被选中。否则注册一个鼠标移动事件 if((evt.targetisTank)==true) { selectList.forEach(unSelect);//将已选择链表中所有坦克变为非选择状态 clearArray(selectList);//清空selectList数组 evt.target.select=true selectList.push(evt.target) isMove=false; } else { addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler) isMove=true; } } functionmouseMoveHandler(evt:MouseEvent) { varrecWidth=evt.currentTarget.mouseX-targetPoint.x; varrecHeight=evt.currentTarget.mouseY-targetPoint.y; shape.graphics.clear(); shape.graphics.beginFill(0x99ccff,0.2); shape.graphics.lineStyle(2,0x000000,0.8); shape.graphics.drawRect(targetPoint.x,targetPoint.y,recWidth,recHeight) shape.graphics.endFill(); } functionmouseUpHandler(evt:MouseEvent) { removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler) rec=shape.getBounds(this); shape.graphics.clear(); if(rec.width>0&&rec.height>0)//重新框选 { selectList.forEach(unSelect); clearArray(selectList); selectList=tankList.filter(selectTank); rec.width=rec.height=0; } elseif(selectList.length>0&&isMove==true) { selectList.forEach(moveTank) clearArray(selectList); } } //用来筛选哪些坦克被选中的过滤方法 functionselectTank(element:*,index:int,arr:Array) { if(element.getBounds(this).intersects(rec)==true) { element.select=true; returntrue; } returnfalse; } //取消坦克的选择状态的方法 functionunSelect(element:*,index:int,arr:Array) { element.select=false; } //移动坦克的方法 functionmoveTank(element:*,index:int,arr:Array) { element.select=false; varrandomX=targetPoint.x+Math.random()*150-75; varrandomY=targetPoint.y+Math.random()*150-75; element.moveTo(randomX,randomY); } functionclearArray(arr:Array) { while(arr.length>0) { arr.shift(); } } 坦克类: package { /** *一个简单的坦克类的模型 *作者:闪刀浪子 *blog:http://hi.baidu.com/mr_ziqiang */ importFlash.display.MovieClip importflash.geom.Point importflash.events.Event; publicclassTankextendsMovieClip { privatevarspeed:int;//坦克的速度 privatevartargetPoint:Point;//目标点 privatevar_select:Boolean;//此坦克是否被选中,选中则显示被选中状态 /** *Tank类构造函数 *初始化的时候随机产生一个坐标 */ publicfunctionTank() { this.mouseChildren=false;//这里记得禁用子对象的鼠标点击 this.x=300*Math.random()+10;//设置坦克出现的时候在左上角100*100大小范围类随机 this.y=300*Math.random()+10; this.scaleX=this.scaleY=1+Math.random();//体积大的就是红警中最牛的猛犸坦克了 speed=(3-scaleX)*4;//呵呵,体积越大速度当然要越慢了 } publicfunctionmoveTo(tx:Number,ty:Number) { this.removeEventListener(Event.ENTER_FRAME,onMove); targetPoint=newPoint(tx,ty); this.addEventListener(Event.ENTER_FRAME, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于游戏开发:Rectangle应用实战+Array中被你忽略的方法的所有评论