cc.Class({ extends: cc.Component, properties: { //起点 todo SprintStartLine:{//短跑起点 default:null, type:cc.Prefab }, LongJumpStartLine:{//跳远起点 default:null, type:cc.Prefab }, HurdleStartLine:{//跨栏起点 default:null, type:cc.Prefab }, JavelinStartLine:{//标枪起点 default:null, type:cc.Prefab }, BikeStartLine:{//骑车起点 default:null, type:cc.Prefab }, //终点 todo FinishLine_Sprint:{//短跑终点线 default:null, type:cc.Prefab }, LongJumpFinishLine:{//跳远终点 default:null, type:cc.Prefab }, FinishLine_Hurdle:{//跨栏终点 default:null, type:cc.Prefab }, JavelinFinishLine:{//标枪终点线 default:null, type:cc.Prefab }, // BikeFinishLine FinishLine_Bike:{//骑车终点 default:null, type:cc.Prefab }, Hero: { default: null, type: cc.Node }, Canvas: { default: null, type: cc.Node }, Blank:{//空白 default:null, type:cc.Prefab }, AccelerationBand30InTheMiddle:{//大加居中 default:null, type:cc.Prefab }, Cushion30AndRailingInTheMiddle:{//大缓跨栏居中 default:null, type:cc.Prefab }, JavelinModel:{//标枪模型 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheLeftHalf1:{//长10加前半部分 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheRightHalf2:{//长10加后半部分 default:null, type:cc.Prefab }, JavelinDistanceFirst:{//标枪计距带起点 default:null, type:cc.Prefab }, JavelinDistanceMiddle:{//标枪计距带中部10M-100M default:null, type:cc.Prefab }, JavelinDistanceLast:{//标枪计距带尾部110M default:null, type:cc.Prefab }, Cushion30AndBunker1M :{//沙坑1M default:null, type:cc.Prefab }, Bunker2to4M:{//沙坑2-4M default:null, type:cc.Prefab }, Bunker5to7M:{//沙坑5-7M default:null, type:cc.Prefab }, Bunker8to10M:{//沙坑8-10M default:null, type:cc.Prefab }, Bunker11M:{//沙坑11M default:null, type:cc.Prefab }, BikeModelToTheRight:{//自行车模型 default:null, type:cc.Prefab }, TwoAcceleration30s:{//两个大加1 default:null, type:cc.Prefab }, Acceleration30AndAcceleration20:{//两个大加2 default:null, type:cc.Prefab }, Acceleration20ToTheLeft:{//一个大加靠左 default:null, type:cc.Prefab }, LongAccelerationBand7Column:{//长7加1 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheLeftHalf3:{//长10带边框1左半部分 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheRightHalf4:{//长10带边框1右半部分 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheLeftHalf5:{//长10带边框2左大半部分 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheRightHalfAndLeftHalf6:{//长10带边框2右半部分及长10带边框3左小半部分 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheRightHalf7:{//长10带边框3右半部分 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheLeftHalf8:{//长10带边框4左半部分 default:null, type:cc.Prefab }, LongAccelerationBand10ColumnTheRightHalf9:{//长10带边框4右半部分 default:null, type:cc.Prefab }, AccelerationBand20InTheMiddle:{//中加居中 default:null, type:cc.Prefab }, AccelerationBand10InTheMiddle:{//小加居中 default:null, type:cc.Prefab }, JumpDownBike:{//下自行车 default:null, type:cc.Prefab }, JavelinBeginJump:{//标枪起跳 default:null, type:cc.Prefab }, LocationLine: { default: null, type: cc.Prefab }, YellowBG: { default: null, type: cc.Prefab }, wriggle_prefab: { default: null, type: cc.Prefab }, javeBg_prefab: { default: null, type: cc.Prefab }, JavalinDistance:0, PrefabNumLabel: { default: null, type: cc.Prefab }, PlayerInLvIndexLabel: { default: null, type: cc.Prefab }, SprintPrefabsArr:[], LongJumpPrefabsArr:[], HurdlePrefabsArr:[], JavelinPrefabsArr:[], RideBikePrefabsArr:[], }, start : function() { this.PlayerDistance=0; this.LastLoadedLvIndex=0; this.TargetNum=720*2; this.BgPrefabArray=[]; this.AllBgPrefabArray=[]; this.BAllSceneLoaded=false; this.PlayerInTheZone='None'; this.PrePlayerInLvIndex=0; this.CurrentPlayerInLvIndex=0; this.FrontEnableLvIndex=0; this.TargetNum = 720*3; this.JavalinDistance=10; this.SprintPrefabsArr = [ this.Blank,//空白 this.SprintStartLine,//短跑起点 this.AccelerationBand30InTheMiddle,//短跑5个大加 this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand20InTheMiddle,//3个中加 this.AccelerationBand20InTheMiddle, this.AccelerationBand20InTheMiddle, this.FinishLine_Sprint,//终点线 ]; this.LongJumpPrefabsArr = [ this.LongJumpStartLine,//跳远起点 this.AccelerationBand30InTheMiddle,//4个大加 this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand20InTheMiddle,//3个中加 this.AccelerationBand20InTheMiddle, this.AccelerationBand20InTheMiddle, this.LongAccelerationBand10ColumnTheLeftHalf1,//长10加前半部分 this.LongAccelerationBand10ColumnTheRightHalf2,//长10加后半部分 this.LongAccelerationBand10ColumnTheLeftHalf1,//长10加前半部分 this.LongAccelerationBand10ColumnTheRightHalf2,//长10加后半部分 this.Cushion30AndBunker1M,//沙坑1M this.Bunker2to4M,//沙坑2-4M this.Bunker5to7M,//沙坑5-7M this.Bunker8to10M,//沙坑8-10M this.Bunker11M,//沙坑11M this.LongJumpFinishLine,//终点线 ]; this.HurdlePrefabsArr = [ this.HurdleStartLine,//跨栏起点 this.Blank,//空白 this.AccelerationBand30InTheMiddle,//连续4个大加交替4个大缓跨栏 this.Cushion30AndRailingInTheMiddle,//连续4个大加交替4个大缓跨栏 this.Blank,//空白 this.Blank,//空白 this.AccelerationBand30InTheMiddle, this.Cushion30AndRailingInTheMiddle, this.Blank,//空白 this.AccelerationBand30InTheMiddle, this.Cushion30AndRailingInTheMiddle, this.Blank,//空白 this.AccelerationBand30InTheMiddle, this.Cushion30AndRailingInTheMiddle, this.Blank,//空白 this.AccelerationBand30InTheMiddle, this.Cushion30AndRailingInTheMiddle, this.Blank,//空白 this.FinishLine_Hurdle,//终点线 ]; this.JavelinPrefabsArr = [ this.JavelinStartLine,//标枪起点 this.JavelinModel,//标枪模型 vvvvv this.AccelerationBand30InTheMiddle,//4个大加 this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand20InTheMiddle,//3个中加 this.AccelerationBand20InTheMiddle, this.AccelerationBand20InTheMiddle, this.LongAccelerationBand10ColumnTheLeftHalf1,//长10加前半部分 this.LongAccelerationBand10ColumnTheRightHalf2,//长10加后半部分 this.LongAccelerationBand10ColumnTheLeftHalf1,//长10加前半部分 this.LongAccelerationBand10ColumnTheRightHalf2,//长10加后半部分 this.javeBg_prefab,//起跳 this.JavelinDistanceFirst,//标枪距离计算起点 this.JavelinDistanceMiddle,//标枪距离计算中间部分共10个 this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceLast,//标枪距离计算末尾部分*/ this.JavelinFinishLine,//终点线 ]; this.RideBikePrefabsArr = [ this.BikeStartLine,//骑车起点 this.BikeModelToTheRight,//自行车模型 this.TwoAcceleration30s,//3个大加2个中加 this.Acceleration30AndAcceleration20,// this.Acceleration20ToTheLeft,// this.LongAccelerationBand7Column,//1个长7 this.LongAccelerationBand10ColumnTheLeftHalf3,//4个长10 this.LongAccelerationBand10ColumnTheRightHalf4,// this.LongAccelerationBand10ColumnTheLeftHalf5,// this.LongAccelerationBand10ColumnTheRightHalfAndLeftHalf6,// this.LongAccelerationBand10ColumnTheRightHalf7,// this.LongAccelerationBand10ColumnTheLeftHalf8,// this.LongAccelerationBand10ColumnTheRightHalf9,// this.Blank,// this.FinishLine_Bike,//终点线 ]; this.AllLevel = [ this.SprintPrefabsArr, this.LongJumpPrefabsArr, this.HurdlePrefabsArr, this.JavelinPrefabsArr, this.RideBikePrefabsArr, ]; this.AllBgPrefabArray = [ // 短跑 this.Blank,//空白 this.SprintStartLine,//短跑起点 this.AccelerationBand30InTheMiddle,//短跑5个大加 this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand20InTheMiddle,//3个中加 this.AccelerationBand20InTheMiddle, this.AccelerationBand20InTheMiddle, this.FinishLine_Sprint,//终点线 // 跳远 this.LongJumpStartLine,//跳远起点 this.AccelerationBand30InTheMiddle,//4个大加 this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand20InTheMiddle,//3个中加 this.AccelerationBand20InTheMiddle, this.AccelerationBand20InTheMiddle, this.LongAccelerationBand10ColumnTheLeftHalf1,//长10加前半部分 this.LongAccelerationBand10ColumnTheRightHalf2,//长10加后半部分 this.LongAccelerationBand10ColumnTheLeftHalf1,//长10加前半部分 this.LongAccelerationBand10ColumnTheRightHalf2,//长10加后半部分 this.Cushion30AndBunker1M,//沙坑1M this.Bunker2to4M,//沙坑2-4M this.Bunker5to7M,//沙坑5-7M this.Bunker8to10M,//沙坑8-10M this.Bunker11M,//沙坑11M this.LongJumpFinishLine,//终点线 // 跨栏 this.HurdleStartLine,//跨栏起点 this.Blank,//空白 this.AccelerationBand30InTheMiddle,//连续4个大加交替4个大缓跨栏 this.Cushion30AndRailingInTheMiddle,//连续4个大加交替4个大缓跨栏 this.Blank,//空白 this.Blank,//空白 this.AccelerationBand30InTheMiddle, this.Cushion30AndRailingInTheMiddle, this.Blank,//空白 this.AccelerationBand30InTheMiddle, this.Cushion30AndRailingInTheMiddle, this.Blank,//空白 this.AccelerationBand30InTheMiddle, this.Cushion30AndRailingInTheMiddle, this.Blank,//空白 this.AccelerationBand30InTheMiddle, this.Cushion30AndRailingInTheMiddle, this.Blank,//空白 this.FinishLine_Hurdle,//终点线 // 标枪 this.JavelinStartLine,//标枪起点 this.JavelinModel,//标枪模型 vvvvv this.AccelerationBand30InTheMiddle,//4个大加 this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand30InTheMiddle, this.AccelerationBand20InTheMiddle,//3个中加 this.AccelerationBand20InTheMiddle, this.AccelerationBand20InTheMiddle, this.LongAccelerationBand10ColumnTheLeftHalf1,//长10加前半部分 this.LongAccelerationBand10ColumnTheRightHalf2,//长10加后半部分 this.LongAccelerationBand10ColumnTheLeftHalf1,//长10加前半部分 this.LongAccelerationBand10ColumnTheRightHalf2,//长10加后半部分 this.javeBg_prefab,//起跳 this.JavelinDistanceFirst,//标枪距离计算起点 this.JavelinDistanceMiddle,//标枪距离计算中间部分共10个 this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceMiddle, this.JavelinDistanceLast,//标枪距离计算末尾部分*/ this.JavelinFinishLine,//终点线 //骑车 this.BikeStartLine,//骑车起点 this.BikeModelToTheRight,//自行车模型 this.TwoAcceleration30s,//3个大加2个中加 this.Acceleration30AndAcceleration20,// this.Acceleration20ToTheLeft,// this.LongAccelerationBand7Column,//1个长7 this.LongAccelerationBand10ColumnTheLeftHalf3,//4个长10 this.LongAccelerationBand10ColumnTheRightHalf4,// this.LongAccelerationBand10ColumnTheLeftHalf5,// this.LongAccelerationBand10ColumnTheRightHalfAndLeftHalf6,// this.LongAccelerationBand10ColumnTheRightHalf7,// this.LongAccelerationBand10ColumnTheLeftHalf8,// this.LongAccelerationBand10ColumnTheRightHalf9,// this.Blank,// this.FinishLine_Bike,//终点线 // this.Blank,// // this.Blank,// // this.Blank,// ]; for (var i = 0; i < 4; i++) { this.LastLoadedLvIndex = i + 1; var tPrefab = cc.instantiate(this.AllBgPrefabArray[i]); this.setStartLine(tPrefab); tPrefab.parent = this.node; tPrefab.setAnchorPoint(0.5, 0.5); tPrefab.setLocalZOrder(-i); tPrefab.setPosition(i * (740), 0); this.BgPrefabArray.push(tPrefab); // this.AddIndexLabelToPrefab(i*(720));//此为预制体添加数字标签,正式项目可注释 // cc.log('i = '+i+' and position = '+i * (740)+' and prefabName is '+tPrefab.name); } this.PreLoad(); cc.log("地图加载完毕",this.BgPrefabArray); this.schedule(function () { // cc.log('/************************ and herox is '+cc.find('Hero').position.x); }, 1, 0); }, GetRandomLevelNum:function(){ var RandomLevelNum = Math.floor(Math.random() * 5); return RandomLevelNum; }, LoadRandomLevel:function(RandomLevelNum){ this.AllBgPrefabArray = this.AllLevel[RandomLevelNum]; }, PreLoad:function(){ var aPrefab = cc.instantiate(this.YellowBG);//开始时加载一个长加速带的黄色区域,后面再次加载就不会卡 aPrefab.parent = this.node; aPrefab.setPosition(-1000,1000); aPrefab.destroy(); }, SetDistance:function(aPlayerDistance) { this.PlayerDistance=aPlayerDistance; }, SetLocationLine:function(PlayerCollisionLinePosition) { var aPrefab = cc.instantiate(this.LocationLine); aPrefab.parent = this.node; aPrefab.setPosition(PlayerCollisionLinePosition); }, CreateYellowBG:function(PlayerCollisionLinePosition) { var aPrefab = cc.instantiate(this.YellowBG); aPrefab.parent = this.node; // aPrefab.setAnchorPoint(0.5, 0.5); aPrefab.setPosition(PlayerCollisionLinePosition); return aPrefab; }, hidePKScore : function (player) {//显示隐藏比分 // if(player.name === 'Hero') // { // var MyScore = cc.find('Hero').getComponent("PlayerState").TerminalPoint; // var RivalScore = cc.find('Rivel').getComponent("PlayerState").TerminalPoint; // if (MyScore == 0 && RivalScore==0) // { // return; // } // cc.find('UIControl').getComponent('GameUI').hideTimerMiddlePKScore(MyScore,RivalScore,3); // } }, sortNumber : function (a,b) { return b-a }, update : function (dt) { // cc.log(this.AllBgPrefabArray); if(this.AllBgPrefabArray.length ==this.LastLoadedLvIndex) { // return; // var RandomNum = this.GetRandomLevelNum(); // cc.log('RandomNum is '+RandomNum); // this.LoadRandomLevel(RandomNum); this.LastLoadedLvIndex = 0; // for (var i = 0; i < 4; i++) // { // this.LastLoadedLvIndex = i + 1; // var tPrefab = cc.instantiate(this.AllBgPrefabArray[i]); // this.setStartLine(tPrefab); // tPrefab.parent = this.node; // tPrefab.setAnchorPoint(0.5, 0.5); // tPrefab.setLocalZOrder(-i); // tPrefab.setPosition(i * (740), 0); // this.BgPrefabArray.push(tPrefab); // // this.AddIndexLabelToPrefab(i*(720));//此为预制体添加数字标签,正式项目可注释 // } } var MaxPositionX = 0; var MiniPosiitonX = 0; var HeroPositionX = cc.find('Hero').position.x; // var RivelPositionX = cc.find('Rivel').position.x; var JavalinHero = cc.find('javetemp_Hero'); var JavalinHeroPositionX = 0; // var JavalinRivel = cc.find('javetemp_Rivel'); // var JavalinRivelPositionX = 0; var arr = []; if(JavalinHero!=null ) { // if (JavalinHero!=null && JavalinRivel!=null ) { // // if (JavalinHero.isTag) { // JavalinHeroPositionX = JavalinHero.position.x; // arr.push(JavalinHeroPositionX); // } // if (JavalinRivel.isTag) { // JavalinRivelPositionX = JavalinRivel.position.x; // arr.push(JavalinRivelPositionX); // } // // arr.push(HeroPositionX); // arr.push(RivelPositionX); // // } if (JavalinHero!=null) { if (JavalinHero.isTag) { JavalinHeroPositionX = JavalinHero.position.x; arr.push(JavalinHeroPositionX); } arr.push(HeroPositionX); // arr.push(RivelPositionX); } // else if (JavalinRivel!=null) { // if (JavalinRivel.isTag) { // JavalinRivelPositionX = JavalinRivel.position.x; // arr.push(JavalinRivelPositionX); // } // arr.push(HeroPositionX); // arr.push(RivelPositionX); // } //冒泡排序 HeroPositionX RivelPositionX JavalinHeroPositionX JavalinRivelPositionX arr.sort(this.sortNumber); MaxPositionX = arr[0]; MiniPosiitonX =arr[arr.length-1]; CustomLog("现在的数组是","max",MaxPositionX,"min",MiniPosiitonX); CustomLog("现在的数组是","arr",arr.length); } else { MaxPositionX = HeroPositionX; } var csPositionX = MaxPositionX+370; // this.CurrentPlayerInLvIndex = Math.floor(csPositionX/720); // var MiniPosiitonX = cc.find('Hero').position.x; // var csPositionX = cc.find('Hero').position.x+360; this.CurrentPlayerInLvIndex = Math.floor(csPositionX/740); if(this.LastLoadedLvIndex-this.CurrentPlayerInLvIndex<2 && this.CurrentPlayerInLvIndex!=this.PrePlayerInLvIndex) { this.LastLoadedLvIndex++; // CustomLog("这个对象",this.BgPrefabArray[this.BgPrefabArray.length-1]); var LastLvPositionX = this.BgPrefabArray[this.BgPrefabArray.length - 1].position.x; var NewLvPositionX = LastLvPositionX + 740; // cc.log('this.LastLoadedLvIndex-1 is '+this.LastLoadedLvIndex); // cc.log('this.AllBgPrefabArray.length is '+this.AllBgPrefabArray.length); var tPrefab = cc.instantiate(this.AllBgPrefabArray[this.LastLoadedLvIndex-1]); // cc.log(this.AllBgPrefabArray[this.LastLoadedLvIndex].name+"======name"+this.LastLoadedLvIndex); tPrefab.parent = this.node; tPrefab.setAnchorPoint(0.5, 0.5); tPrefab.setLocalZOrder(-this.LastLoadedLvIndex); tPrefab.setPosition(NewLvPositionX, 0); // this.BgPrefabArray.shift().destroy(); this.BgPrefabArray.push(tPrefab); // cc.log(tPrefab.name+"======name"); if (tPrefab.name == 'JavelinDistanceMiddle') { var aLabel = tPrefab.getChildByName("JavelinDistanceNUM"); var Labelcomp = aLabel.getComponent(cc.Label); Labelcomp.string = this.JavalinDistance.toString(); this.JavalinDistance += 10; } this.setStartLine(tPrefab); // this.AddIndexLabelToPrefab(NewLvPositionX);//此为预制体添加数字标签,正式项目可注释 } this.PrePlayerInLvIndex = this.CurrentPlayerInLvIndex; var MiniPlayerInIndex = Math.floor(MiniPosiitonX/740); // CustomLog("现在的数组是 索引",this.FrontEnableLvIndex); if(MiniPlayerInIndex-this.FrontEnableLvIndex>2) { this.BgPrefabArray[this.FrontEnableLvIndex].destroy(); this.FrontEnableLvIndex++; } }, AddIndexLabelToPrefab:function(NewLvPositionX) { /** **/ var PrefabNumLabelInstance = cc.instantiate(this.PrefabNumLabel); PrefabNumLabelInstance.parent = this.node; PrefabNumLabelInstance.setAnchorPoint(0, 0.5); PrefabNumLabelInstance.setLocalZOrder(1000); PrefabNumLabelInstance.setPosition(NewLvPositionX, 0); this.BgPrefabArray.push(PrefabNumLabelInstance); PrefabNumLabelInstance.getChildByName('MyNumLeft').getComponent(cc.Label).string = 'Left ' + this.LastLoadedLvIndex; PrefabNumLabelInstance.getChildByName('MyNumRight').getComponent(cc.Label).string = 'Right ' + this.LastLoadedLvIndex; /** **/ }, setP : function (tPrefab) { if (tPrefab.getChildByName("New Node")!=null) { if (tPrefab.getChildByName("New Node").getComponent(cc.RigidBody)!=null) { // CustomLog("gangti",tPrefab); tPrefab.getChildByName("New Node").getComponent(cc.RigidBody).syncPosition(); } } }, /** * 这个是设置 每一个 项目开头的 位置的方法 */ setStartLine : function (node) { switch (node.name){ case "SprintStartLine": this.tempStartNode = 0; cc.log("现在是什么开始",node.name); break; case "LongJumpStartLine": this.tempStartNode = 1; cc.log("现在是什么开始",node.name); break; case "HurdleStartLine": this.tempStartNode = 2; cc.log("现在是什么开始",node.name); break; case "JavelinStartLine": this.tempStartNode = 3; cc.log("现在是什么开始",node.name); break; case "BikeStartLine": this.tempStartNode = 4; cc.log("现在是什么开始",node.name); break; } } });