实例介绍
【实例简介】合成类游戏核心代码
【实例截图】
【核心代码】
【实例截图】
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;
}
}
【核心代码】
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论