基本信息
源码名称:合成游戏源码
源码大小:0.02M
文件格式:.as
开发语言:Flash
更新时间:2019-08-01
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 3 元 
   源码介绍
合成类游戏核心代码
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;
	}
}