在好例子网,分享、交流、成长!
您当前所在位置:首页Flash 开发实例ActionScript语言基础 → 合成游戏源码

合成游戏源码

ActionScript语言基础

下载此实例
  • 开发语言:Flash
  • 实例大小:0.02M
  • 下载次数:24
  • 浏览次数:1055
  • 发布时间:2019-08-01
  • 实例类别:ActionScript语言基础
  • 发 布 人:jjer
  • 文件格式:.as
  • 所需积分: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;
	}
}


【核心代码】

标签: 源码 合成 游戏

实例下载地址

合成游戏源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警