基本信息
源码名称:合成游戏源码
源码大小:0.02M
文件格式:.as
开发语言:Flash
更新时间:2019-08-01
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 3 元×
微信扫码支付:3 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
合成类游戏核心代码
合成类游戏核心代码
package Racing.Assembly { import Racing.DataTools; import Racing.DynamicRegistration; import Racing.GoldPigAssembly; import Racing.Message; import Racing.MyCar; import Racing.Scene; import Racing.Shake; import Racing.UI_List; import core.responder.NResponder; import game.resource.ResourcePath; import laya.display.Animation; import laya.display.Sprite; import laya.events.Event; import laya.maths.Point; import laya.media.SoundManager; import laya.ui.Image; import laya.utils.Handler; import laya.utils.Timer; import laya.utils.Tween; public class Parking extends Sprite { private var carSign:Image; public var carArray:Array; public var movingCar:MyCar=null; private static var _instance:Parking; public var myCar:MyCar; public var newCar:MyCar; private var newCarUnlock:Image; private var shine:Image; private var close:Image; public var arr:Array; public var carMax:int; public var composeTip:ComposeTip; private var goldPig:GoldPigAssembly=new GoldPigAssembly(); private var balckhold:Image public function Parking(){ this.addChild(goldPig); // this.mo //this.mouseThrough=true; // var x1:int=DataTools.x1; // var y1:int=DataTools.y1; // var x2:int=DataTools.x2; // var y2:int=DataTools.y2; // this.graphics.drawLine(x1,y1,x1,y2,"#000000"); // this.graphics.drawLine(x1,y1,x2,y1,"#000000"); // this.graphics.drawLine(x2,y2,x1,y2,"#000000"); // this.graphics.drawLine(x2,y2,x2,y1,"#000000"); // this.graphics.drawPie(x1,(y1 y2)/2,(y2-y1)/2,90,270,null,"#000000"); // this.graphics.drawPie(x2,(y1 y2)/2,(y2-y1)/2,-90,90,null,"#000000"); composeTip=new ComposeTip(); addChild(composeTip); carArray=new Array(this.parkingMax); for(var j=0;j<carArray.length;j ){ carArray[j]=null; } this.width=stage.width; this.height=stage.height; this.on(Event.MOUSE_UP,this,onMouseUp); } public function getCarArrCount():int{ var count:int = 0; for(var j=0;j<carArray.length;j ){ if(carArray[j]!=null){ count ; if(j == carArray.length-1){ break; } } } return count; } public function init(){ for(var j=5;j<=DataTools.parkingMax;j ){ var ccar:MyCar=this.getByPosition(j); if(ccar==null) continue; var tophourse:MyCar=this.getByPosition(j-5); if(tophourse==null) continue; if(this.getChildIndex(ccar)<this.getChildIndex(tophourse)){ ccar.removeSelf(); this.addChild(ccar); } } for(var j=0;j<carArray.length;j ){ var car:MyCar=carArray[j] as MyCar; if(car!=null){ car.setXYByPosition(); if(car.onRunway==true){ car.alpha=0.5; // this.parent.addChild(carSign); //this.addChild(carSign); // carSign = new Image; // carSign.alpha = 1; // var img:String = ResourcePath.getImage("back"); // carSign.loadImage(img,0,0,50,50); // addChild(carSign); }else{ car.alpha=1; } } } } // public function removeBack(){ // if(carSign!=null){ // this.removeChild(carSign) // } // } //用于实现单例 public static function get instance():Parking{ if(_instance==null) _instance=new Parking(); return _instance; } //往停车场里添加一辆车,也就是购买了一辆车 //如果没有指定position参数,以车里的参数为准 public function push(car:MyCar,position:int=-1):Boolean{ if(isFull()){ console.log(carArray); return false; } if(position>=0) car.position=position; //没有指定position if(car.position<0){ car.position=this.getUsefulPosition(); } //如果当前位置上已经有马了 if(carArray[car.position]!=null){ var c:MyCar=carArray[car.position]; c.removeSelf(); carArray[car.position]=null; } else{ carArray[car.position]=car; this.addChild(car); car.setXYByPosition(); } return true; } //获取相同等级的车 public function getLikeGrade(a:int = 1):Array{ arr = new Array(); for(var i:int = 0; i<carArray.length;i ){ if(carArray[i] as MyCar != null){ if((carArray[i] as MyCar).grade == a){var temp:int = a; } } for(var k:int = i 1;k<carArray.length; k ){ if(carArray[k] as MyCar != null){ var temp2:int = (carArray[k] as MyCar).grade; if(temp == temp2){ arr.push(i); arr.push(k); } } } } return arr; } //获取停车场上的马的最高等级,以便于判断是否有新车出现 public function getHighCarGrade():int{ var max:int = 0; for(var g:int = 0;g<carArray.length;g ){ if((carArray[g] as MyCar)!= null){ if((carArray[g] as MyCar).grade > max){ max = (carArray[g] as MyCar).grade } } } return max; } public function getByPosition(position:int):MyCar{ return carArray[position]; } //获取下一个可以放车的位置,如果已满则返回空 public function getUsefulPosition():int{ for(var j=0;j<carArray.length;j ){ if(carArray[j]==null) return j; } return -1; } public function isFull():Boolean{ for(var j:int=0;j<carArray.length;j ){ if(carArray[j]==null) return false; } return true; } public function update():void{ goldPig.update(); } public function beginMove(car:MyCar):void{ endMove(); Band.instance.begin(); composeTip.begin(car); Dustbin.instance.alpha=1; var targetCar:MyCar=carArray[car.position]; if(targetCar==null) return; targetCar.alpha=0.5; this.movingCar=car.copy1(); this.movingCar.x=mouseX; this.movingCar.y=mouseY; movingCar.mouseEnabled=false; Scene.instance.addChild(movingCar); } public function changeAni(position1:int,position2:int){ var car1:MyCar=getByPosition(position1); car1.alpha=0.5; var car2:MyCar=getByPosition(position2); car2.alpha=0.5; var car11:MyCar=car1.copy1(); var car22:MyCar=car2.copy1(); car11.x=car1.x; car11.y=car1.y; car22.x=car2.x; car22.y=car2.y; addChild(car11); addChild(car22); Tween.to(car11,{x: car2.x,y:car2.y},200,null,null); Tween.to(car22,{x: car1.x,y:car1.y},200,null,Handler.create(this,function chan(){ car11.removeSelf(); car22.removeSelf(); changePosition(position1,position2); })); } public function changePosition(position1:int,position2:int){ var car=carArray[position1]; carArray[position1]=carArray[position2]; carArray[position2]=car; (carArray[position1] as MyCar).position=position1; (carArray[position2] as MyCar).position=position2; init(); } public function remove(position:int){ if(FirstPage.instance.sound){ SoundManager.playSound(PlaySounds.move, 1,new Handler(this, function():void{trace("播放完成")})); } (carArray[position] as MyCar).removeSelf(); carArray[position]=null; } private function endMove(){ Dustbin.instance.alpha=0.5; Band.instance.end(); composeTip.stop(); if(movingCar==null) return; init(); movingCar.removeSelf(); movingCar.destroy(); movingCar=null; } public function onMouseUp(){ //垃圾桶 // if(mouseX<300&&mouseY>800){ // //Dustbin.instance. // Parking.instance.dropByMovingCar(); // Asset.save(); // endMove(); // return; // } console.log("parking.mouseUp"); console.log(mouseX "," mouseY); if(movingCar==null) return; var movedCar:MyCar=carArray[movingCar.position]; var p=DataTools.getPositionByXY(mouseX,mouseY); switch(p){ case -1 :{ //-1:落在跑道上 Runway.instance.push(movedCar); //console.log("把车放到了跑道上"); endMove(); Asset.save(); break; } case -2 ://-2:落在无效位置 return if(FirstPage.instance.sound){ SoundManager.playSound(PlaySounds.cant, 1,new Handler(this, function():void{trace("播放完成")})); } Message.addMessage("Please put the horse in the right place"); var tweCar:MyCar=movingCar.copy1(); tweCar.x=movingCar.x; tweCar.y=movingCar.y; endMove(); addChild(tweCar); getByPosition(tweCar.position).alpha=0.5; var xx=DataTools.getXByPosition(tweCar.position); var yy=DataTools.getYByPosition(tweCar.position); Tween.to(tweCar,{x: xx,y:yy},300,null,Handler.create(this,function end(){ getByPosition(tweCar.position).alpha=1; tweCar.removeSelf(); })); break; default :{//落在停车位 //情况3.落在没有车的地方,移动至该处 //nowCar:鼠标拖拽结束后停在nowCar上 var nowCar:MyCar=carArray[p] as MyCar; if(nowCar==null){ var carAni:MyCar=movingCar.copy1(); carAni.x=DataTools.getXByPosition(p); carAni.y=DataTools.getYByPosition(p);; carAni.alpha=0.5; addChild(carAni); Tween.from(carAni,{x: DataTools.getXByPosition(carAni.position),y:DataTools.getYByPosition(carAni.position)},400,null,Handler.create(this,function move(){ carAni.removeSelf(); init(); })); carArray[p]=movedCar; carArray[movedCar.position]=null; movedCar.position=p; Asset.save(); endMove(); movedCar.alpha=0.5; break; } //有车 // //在跑道上的车 if(nowCar.onRunway==true) break; console.log(movedCar.grade); console.log(nowCar.grade); if(nowCar.grade<0||movedCar.grade<0){ endMove(); return; } //情况4:等级不同,互换位置 if(movedCar.grade!=nowCar.grade){ changeAni(p,movedCar.position); Asset.save(); endMove(); break; } //情况5:等级相同,合成 if(movedCar.grade==nowCar.grade&&movedCar!=nowCar&&movedCar.grade<=29){ //合成动画 this.init(); compose(nowCar,movedCar); endMove(); } } } endMove(); } public function get parkingMax():int{ return DataTools.parkingMax; } //在位置position1上合成一辆grade级车 public function compose(nowCar:MyCar,movedCar:MyCar){ FirstPage.instance.vibrateShort(); if(Guide.instance.hand1 != null){ Guide.instance.hand1.visible = false; Scene.con.removeChild(Guide.instance.hand1); } if(Guide.instance.text1 != null){ Guide.instance.text1.visible = false; Scene.con.removeChild(Guide.instance.text1); } if(Guide.instance.hand5 != null){ Guide.instance.hand5.visible = false; Scene.con.removeChild(Guide.instance.hand5); } // if(Asset.playnum == 1){ // Guide.instance.delMerge(); // } // Asset.playnum ; if(movingCar){ movingCar.removeSelf(); movingCar=null; } this.remove(movedCar.position); this.remove(nowCar.position); newCar=new MyCar(movedCar.grade 1); if(newCar.grade > getHighCarGrade()){ var timer:Timer=new Timer(); timer.once(1600,this,function unlockkk(){ if(movingCar!=null){ composeTip.stop(); this.endMove(); } Scene.instance.addChild(new UnLock(newCar.grade)); }); } //下面是缓动 var characterA:MyCar=nowCar.copy1(); var characterB:MyCar=nowCar.copy1(); var x0=nowCar.x; var y0=nowCar.y; //characterA.pivot(46.5, 50); characterA.x = x0; characterA.y= y0; characterB.x = x0; characterB.y = y0; var shake1:ComposeShake=new ComposeShake(); var shake2:ComposeShake=new ComposeShake(); this.addChild(characterA); this.addChild(characterB); var terminalX = 200; push(newCar,nowCar.position); newCar.alpha=0; //Tween.to(characterA, { x : terminalX }, 5000,push(newCar)); //怼在一起 //to :到当前的状态 //from:从当前状态出发 shake1.init_(characterA,7,3,0); shake2.init_(characterB,7,-3,0); Tween.to(characterA, { x : x0-120 }, 300,null); Tween.to(characterB, { x : x0 120 }, 300,null,Handler.create(this,function back(){ //shake1.begin(); //shake2.begin(); //在最远位置抖动150 new Timer().once(150,this,function(){ shake1.end(); shake2.end(); Tween.to(characterA, { x : x0 }, 100,null); //开始合在一起 Tween.to(characterB, { x : x0 }, 100,null,Handler.create(this,function (){ //两只马怼在了一起 //console.log("两只马怼在了一起"); //爆破效果 Laya.timer.once(1000,this,function(e:Event):void{}) characterA.removeSelf(); characterB.removeSelf(); if(FirstPage.instance.sound){ SoundManager.playSound(PlaySounds.merge, 1,new Handler(this, function():void{trace("播放完成")})); } // 5层:光,新旧马,新旧阴影,星星 newCar.alpha=0; //0光 var sun:Sprite=new Sprite(); sun.loadImage(ResourcePath.getImage("sun")); sun.x=DataTools.getXByPosition(newCar.position)-250; sun.y=DataTools.getYByPosition(newCar.position)-250; //1旧马 var oldCar:MyCar=characterB; oldCar.alpha=0; oldCar.mouseEnabled=false; //this.addChild(oldCar); //新马 newCar.removeSelf(); //newCar.mouseEnabled=false; //旧阴影 var oldShadow:MyCar=oldCar.shadow; oldShadow.setXYByPosition(); oldShadow.alpha=0; //新阴影 var newShadow:MyCar=newCar.shadow; newShadow.setXYByPosition(); newShadow.alpha=0; this.addChildren(sun,oldCar,newCar,oldShadow,newShadow); var star:Animation=new Animation(); star.loadAtlas(ResourcePath.getJson("star")); star.interval=50; star.x=sun.x; star.y=sun.y; this.addChild(star); star.play(0,false); star.on(Event.COMPLETE,this,function(){star.removeSelf()}); oldCar.alpha=1; var mynewcar:MyCar=newCar; //阴影开始出现 Tween.to(oldShadow,{alpha:1},250,null,Handler.create(this,function(){ //阴影完全出现 oldShadow.removeSelf(); oldCar.removeSelf(); mynewcar.alpha=1; newShadow.alpha=1; //阴影逐渐消失 Tween.to(newShadow,{alpha:0},250,null,Handler.create(this,function(){ newShadow.removeSelf(); })); //阳光逐渐消失 Tween.to(sun,{alpha:0.3},400,null,Handler.create(this,function(){ newShadow.removeSelf(); sun.removeSelf(); })); })); })); }) })); // characterB使用Tween.from缓动 // if(getMaxGradeExpect(newCar)<newCar.grade){ // //新车 // console.log("新车"); // // } Asset.save(); } //获取nowCar的坐标 public function getX():void{ } public function dropByMovingCar(){ if(movingCar==null) return; remove(movingCar.position); endMove(); } public function getMaxGradeExpect(car:MyCar=null){ var maxGrade=1; if(car==null){ for(var k=0;k<carArray.length;k ){ var acar:MyCar=carArray[k]; if(acar==null) continue; maxGrade=maxGrade>acar.grade?maxGrade:acar.grade; } } for(var j=0;j<carArray.length;j ){ var acar:MyCar=carArray[j]; if(acar==null||car==acar) continue; maxGrade=maxGrade>acar.grade?maxGrade:acar.grade; } console.log(maxGrade); return maxGrade; } public function com30(){ } } } import Racing.Shake; import laya.display.Sprite; import laya.utils.Handler; import laya.utils.Tween; class ComposeShake extends Shake{ private var px0; private var py0; private var pivD:int; private var rotD:int; private var rot:int; public function init_(obj:Sprite,halfT:int,pivD:int,rotD:int){ this.pivD=pivD; this.rotD=rotD; px0=obj.pivotX; py0=obj.pivotY; rot=obj.rotation; super.init(obj, 0, 0, 0, 0, halfT); } public override function to1(){ if(num<=0){ end(); return; } if(switchOn==false){ end(); return; } Tween.to(obj,{pivotX:px0-pivD,pivotX:py0-pivD,rotation:rot-rotD},delay,null,Handler.create(this,function (){ to2(); })); } public override function to2(){ if(num>0) num--; if(switchOn==false){ end(); return; } Tween.to(obj,{pivotX:px0 pivD,pivotX:py0 pivD,rotation:rot rotD},delay,null,Handler.create(this,function (){ to1(); })); } public override function end(){ super.end(); obj.pivotX=px0; obj.pivotY=py0; obj.rotation=0; } }