const PlayerStateStatic = require('PlayerState'); cc.Class({ extends: cc.Component, properties: { Hero: { default: null, type: cc.Node }, StayInFrontLongAccelerationBand:null, IsPlayingAudio:false, YellowLinePrefab:null, HeroOldPositionX:0 }, onLoad:function () { //todo 开始不能点击 this.count = 0; return; var Hero = cc.find('Hero'); var PlayerStateScript = Hero.getComponent("PlayerState"); PlayerStateScript.TouchControlEnableTouch = false; this.HeroControlScript = this.Hero.getComponent("HeroControl"); }, start : function () { // cc.log('1111'); cc.director.getCollisionManager().enabled = true; // cc.director.getCollisionManager().enabledDrawBoundingBox = true; // cc.director.getCollisionManager().enabledDebugDraw = true; this.touchClick(); // cc.log('22222'); var CameraNode = cc.find("CameraNode"); var Hero = cc.find("Hero"); if (CameraNode!=null) { CameraNode.parent = Hero; // cc.log('33333'); } // this.DrawBox(); }, DrawBox : function () { //刚体包围盒 cc.director.getPhysicsManager().debugDrawFlags = cc.PhysicsManager.DrawBits.e_aabbBit | cc.PhysicsManager.DrawBits.e_pairBit | cc.PhysicsManager.DrawBits.e_centerOfMassBit | cc.PhysicsManager.DrawBits.e_jointBit | cc.PhysicsManager.DrawBits.e_shapeBit ; }, touchClick : function () { // cc.log('44444'); // cc.log("按屏幕了",this.enableTouch,this.TouchControlEnableTouch); var TouchLayout = cc.find("TouchLayout"); var self = this; TouchLayout.on(cc.Node.EventType.TOUCH_START, function (event) { // cc.log('55555'); this.TOUCH_START(true); }.bind(this), self.node); self.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) { // cc.log('66666'); }.bind(this), self.node); self.node.on(cc.Node.EventType.TOUCH_END, function (event) { // cc.log('77777'); this.TOUCH_END(true); }.bind(this), self.node); }, reset : function () { // cc.log('88888'); var Hero = cc.find('Hero'); var HeroControlScript = Hero.getComponent("HeroControl"); HeroControlScript.EnableHeroMoving(true); }, TOUCH_START:function() { // cc.log('99999'); var Hero = cc.find('Hero'); var scene = cc.director.getScene(); var Level = scene.getChildByName("Level"); var HeroControlScript = Hero.getComponent("HeroControl"); var PlayerStateScript = Hero.getComponent("PlayerState"); // var player = Hero.getChildByName('Player'); if (this.count == 0) { // cc.log('10.10.10'); this.reset(); } this.count++; // cc.log('/***********enableTouch is '+PlayerStateScript.enableTouch+' and another is '+PlayerStateScript.TouchControlEnableTouch); // cc.log("按下去 判断",PlayerStateScript.enableTouch,PlayerStateScript.TouchControlEnableTouch); if(!PlayerStateScript.enableTouch) return; if(!PlayerStateScript.TouchControlEnableTouch) return; var HeroControlPositionX = HeroControlScript.node.position.x -360; //setLine if(PlayerStateScript.CurrentInZoneType!=PlayerStateStatic.ZoneType.FrontLongAccelerationBand && PlayerStateScript.CurrentInZoneType!=PlayerStateStatic.ZoneType.CenterLongAccelerationBand) { var PlayerCollisionLinePosition = cc.p(HeroControlPositionX+4, 3); Level.getComponent('LevelControl').SetLocationLine(PlayerCollisionLinePosition); // cc.log("出来线吗",PlayerCollisionLinePosition); } if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.FrontLongAccelerationBand) { HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.FrontLongAccelerationBand); PlayerStateScript.BTouchedScreenInTheZone = true; var self = this; PlayerStateScript.StayInFrontLongAccelerationBand = function() { self.FillLongAccelerationArea(); } PlayerStateScript.schedule(PlayerStateScript.StayInFrontLongAccelerationBand, 0.01, cc.REPEAT_FOREVER); } else if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.CenterLongAccelerationBand) { PlayerStateScript.BDrawYellowLine = !PlayerStateScript.BDrawYellowLine; PlayerStateScript.BTouchedScreenInTheZone = true; var self = this; PlayerStateScript.StayInFrontLongAccelerationBand = function() { self.FillLongAccelerationArea(); } PlayerStateScript.schedule(PlayerStateScript.StayInFrontLongAccelerationBand, 0.01, cc.REPEAT_FOREVER); } else if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.BehindLongAccelerationBand) { HeroControlScript.Stagger(); } }, TOUCH_END:function() { var PlayerStateScript = cc.find('Hero').getComponent("PlayerState"); if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.CenterLongAccelerationBand|| PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.FrontLongAccelerationBand) { cc.find('Hero').getComponent('HeroControl').stopAudioByName("LongAccelerationStart"); cc.find('Hero').getComponent('HeroControl').playAudioByName("LongAccelerationFinish"); this.IsPlayingAudio = false; PlayerStateScript.unschedule(PlayerStateScript.StayInFrontLongAccelerationBand); } this.YellowLinePrefab = null; this.HeroOldPositionX = 0; }, FillLongAccelerationArea:function() //这个大概18-25毫秒执行一次 { var HeroControlScript = cc.find('Hero').getComponent("HeroControl"); var PlayerStateScript = cc.find('Hero').getComponent("PlayerState"); if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.BehindLongAccelerationBand) { PlayerStateScript.unschedule(PlayerStateScript.StayInFrontLongAccelerationBand); HeroControlScript.Stagger(); cc.find('Hero').getComponent('HeroControl').stopAudioByName("LongAccelerationStart"); cc.find('Hero').getComponent('HeroControl').playAudioByName("LongAccelerationFinish"); this.IsPlayingAudio = false; return; } if(this.IsPlayingAudio == false){ this.IsPlayingAudio = true; cc.find('Hero').getComponent('HeroControl').playAudioByName("LongAccelerationStart"); } // var HeroControlPosition = HeroControlScript.node.getPosition(); // cc.log(this.HeroOldPositionX+"==HeroOldPositionX"); if(this.HeroOldPositionX == 0){ this.HeroOldPositionX = HeroControlScript.node.x; return; } var SubPositionX = HeroControlScript.node.x - this.HeroOldPositionX; var YellowLinePosition = cc.p(HeroControlScript.node.x+50,HeroControlScript.node.y-641-55); // var YellowLinePosition = cc.p(HeroControlScript.node.x,HeroControlScript.node.y-641); if(this.YellowLinePrefab == null){ this.YellowLinePrefab = cc.find('Level').getComponent('LevelControl').CreateYellowBG(YellowLinePosition); } this.YellowLinePrefab.getChildByName('Mask').getChildByName('YellowBG').x+=SubPositionX; this.HeroOldPositionX = HeroControlScript.node.x; HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.CenterLongAccelerationBand); var NetworkSocket = cc.find('Hero').getComponent('NetworkSocket'); var data = { FunctionName: 'LongAccelerationBandSpeedUp'}; NetworkSocket.sendSyncData(JSON.stringify(data)); }, PrintCurrentState:function(PlayerStateScript) { switch (PlayerStateScript.CurrentInZoneType) { case 0 : cc.log('None'); break; case 1 : cc.log('FrontAccelerationBand'); break; case 2 : cc.log('AccelerationBandCenter'); break; case 3 : cc.log('BehindAccelerationBand'); break; case 4 : cc.log('PreHurdleBand'); break; case 5 : cc.log('PerfectHurdleBand'); break; case 6 : cc.log('FrontLongAccelerationBand'); break; case 7 : cc.log('CenterLongAccelerationBand'); break; case 8 : cc.log('BehindLongAccelerationBand'); break; case 9 : cc.log('FrontLongJumpBand'); break; case 10 : cc.log('PerfectLongJumpBand'); break; } }, // update:function(dt) // { // var Rivel = cc.find('Rivel'); // var Hero = cc.find('Hero'); // // cc.log(Math.abs(Rivel.position.x-Hero.position.x)); // // if(Math.abs(Rivel.position.x-Hero.position.x)>3000 && this.distanceX<3000) // // { // // cc.log('distance>3000') // // } // // // // if(Math.abs(Rivel.position.x-Hero.position.x)<3000 && this.distanceX>3000) // // { // // cc.log('distance<3000') // // } // // // this.distanceX=Math.abs(Rivel.position.x-Hero.position.x); // } }); //todo 多点触碰 制裁 cc.Node.maxTouchNum = 1; cc.Node.touchNum = 0; var __dispatchEvent__ = cc.Node.prototype.dispatchEvent; cc.Node.prototype.dispatchEvent = function (event) { switch (event.type) { case 'touchstart': if (cc.Node.touchNum < cc.Node.maxTouchNum) { cc.Node.touchNum++; this._canTouch = true; __dispatchEvent__.call(this, event); } break; case 'touchmove': if (!this._canTouch && cc.Node.touchNum < cc.Node.maxTouchNum) { this._canTouch = true; cc.Node.touchNum++; } if (this._canTouch) { __dispatchEvent__.call(this, event); } break; case 'touchend': if (this._canTouch) { this._canTouch = false; cc.Node.touchNum--; __dispatchEvent__.call(this, event); } break; case 'touchcancel': if (this._canTouch) { this._canTouch = false; cc.Node.touchNum--; __dispatchEvent__.call(this, event); } break; default: __dispatchEvent__.call(this, event); } };