Jelajahi Sumber

优化卡顿
修复重叠状态不能点击问题

zhaochengyang 5 tahun lalu
induk
melakukan
f1e876d042
40 mengubah file dengan 517 tambahan dan 302 penghapusan
  1. 1 1
      .laya/wxgame.json
  2. 16 0
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/499121307a55d4c364697022af56e365424f8216
  3. 5 0
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/5056664b353b4f979d105c4307d29e460d02678d
  4. 0 16
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/76b3c0ec200fd9ec937b0126416c551fec66eaf6
  5. 15 0
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/82ac4f35404bc2373e354a923cab3f05d1e870d8
  6. 17 0
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/92c3438d634c5de339a4f578494078162d5ce955
  7. 0 17
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/9d3f53633143b34f7e8825e075c97c38212493da
  8. 2 2
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/ed09a2d121a8b84ae77e471a2f4c8db8e061e85f
  9. 0 5
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/d2abf98092b33afbf5caac4257c53c4bdb9ed344
  10. 0 15
      .rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/daaeaf5397a2b34901154d72e1096fe59c4ad53b
  11. 16 0
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/499121307a55d4c364697022af56e365424f8216
  12. 5 0
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/5056664b353b4f979d105c4307d29e460d02678d
  13. 0 16
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/76b3c0ec200fd9ec937b0126416c551fec66eaf6
  14. 15 0
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/82ac4f35404bc2373e354a923cab3f05d1e870d8
  15. 17 0
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/92c3438d634c5de339a4f578494078162d5ce955
  16. 0 17
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/9d3f53633143b34f7e8825e075c97c38212493da
  17. 2 2
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/ed09a2d121a8b84ae77e471a2f4c8db8e061e85f
  18. 0 5
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/d2abf98092b33afbf5caac4257c53c4bdb9ed344
  19. 0 15
      .rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/daaeaf5397a2b34901154d72e1096fe59c4ad53b
  20. 1 1
      bin/fileconfig.json
  21. 1 0
      bin/h5/.rec
  22. 1 1
      bin/h5/Ball.atlas
  23. TEMPAT SAMPAH
      bin/h5/Ball.png
  24. 173 96
      bin/js/bundle.js
  25. 1 1
      bin/js/bundle.js.map
  26. 3 3
      laya/.laya
  27. TEMPAT SAMPAH
      laya/assets/Ball/2.png
  28. 14 1
      laya/pages/InGameScene.scene
  29. 1 1
      release/wxgame/fileconfig.json
  30. 1 1
      release/wxgame/h5/Ball.atlas
  31. TEMPAT SAMPAH
      release/wxgame/h5/Ball.png
  32. 1 1
      release/wxgame/js/bundle.js
  33. 1 1
      release/wxgame/js/bundle.js.map
  34. 34 1
      release/wxgame/project.config.json
  35. 38 22
      src/Main/Ball.ts
  36. 4 0
      src/Net/PlayerData.ts
  37. 73 25
      src/Tool/DropRule.ts
  38. 13 21
      src/Tool/GamePool.ts
  39. 34 14
      src/View/InGameView.ts
  40. 12 1
      src/View/RankView.ts

+ 1 - 1
.laya/wxgame.json

@@ -64,5 +64,5 @@
     "forceCompile": false,
     "onlyIndexJS": true,
     "projectType": "ts",
-    "pubTime": 1579261271418
+    "pubTime": 1579331581313
 }

File diff ditekan karena terlalu besar
+ 16 - 0
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/499121307a55d4c364697022af56e365424f8216


File diff ditekan karena terlalu besar
+ 5 - 0
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/5056664b353b4f979d105c4307d29e460d02678d


File diff ditekan karena terlalu besar
+ 0 - 16
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/76b3c0ec200fd9ec937b0126416c551fec66eaf6


File diff ditekan karena terlalu besar
+ 15 - 0
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/82ac4f35404bc2373e354a923cab3f05d1e870d8


File diff ditekan karena terlalu besar
+ 17 - 0
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/92c3438d634c5de339a4f578494078162d5ce955


File diff ditekan karena terlalu besar
+ 0 - 17
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/9d3f53633143b34f7e8825e075c97c38212493da


File diff ditekan karena terlalu besar
+ 2 - 2
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/ed09a2d121a8b84ae77e471a2f4c8db8e061e85f


File diff ditekan karena terlalu besar
+ 0 - 5
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/d2abf98092b33afbf5caac4257c53c4bdb9ed344


File diff ditekan karena terlalu besar
+ 0 - 15
.rpt2_cache/rpt2_981034996b69972eab67662e90386ed59173930e/code/cache/daaeaf5397a2b34901154d72e1096fe59c4ad53b


File diff ditekan karena terlalu besar
+ 16 - 0
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/499121307a55d4c364697022af56e365424f8216


File diff ditekan karena terlalu besar
+ 5 - 0
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/5056664b353b4f979d105c4307d29e460d02678d


File diff ditekan karena terlalu besar
+ 0 - 16
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/76b3c0ec200fd9ec937b0126416c551fec66eaf6


File diff ditekan karena terlalu besar
+ 15 - 0
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/82ac4f35404bc2373e354a923cab3f05d1e870d8


File diff ditekan karena terlalu besar
+ 17 - 0
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/92c3438d634c5de339a4f578494078162d5ce955


File diff ditekan karena terlalu besar
+ 0 - 17
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/9d3f53633143b34f7e8825e075c97c38212493da


File diff ditekan karena terlalu besar
+ 2 - 2
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/ed09a2d121a8b84ae77e471a2f4c8db8e061e85f


File diff ditekan karena terlalu besar
+ 0 - 5
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/d2abf98092b33afbf5caac4257c53c4bdb9ed344


File diff ditekan karena terlalu besar
+ 0 - 15
.rpt2_cache/rpt2_ced057ff145136f44a10ed5d8de26027aa95246d/code/cache/daaeaf5397a2b34901154d72e1096fe59c4ad53b


File diff ditekan karena terlalu besar
+ 1 - 1
bin/fileconfig.json


+ 1 - 0
bin/h5/.rec

@@ -2,6 +2,7 @@ D .
 D AchievementView
 P 9CC89C1D chengjiu-1-4.png
 D Ball
+P FE14E2D2 2.png
 P 2D513A16 43.png
 P 23549AE9 44.png
 P EB2A9929 blast2.png

File diff ditekan karena terlalu besar
+ 1 - 1
bin/h5/Ball.atlas


TEMPAT SAMPAH
bin/h5/Ball.png


+ 173 - 96
bin/js/bundle.js

@@ -241,6 +241,9 @@ var laya = (function (exports) {
         get Distance() {
             return this.netzheshe["Distance"];
         }
+        get OverRun() {
+            return this.netzheshe["OverRun"];
+        }
         get touchsize() {
             return Number(this.netzheshe["touchsize"]);
         }
@@ -1326,6 +1329,64 @@ var laya = (function (exports) {
     }
     AudioManager.open = true;
 
+    class GamePool {
+        constructor() {
+            this.maxAcount = 30;
+            this.modelpool = {};
+            GamePool.ins = this;
+        }
+        static get Instance() {
+            if (GamePool.ins) {
+                return GamePool.ins;
+            }
+            else {
+                return new GamePool();
+            }
+        }
+        GetModel(title) {
+            let poolname = title;
+            if (this.modelpool[poolname] != null && this.modelpool[poolname] != undefined) {
+                if (this.modelpool[poolname].length > 0) {
+                    let model1 = this.modelpool[poolname].shift();
+                    if (!model1.active) {
+                        model1.active = true;
+                    }
+                    return model1;
+                }
+                else {
+                    let model = new Laya.Image();
+                    model.name = title;
+                    return model;
+                }
+            }
+            else {
+                let model = new Laya.Image();
+                model.name = title;
+                return model;
+            }
+        }
+        RecoverModel(_image, title = "", modelstate = false) {
+            if (_image.destroyed) {
+                return;
+            }
+            if (!modelstate && _image.active == false) {
+                return;
+            }
+            let poolname = title;
+            if (this.modelpool[poolname] != null && this.modelpool[poolname] != undefined) {
+                let modelnum = this.modelpool[poolname];
+                this.modelpool[poolname].push(_image);
+            }
+            else {
+                let modelnum = [];
+                modelnum.push(_image);
+                this.modelpool[poolname] = modelnum;
+            }
+            _image.removeSelf();
+            _image.active = false;
+        }
+    }
+
     class DropRule {
         constructor() {
             this.EffectName = new Array("blue", "yellow", "purple", "green");
@@ -1488,7 +1549,7 @@ var laya = (function (exports) {
             return ballsize;
         }
         CreatBall(_index, size, pos) {
-            let ball = new Laya.Image();
+            let ball = GamePool.Instance.GetModel("img" + _index.toString());
             ball.skin = "Game/res/Ball/blast" + _index + ".png";
             ball.anchorX = 0.5;
             ball.anchorY = 0.5;
@@ -1544,6 +1605,14 @@ var laya = (function (exports) {
                 light.centerX = 0;
                 light.centerY = 0;
             }
+            else {
+                _light.anchorX = 0.5;
+                _light.anchorY = 0.5;
+                _light.width = this.LightSize(size);
+                _light.height = this.LightSize(size);
+                _light.centerX = 0;
+                _light.centerY = 0;
+            }
             let _script = ball.getComponent(Ball);
             if (!_script) {
                 let script = ball.addComponent(Ball);
@@ -1556,21 +1625,12 @@ var laya = (function (exports) {
             AudioManager.playMusic(MusicType.down);
         }
         CreatBall2(_index, size, pos) {
-            let ball = new Laya.Image();
+            let ball = GamePool.Instance.GetModel("img" + _index.toString());
             ball.skin = "Game/res/Ball/blast" + _index + ".png";
             ball.anchorX = 0.5;
             ball.anchorY = 0.5;
             ball.height = size;
             ball.width = size;
-            let _rig = ball.getComponent(Laya.RigidBody);
-            if (!_rig) {
-                let rig = ball.addComponent(Laya.RigidBody);
-                rig.allowRotation = true;
-                rig.gravityScale = 3;
-            }
-            else {
-                _rig.enabled = true;
-            }
             let _collider = ball.getComponent(Laya.CircleCollider);
             if (!_collider) {
                 let collider = ball.addComponent(Laya.CircleCollider);
@@ -1581,8 +1641,17 @@ var laya = (function (exports) {
                 collider.radius = size / 2;
             }
             else {
-                _collider.enabled = true;
-                _collider.isSensor = false;
+                ball.getComponent(Laya.CircleCollider).enabled = true;
+                ball.getComponent(Laya.CircleCollider).isSensor = true;
+            }
+            let _rig = ball.getComponent(Laya.RigidBody);
+            if (!_rig) {
+                let rig = ball.addComponent(Laya.RigidBody);
+                rig.allowRotation = true;
+                rig.gravityScale = 3;
+            }
+            else {
+                ball.getComponent(Laya.RigidBody).enabled = true;
             }
             let _num = ball.getChildByName("num");
             let zi;
@@ -1612,11 +1681,19 @@ var laya = (function (exports) {
                 light.centerX = 0;
                 light.centerY = 0;
             }
+            else {
+                _light.anchorX = 0.5;
+                _light.anchorY = 0.5;
+                _light.width = this.LightSize(size);
+                _light.height = this.LightSize(size);
+                _light.centerX = 0;
+                _light.centerY = 0;
+            }
             let _script = ball.getComponent(Ball);
             if (!_script) {
                 let script = ball.addComponent(Ball);
             }
-            this.SetPosition(ball, pos);
+            ball.pos(pos.x, pos.y);
             Laya.timer.once(1, this, () => {
                 EventManager.StageTrigger(StageMode.Clone, [ball]);
             });
@@ -1700,6 +1777,36 @@ var laya = (function (exports) {
                 case 180:
                     num = 223;
                     break;
+                case 185:
+                    num = 231;
+                    break;
+                case 190:
+                    num = 236;
+                    break;
+                case 195:
+                    num = 241;
+                    break;
+                case 200:
+                    num = 247;
+                    break;
+                case 205:
+                    num = 253;
+                    break;
+                case 210:
+                    num = 260;
+                    break;
+                case 215:
+                    num = 268;
+                    break;
+                case 220:
+                    num = 275;
+                    break;
+                case 225:
+                    num = 280;
+                    break;
+                case 230:
+                    num = 287;
+                    break;
             }
             return num;
         }
@@ -1797,72 +1904,6 @@ var laya = (function (exports) {
         }
     }
 
-    class GamePool {
-        constructor() {
-            this.modelpool = {};
-            this.maxAcount = 30;
-            GamePool.ins = this;
-        }
-        static get Instance() {
-            if (GamePool.ins) {
-                return GamePool.ins;
-            }
-            else {
-                return new GamePool();
-            }
-        }
-        GetModel(title) {
-            var poolname = title;
-            if (this.modelpool[poolname] != null && this.modelpool[poolname] != undefined) {
-                if (this.modelpool[poolname].length > 0) {
-                    var model1 = this.modelpool[poolname][0];
-                    this.modelpool[poolname].splice(0, 1);
-                    if (!model1.active) {
-                        model1.active = true;
-                    }
-                    model1.active = true;
-                    return model1;
-                }
-                else {
-                    var model = new Laya.Image();
-                    return model;
-                }
-            }
-            else {
-                var model = new Laya.Image();
-                model.active = true;
-                return model;
-            }
-        }
-        RecoverModel(_image, title = "", modelstate = false) {
-            if (_image.destroyed) {
-                return;
-            }
-            if (!modelstate && _image.active == false) {
-                return;
-            }
-            var poolname = title;
-            if (this.modelpool[poolname] != null && this.modelpool[poolname] != undefined) {
-                var modelnum = this.modelpool[poolname];
-                if (modelnum.length > this.maxAcount) {
-                    _image.destroy();
-                    return;
-                }
-                else {
-                    modelnum.push(_image);
-                }
-            }
-            else {
-                modelnum = [];
-                modelnum.push(_image);
-                this.modelpool[poolname] = modelnum;
-            }
-            _image.pos(-1000, 0);
-            _image.removeSelf();
-            _image.active = false;
-        }
-    }
-
     var Vector2 = Laya.Vector2;
     class Ball extends Laya.Script {
         constructor() {
@@ -1892,17 +1933,31 @@ var laya = (function (exports) {
             this.score = Number(score.value);
         }
         onEnable() {
+            this.moved = false;
+            this.mark = false;
+            this.clear = false;
+            this.owner.on(Laya.Event.CLICK, this, this.ClickBall);
+            EventManager.EventOn(PropEffecf.DOUBLE, this, this.ClickDouble);
+            EventManager.EventOn(PropEffecf.NONE, this, this.ClickNone);
+            EventManager.EventOn(PropEffecf.HAMMER, this, this.ClickHammer);
+            let score = this.owner.getChildByName("num");
+            this.score = Number(score.value);
         }
         onUpdate() {
             this.CheckLight();
             if (this.mark) {
-                let _rig = this.owner.getComponent(Laya.RigidBody);
-                let _collider = this.owner.getComponent(Laya.CircleCollider);
-                _collider.isSensor = true;
-                _collider.enabled = false;
-                _rig.enabled = false;
-                this.Move(GameManager.Instance.TargetPosition);
-                this.moved = true;
+                if (!this.moved) {
+                    let owner = this.owner;
+                    let _rig = this.owner.getComponent(Laya.RigidBody);
+                    let _collider = this.owner.getComponent(Laya.CircleCollider);
+                    _collider.isSensor = true;
+                    _collider.enabled = false;
+                    _rig.enabled = false;
+                    _collider.destroy();
+                    _rig.destroy();
+                    this.Move(GameManager.Instance.TargetPosition);
+                    this.moved = true;
+                }
             }
         }
         CheckLight() {
@@ -1916,7 +1971,7 @@ var laya = (function (exports) {
                 }
                 let distan = Laya.Vector3.distance(new Laya.Vector3(other.x, other.y, 0), new Laya.Vector3(_node.x, _node.y, 0));
                 let dis = _node.width / 2 + other.width / 2;
-                if (Math.abs(distan - dis) <= 3 || Math.abs(distan - dis) <= 3) {
+                if (Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || distan < dis) {
                     if (ball.score == this.score) {
                         light = true;
                     }
@@ -1949,8 +2004,9 @@ var laya = (function (exports) {
                 let _collider = this.owner.getComponent(Laya.CircleCollider);
                 _collider.enabled = false;
                 _rig.enabled = false;
-                owner.removeSelf();
-                owner.destroy();
+                _collider.destroy();
+                _rig.destroy();
+                this.owner.removeSelf();
                 let _index = DropRule.Instance.GetBallIndex(this.score).toString();
                 GamePool.Instance.RecoverModel(owner, "img" + _index);
                 let id = DropRule.Instance.GetBallIndex(num);
@@ -1978,8 +2034,11 @@ var laya = (function (exports) {
                 let _collider = this.owner.getComponent(Laya.CircleCollider);
                 _collider.enabled = false;
                 _rig.enabled = false;
+                _collider.destroy();
+                _rig.destroy();
                 owner.removeSelf();
-                owner.destroy();
+                let _index = DropRule.Instance.GetBallIndex(this.score).toString();
+                GamePool.Instance.RecoverModel(owner, "img" + _index);
                 InGameView.Instance.SkillNumRefresh();
                 EventManager.EventTrigger(PropEffecf.NONE);
                 InGameView.Instance.EffectMode(false);
@@ -2019,6 +2078,8 @@ var laya = (function (exports) {
                 }, AccountManager.Instance.curplayerData.MergeSpeed * 1000, Laya.Ease.linearInOut, Laya.Handler.create(this, () => {
                     move.clear();
                     this.owner.removeSelf();
+                    let _index = DropRule.Instance.GetBallIndex(this.score).toString();
+                    GamePool.Instance.RecoverModel(owner, "img" + _index);
                     if (!DropRule.Instance.Cloned) {
                         let num = DropRule.Instance.GetBallIndex(GameManager.Instance.ScoreRecord2);
                         let size = DropRule.Instance.GetBallSize(GameManager.Instance.ScoreRecord2);
@@ -2028,7 +2089,7 @@ var laya = (function (exports) {
                         if (GameManager.Instance.EliminateNum >= AccountManager.Instance.curplayerData.ShakeNum) {
                             WXSDK.Shake();
                         }
-                        if (DropRule.Instance.STAGE > 1) {
+                        if (DropRule.Instance.STAGE > 1 && !InGameView.Instance.OverRun) {
                             DropRule.Instance.FallDown();
                         }
                         GameManager.Instance.EliminateNum = 0;
@@ -2065,10 +2126,8 @@ var laya = (function (exports) {
                     continue;
                 }
                 let distan = Laya.Vector3.distance(new Laya.Vector3(other.x, other.y, 0), new Laya.Vector3(_node.x, _node.y, 0));
-                let distanceX = Math.abs(_node.x - other.x);
-                let distanceY = Math.abs(_node.y - other.y);
                 let dis = _node.width / 2 + other.width / 2;
-                if (Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance) {
+                if (Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || distan < dis) {
                     if (ball.score == _nodeball.score) {
                         ball.mark = true;
                         this.MouseClick(other);
@@ -2083,6 +2142,7 @@ var laya = (function (exports) {
             super();
             this.LoseView = false;
             this.WinView = false;
+            this.OverRun = false;
             InGameView.ins = this;
             EventManager.StageOn(StageMode.Clone, this, this.AddPrefab);
             EventManager.StageOn(StageMode.Win, this, this.Win);
@@ -2133,11 +2193,15 @@ var laya = (function (exports) {
         CheckHeight() {
             if (GameManager.Instance.CheckHeight) {
                 let down = false;
+                this.OverRun = false;
                 for (let i = 0; i < this.prefabbox.numChildren; i++) {
                     let child = this.prefabbox.getChildAt(i);
                     if (child.y < DropRule.Instance.DropHeight) {
                         down = true;
                     }
+                    if (child.y < AccountManager.Instance.curplayerData.OverRun) {
+                        this.OverRun = true;
+                    }
                 }
                 if (!down) {
                     DropRule.Instance.FallDown();
@@ -2346,6 +2410,8 @@ var laya = (function (exports) {
                         _rig.enabled = false;
                         Laya.timer.clearAll(prefab);
                         prefab.removeSelf();
+                        let _index = DropRule.Instance.GetBallIndex(ball.score);
+                        GamePool.Instance.RecoverModel(prefab, _index.toString());
                     }
                 }
                 this.SkillNumRefresh();
@@ -2371,6 +2437,8 @@ var laya = (function (exports) {
                         _rig.enabled = false;
                         Laya.timer.clearAll(prefab);
                         prefab.removeSelf();
+                        let _index = DropRule.Instance.GetBallIndex(ball.score);
+                        GamePool.Instance.RecoverModel(prefab, _index.toString());
                     }
                 }
                 this.SkillNumRefresh();
@@ -2399,8 +2467,12 @@ var laya = (function (exports) {
                     let _collider = prefab.getComponent(Laya.CircleCollider);
                     _collider.enabled = false;
                     _rig.enabled = false;
+                    _collider.destroy();
+                    _rig.destroy();
                     Laya.timer.clearAll(prefab);
                     prefab.removeSelf();
+                    let _index = DropRule.Instance.GetBallIndex(ball.score);
+                    GamePool.Instance.RecoverModel(prefab, _index.toString());
                 }
             }
         }
@@ -2431,7 +2503,8 @@ var laya = (function (exports) {
                         _rig.enabled = false;
                         Laya.timer.clearAll(prefab);
                         prefab.removeSelf();
-                        prefab.destroy();
+                        let _index = DropRule.Instance.GetBallIndex(ball.score);
+                        GamePool.Instance.RecoverModel(prefab, _index.toString());
                     }
                 }
             }
@@ -2461,6 +2534,8 @@ var laya = (function (exports) {
                             _rig.enabled = false;
                             Laya.timer.clearAll(prefab);
                             prefab.removeSelf();
+                            let _index = DropRule.Instance.GetBallIndex(ball.score);
+                            GamePool.Instance.RecoverModel(prefab, _index.toString());
                         }
                     }
                 }
@@ -2487,6 +2562,8 @@ var laya = (function (exports) {
                             _rig.enabled = false;
                             Laya.timer.clearAll(prefab);
                             prefab.removeSelf();
+                            let _index = DropRule.Instance.GetBallIndex(ball.score);
+                            GamePool.Instance.RecoverModel(prefab, _index.toString());
                         }
                     }
                 }

File diff ditekan karena terlalu besar
+ 1 - 1
bin/js/bundle.js.map


+ 3 - 3
laya/.laya

@@ -1,6 +1,6 @@
 <project version="2.0">
-   <asynRes>img,temp,sound                                                                                                                                 </asynRes>
-   <unDealRes>embed                                                                                                                                 </unDealRes>
+   <asynRes>img,temp,sound                                                                                                                                    </asynRes>
+   <unDealRes>embed                                                                                                                                    </unDealRes>
    <resTypes>png,jpg   </resTypes>
    <resExportPath>bin/h5   </resExportPath>
    <asynResExportPath>bin   </asynResExportPath>
@@ -15,7 +15,7 @@ var Dialog=laya.ui.Dialog;]]>   </codeImportsJS>
    <shareResPath/>
    <codeType>1   </codeType>
    <resCanCompress/>
-   <resPublishQuality>80                                                                                                                                 </resPublishQuality>
+   <resPublishQuality>80                                                                                                                                    </resPublishQuality>
    <langPath/>
    <defaultFont/>
    <codeImportsTS><![CDATA[import View=Laya.View;

TEMPAT SAMPAH
laya/assets/Ball/2.png


+ 14 - 1
laya/pages/InGameScene.scene

@@ -1,10 +1,12 @@
 {
+    "x":0,
     "type":"Scene",
     "selectedBox":2,
+    "selecteID":738,
     "searchKey":"Scene",
     "props":{"width":720,"sceneColor":"#000000","pref":"@Prefab:Pr","height":1280,"autoDestroyAtClosed":true},
     "nodeParent":-1,
-    "maxID":737,
+    "maxID":740,
     "label":"Scene",
     "isOpen":true,
     "isDirectory":true,
@@ -13,6 +15,7 @@
     "compId":2,
     "child":[
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,BottomCollider,BottomCollider",
             "props":{"y":892,"x":0,"width":729,"visible":true,"var":"BottomCollider","skin":"InGameView/colliderbottom.png","scaleY":1,"scaleX":1,"name":"BottomCollider","height":211,"bottom":177,"alpha":1},
@@ -57,6 +60,7 @@
             "$HIDDEN":false
         },
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,RightCollider,RightCollider",
             "props":{"y":937,"x":720,"width":82,"var":"RightCollider","skin":"InGameView/0.png","pivotY":939,"pivotX":79,"name":"RightCollider","height":957,"alpha":1},
@@ -100,6 +104,7 @@
                 }]
         },
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,LeftCollider,LeftCollider",
             "props":{"y":943,"x":78,"width":80,"var":"LeftCollider","skin":"InGameView/1.png","scaleY":1,"scaleX":1,"pivotY":939,"pivotX":80,"name":"LeftCollider","height":885,"alpha":1},
@@ -143,6 +148,7 @@
                 }]
         },
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,BG",
             "props":{"y":0,"x":0,"var":"BG","top":0,"skin":"InGameView/groundplane.png","sizeGrid":"179,113,184,121","right":0,"left":0,"bottom":0},
@@ -157,6 +163,7 @@
             "$HIDDEN":false
         },
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,bottom",
             "props":{"x":78,"width":514,"skin":"InGameView/borderbottom.png","scaleX":1.1,"name":"bottom","height":160,"bottom":222},
@@ -171,6 +178,7 @@
                 ]
         },
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,area",
             "props":{"y":0,"x":14,"width":346,"top":0,"skin":"InGameView/border2.png","scaleY":2,"scaleX":2,"name":"area","bottom":380},
@@ -185,6 +193,7 @@
                 ]
         },
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,prop",
             "props":{"skin":"InGameView/blast-35.png","right":0,"name":"prop","left":0,"bottom":0},
@@ -399,6 +408,7 @@
             "$HIDDEN":false
         },
         {
+            "x":15,
             "type":"Sprite",
             "searchKey":"Sprite,prefabbox",
             "props":{"y":8,"x":8,"width":16,"var":"prefabbox","pivotY":8,"pivotX":8,"height":16},
@@ -412,6 +422,7 @@
                 ]
         },
         {
+            "x":15,
             "type":"ProgressBar",
             "searchKey":"ProgressBar,LevelProgress",
             "props":{"x":360,"width":281,"var":"LevelProgress","value":0,"top":120,"skin":"InGameView/jindutiao-1-2.png","pivotY":22,"pivotX":141,"height":44},
@@ -516,6 +527,7 @@
                 }]
         },
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,Effect",
             "props":{"y":49,"x":0,"visible":false,"var":"Effect","skin":"InGameView/youxinei-1-2.png","right":0,"left":0},
@@ -624,6 +636,7 @@
             "$HIDDEN":true
         },
         {
+            "x":15,
             "type":"Image",
             "searchKey":"Image,Guide",
             "props":{"x":311,"width":124,"visible":false,"var":"Guide","skin":"InGameView/yindao.png","pivotY":32,"pivotX":31,"height":148,"bottom":160},

File diff ditekan karena terlalu besar
+ 1 - 1
release/wxgame/fileconfig.json


File diff ditekan karena terlalu besar
+ 1 - 1
release/wxgame/h5/Ball.atlas


TEMPAT SAMPAH
release/wxgame/h5/Ball.png


File diff ditekan karena terlalu besar
+ 1 - 1
release/wxgame/js/bundle.js


File diff ditekan karena terlalu besar
+ 1 - 1
release/wxgame/js/bundle.js.map


+ 34 - 1
release/wxgame/project.config.json

@@ -1 +1,34 @@
-{"description":"项目配置文件。","setting":{"urlCheck":false,"es6":false,"postcss":true,"minified":false,"newFeature":true},"compileType":"game","libVersion":"game","appid":"wx9170ca1ff6f31088","projectname":"layaWXTest","condition":{"search":{"current":-1,"list":[]},"conversation":{"current":-1,"list":[]},"game":{"currentL":-1,"list":[]},"miniprogram":{"current":-1,"list":[]}}}
+{
+	"description": "项目配置文件。",
+	"setting": {
+		"urlCheck": false,
+		"es6": false,
+		"postcss": true,
+		"minified": false,
+		"newFeature": true
+	},
+	"compileType": "game",
+	"libVersion": "game",
+	"appid": "wx9170ca1ff6f31088",
+	"projectname": "layaWXTest",
+	"simulatorType": "wechat",
+	"simulatorPluginLibVersion": {},
+	"condition": {
+		"search": {
+			"current": -1,
+			"list": []
+		},
+		"conversation": {
+			"current": -1,
+			"list": []
+		},
+		"game": {
+			"currentL": -1,
+			"list": []
+		},
+		"miniprogram": {
+			"current": -1,
+			"list": []
+		}
+	}
+}

+ 38 - 22
src/Main/Ball.ts

@@ -12,7 +12,6 @@ import { WXSDK } from "../Net/WXSDK";
 import { GamePool } from "../Tool/GamePool";
 export  default class Ball extends Laya.Script{
     private static ins:Ball;
-    private _rig:Laya.RigidBody;
     //光圈
     public Light:Laya.Image;
     // public TargetArray = [];
@@ -48,18 +47,32 @@ export  default class Ball extends Laya.Script{
         this.score = Number(score.value);
     }
     onEnable(){
-        
+        this.moved = false;
+        this.mark = false;
+        this.clear = false;
+
+        this.owner.on(Laya.Event.CLICK,this,this.ClickBall);
+        EventManager.EventOn(PropEffecf.DOUBLE,this,this.ClickDouble);
+        EventManager.EventOn(PropEffecf.NONE,this,this.ClickNone);
+        EventManager.EventOn(PropEffecf.HAMMER,this,this.ClickHammer);
+        let score = this.owner.getChildByName("num") as Laya.FontClip;
+        this.score = Number(score.value);
     }
     onUpdate(){
         this.CheckLight();
         if(this.mark){
-            let _rig = this.owner.getComponent(Laya.RigidBody) as Laya.RigidBody;
-            let _collider = this.owner.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
-            _collider.isSensor = true;
-            _collider.enabled = false;
-            _rig.enabled = false;
-            this.Move(GameManager.Instance.TargetPosition);
-            this.moved = true;
+            if(!this.moved){
+                let owner = this.owner as Laya.Image;
+                let _rig = this.owner.getComponent(Laya.RigidBody) as Laya.RigidBody;
+                let _collider = this.owner.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
+                _collider.isSensor = true;
+                _collider.enabled = false;
+                _rig.enabled = false;
+                _collider.destroy();
+                _rig.destroy();
+                this.Move(GameManager.Instance.TargetPosition);
+                this.moved = true;
+            }
         }
         // if (DropRule.Instance.STAGE == 1 && GameManager.Instance.Wave < 3) {
         //     if (!InGameView.Instance.guide.isPlaying && !GameManager.Instance.played) {
@@ -99,7 +112,7 @@ export  default class Ball extends Laya.Script{
             }
             let distan =  Laya.Vector3.distance(new Laya.Vector3(other.x,other.y,0),new Laya.Vector3(_node.x,_node.y,0));
             let dis = _node.width/2 + other.width/2;
-            if(Math.abs(distan-dis)  <=3 || Math.abs(distan-dis) <=3){
+            if(Math.abs(distan-dis)  <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan-dis) <= AccountManager.Instance.curplayerData.Distance || distan < dis){
                 if(ball.score == this.score){
                     light = true;
                 }
@@ -138,9 +151,11 @@ export  default class Ball extends Laya.Script{
             let _collider = this.owner.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
             _collider.enabled = false;
             _rig.enabled = false;
+            _collider.destroy();
+            _rig.destroy();
             // Laya.timer.clearAll(this);
-            owner.removeSelf();
-            owner.destroy();
+            this.owner.removeSelf();
+            // owner.destroy();
             // this.owner.destroy();
             let _index = DropRule.Instance.GetBallIndex(this.score).toString();
             // Laya.Pool.recover("img" + _index,owner);
@@ -177,11 +192,13 @@ export  default class Ball extends Laya.Script{
             let _collider = this.owner.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
             _collider.enabled = false;
             _rig.enabled = false;
+            _collider.destroy();
+            _rig.destroy();
             // Laya.timer.clearAll(this);
             owner.removeSelf();
-            owner.destroy();
-            // let _index = DropRule.Instance.GetBallIndex(this.score).toString();
-            // GamePool.Instance.RecoverModel(owner,"img"+_index);
+            // owner.destroy();
+            let _index = DropRule.Instance.GetBallIndex(this.score).toString();
+            GamePool.Instance.RecoverModel(owner,"img"+_index);
 
             // Laya.Pool.recover("img" +_index,owner);
             // this.owner.destroy();
@@ -288,8 +305,8 @@ export  default class Ball extends Laya.Script{
                 // Laya.timer.clearAll(this);
                 this.owner.removeSelf();
                 // this.owner.destroy();
-                // let _index = DropRule.Instance.GetBallIndex(this.score).toString();
-                // GamePool.Instance.RecoverModel(owner,"img"+_index );
+                let _index = DropRule.Instance.GetBallIndex(this.score).toString();
+                GamePool.Instance.RecoverModel(owner,"img"+_index );
                 // Laya.Pool.recover("img" +_index,owner);
                 
                 // Laya.stage.removeChild(owner)
@@ -304,8 +321,8 @@ export  default class Ball extends Laya.Script{
                     if(GameManager.Instance.EliminateNum >= AccountManager.Instance.curplayerData.ShakeNum){
                         WXSDK.Shake();
                     }
-                    //消除后掉球  第一关不掉
-                    if(DropRule.Instance.STAGE>1){
+                    //消除后掉球  第一关不掉  超过溢出线时不掉
+                    if(DropRule.Instance.STAGE>1 && !InGameView.Instance.OverRun){
                         DropRule.Instance.FallDown();
                     }
                     //将本波消除数量归0
@@ -384,6 +401,7 @@ export  default class Ball extends Laya.Script{
     // }
     //鼠标点击
     MouseClick(_node:Laya.Image){
+        
         let _nodeball = _node.getComponent(Ball) as Ball;
         for (let i = 0; i < InGameView.Instance.prefabbox.numChildren; i++){
             let other = InGameView.Instance.prefabbox.getChildAt(i) as Laya.Image;
@@ -395,10 +413,8 @@ export  default class Ball extends Laya.Script{
                 continue
             } 
             let distan =  Laya.Vector3.distance(new Laya.Vector3(other.x,other.y,0),new Laya.Vector3(_node.x,_node.y,0));
-            let distanceX = Math.abs(_node.x - other.x) ;
-            let distanceY = Math.abs(_node.y - other.y) ;
             let dis = _node.width/2 + other.width/2;
-            if(Math.abs(distan-dis)  <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan-dis) <= AccountManager.Instance.curplayerData.Distance){
+            if(Math.abs(distan-dis)  <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan-dis) <= AccountManager.Instance.curplayerData.Distance || distan < dis){
                 if(ball.score == _nodeball.score){
                     ball.mark = true;
                     this.MouseClick(other);

+ 4 - 0
src/Net/PlayerData.ts

@@ -145,6 +145,10 @@ export class PlayerData {
     public get Distance():number{
         return this.netzheshe["Distance"]
     }
+    //获取球的溢出线
+    public get OverRun():number{
+        return this.netzheshe["OverRun"]
+    }
     public get touchsize():number
     {
         return Number(this.netzheshe["touchsize"]);

+ 73 - 25
src/Tool/DropRule.ts

@@ -210,9 +210,9 @@ export class DropRule{
     /**创建球的预制  合成克隆*/
     CreatBall(_index:number,size:number,pos:Laya.Vector2){
         // let ball = GamePool.Instance.GetModel(AssetManager.Instance.Ball.get(_index),_index.toString());
-        // let ball = GamePool.Instance.GetModel("img"+_index.toString());
+        let ball = GamePool.Instance.GetModel("img"+_index.toString());
         // let ball = Laya.Pool.getItemByClass("img" + _index.toString(),Laya.Image);
-        let ball:Laya.Image = new Laya.Image();
+        // let ball:Laya.Image = new Laya.Image();
         ball.skin = "Game/res/Ball/blast"+ _index + ".png";
         ball.anchorX = 0.5;
         ball.anchorY = 0.5;
@@ -220,7 +220,7 @@ export class DropRule{
         ball.width = size;
         //刚体碰撞器
         let _rig = ball.getComponent(Laya.RigidBody) as Laya.RigidBody;
-        if(!_rig){
+        if(!_rig ){//|| _rig.destroyed
             let rig = ball.addComponent(Laya.RigidBody) as Laya.RigidBody;
             rig.allowRotation = true;
             rig.gravityScale = 3;
@@ -229,7 +229,7 @@ export class DropRule{
             _rig.enabled = true;
         }
         let _collider = ball.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
-        if(!_collider){
+        if(!_collider ){//|| !_collider.destroyed
             let collider = ball.addComponent(Laya.CircleCollider) as Laya.CircleCollider;
             collider.restitution = AccountManager.Instance.curplayerData.Restitution;
             if (this.STAGE == 1 && GameManager.Instance.Wave < 3) {
@@ -274,13 +274,19 @@ export class DropRule{
             light.centerX = 0;
             light.centerY = 0;
         }
-        
+        else{
+            _light.anchorX = 0.5;
+            _light.anchorY = 0.5;
+            _light.width = this.LightSize(size);
+            _light.height =this.LightSize(size);
+            _light.centerX = 0;
+            _light.centerY = 0;
+        }
         //脚本
         let _script = ball.getComponent(Ball) as Ball;
         if(!_script){
             let script = ball.addComponent(Ball) as Ball;
         }
-
         ball.pos(pos.x,pos.y);
         // this.SetPosition(ball,pos);
         Laya.timer.once(1,this,()=>{
@@ -291,39 +297,43 @@ export class DropRule{
     }
     /**创建球的预制  自动掉球*/
     CreatBall2(_index:number,size:number,pos:Laya.Vector2){
-        // let ball = GamePool.Instance.GetModel("img"+_index.toString());
+        let ball = GamePool.Instance.GetModel("img"+_index.toString());
         // let ball = GamePool.Instance.GetModel(AssetManager.Instance.Ball.get(_index),_index.toString());
         // let ball = Laya.Pool.getItemByClass("img" +_index.toString(),Laya.Image);
-        let ball:Laya.Image = new Laya.Image();
+        // let ball:Laya.Image = new Laya.Image();
         ball.skin = "Game/res/Ball/blast"+ _index + ".png";
         ball.anchorX = 0.5;
         ball.anchorY = 0.5;
         ball.height = size;
         ball.width = size;
-        //刚体碰撞器
-        let _rig = ball.getComponent(Laya.RigidBody) as Laya.RigidBody;
-        if(!_rig){
-            let rig = ball.addComponent(Laya.RigidBody) as Laya.RigidBody;
-            rig.allowRotation = true;
-            rig.gravityScale = 3;
-        }
-        else{
-            _rig.enabled = true;
-        }
+        //碰撞器
         let _collider = ball.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
-        if(!_collider){
+        if(!_collider ){//|| _collider.destroyed
             let collider = ball.addComponent(Laya.CircleCollider) as Laya.CircleCollider;
             collider.restitution = AccountManager.Instance.curplayerData.Restitution;
-            if (this.STAGE == 1 && GameManager.Instance.Wave < 3) {
+            if ( this.STAGE == 1 && GameManager.Instance.Wave < 3 ) {
                 collider.restitution = 0;
             }
             collider.radius = size / 2;
         }
         else{
-            _collider.enabled = true;
-            _collider.isSensor = false;
+            ball.getComponent(Laya.CircleCollider).enabled = true;
+            ball.getComponent(Laya.CircleCollider).isSensor = true;
+            // _collider.enabled = true;
+            // _collider.isSensor = false;
         }
-        
+        //刚体
+        let _rig = ball.getComponent(Laya.RigidBody) as Laya.RigidBody;
+        if(!_rig ){//|| _rig.destroyed
+            let rig = ball.addComponent(Laya.RigidBody) as Laya.RigidBody;
+            rig.allowRotation = true;
+            rig.gravityScale = 3;
+        }
+        else{
+            ball.getComponent(Laya.RigidBody).enabled = true;
+            // _rig.enabled = true;
+        }
+       
         //字体
         let _num = ball.getChildByName("num") as Laya.FontClip;
         let zi;
@@ -356,14 +366,22 @@ export class DropRule{
             light.centerX = 0;
             light.centerY = 0;
         }
+        else{
+            _light.anchorX = 0.5;
+            _light.anchorY = 0.5;
+            _light.width = this.LightSize(size);
+            _light.height =this.LightSize(size);
+            _light.centerX = 0;
+            _light.centerY = 0;
+        }
         
         //脚本
         let _script = ball.getComponent(Ball) as Ball;
         if(!_script){
             let script = ball.addComponent(Ball) as Ball;
         }
-        // ball.pos(pos.x,pos.y);
-        this.SetPosition(ball,pos);
+        ball.pos(pos.x,pos.y);
+        // this.SetPosition(ball,pos);
         Laya.timer.once(1,this,()=>{
             EventManager.StageTrigger(StageMode.Clone,[ball]);
         })
@@ -449,6 +467,36 @@ export class DropRule{
             case 180:
                 num = 223
                 break;
+            case 185:
+                num = 231;
+                break;
+            case 190:
+                num = 236;
+                break;
+            case 195:
+                num = 241;
+                break;
+            case 200:
+                num = 247;
+                break;
+            case 205:
+                num = 253;
+                break;
+            case 210:
+                num = 260;
+                break;
+            case 215:
+                num = 268;
+                break;
+            case 220:
+                num = 275;
+                break;
+            case 225:
+                num = 280;
+                break;
+            case 230:
+                num = 287;
+                break;
         }
         return num
     }

+ 13 - 21
src/Tool/GamePool.ts

@@ -4,8 +4,7 @@
     constructor(){
         GamePool.ins = this;
     }
-    //模型库
-    private modelpool : {[Key:string]:Array<Laya.Image> } = {};
+    
     //最大存储数量
     private maxAcount:number = 30;
 
@@ -17,28 +16,28 @@
             return new GamePool();
         }
     }
+    //模型库
+    private modelpool : {[Key:string]:Array<Laya.Image> } = {};
     //获取模型
     public GetModel(title:string):Laya.Image{
-        var poolname = title ;
+        let poolname = title ;
         if(this.modelpool[poolname]!=null && this.modelpool[poolname]!=undefined){
             if(this.modelpool[poolname].length >0){
-                var model1 = this.modelpool[poolname][0];
-                this.modelpool[poolname].splice(0,1);
+                let model1 = this.modelpool[poolname].shift();
                 if(!model1.active){
                     model1.active = true;  
                 }
-                model1.active = true;
                 return model1;
             }
             else{
-                var model = new Laya.Image();
+                let model = new Laya.Image();
+                model.name=title;
                 return model;
             }
         }
         else{
-            var model = new Laya.Image();
-            // var model = _image;
-            model.active = true;
+            let model = new Laya.Image();
+            model.name=title;
             return model;
         }
     }
@@ -50,23 +49,16 @@
         if(!modelstate && _image.active == false){
             return;
         }
-        var poolname = title ; 
+       let poolname = title ; 
         if(this.modelpool[poolname] != null && this.modelpool[poolname] != undefined){
-            var modelnum = this.modelpool[poolname];
-            if( modelnum.length>this.maxAcount){
-                _image.destroy();
-                return;
-            }
-            else{
-                modelnum.push(_image);
-            }
+           let modelnum = this.modelpool[poolname];
+           this.modelpool[poolname].push(_image);
         }
         else{
-            modelnum = [];
+            let modelnum = [];
             modelnum.push(_image);
             this.modelpool[poolname] = modelnum;
         }
-        _image.pos(-1000,0);
         _image.removeSelf();
         _image.active = false;
     }

+ 34 - 14
src/View/InGameView.ts

@@ -17,6 +17,9 @@ export default class InGameView extends ui.InGameSceneUI implements SC{
     public LoseView = false;
     //是否弹出成功界面
     public WinView = false;
+    //球是否溢出
+    public OverRun = false;
+
     constructor(){
         super();
         InGameView.ins = this;
@@ -74,16 +77,21 @@ export default class InGameView extends ui.InGameSceneUI implements SC{
     CheckHeight(){
         if(GameManager.Instance.CheckHeight){
             let down = false;
+            this.OverRun = false;
             for (let i = 0; i < this.prefabbox.numChildren; i++) {
                 let child = this.prefabbox.getChildAt(i) as Laya.Image;
                 if(child.y < DropRule.Instance.DropHeight){
                     down = true;
                 }
+                if(child.y < AccountManager.Instance.curplayerData.OverRun){
+                    this.OverRun = true;
+                }
             }
             if(!down){
                 DropRule.Instance.FallDown();
             }
         }
+        
     }
     //检测是否游戏失败
     CheckLose(){
@@ -313,11 +321,13 @@ export default class InGameView extends ui.InGameSceneUI implements SC{
                     let _collider = prefab.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
                     _collider.enabled = false;
                     _rig.enabled = false;
+                    // _collider.destroy();
+                    // _rig.destroy();
                     Laya.timer.clearAll(prefab);
                     prefab.removeSelf();
                     // prefab.destroy();
-                    // let _index = DropRule.Instance.GetBallIndex(ball.score);
-                    // GamePool.Instance.RecoverModel(prefab,_index.toString());
+                    let _index = DropRule.Instance.GetBallIndex(ball.score);
+                    GamePool.Instance.RecoverModel(prefab,_index.toString());
 
                     // Laya.Pool.recover("img"+_index.toString,ball);
                 }
@@ -344,11 +354,13 @@ export default class InGameView extends ui.InGameSceneUI implements SC{
                     let _collider = prefab.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
                     _collider.enabled = false;
                     _rig.enabled = false;
+                    // _collider.destroy();
+                    // _rig.destroy();
                     Laya.timer.clearAll(prefab);
                     prefab.removeSelf();
                     // prefab.destroy();
-                    // let _index = DropRule.Instance.GetBallIndex(ball.score);
-                    // GamePool.Instance.RecoverModel(prefab,_index.toString());
+                    let _index = DropRule.Instance.GetBallIndex(ball.score);
+                    GamePool.Instance.RecoverModel(prefab,_index.toString());
                     // Laya.Pool.recover("img"+_index.toString,ball);
                     // ball.destroy();
                 }
@@ -381,11 +393,13 @@ export default class InGameView extends ui.InGameSceneUI implements SC{
                 let _collider = prefab.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
                 _collider.enabled = false;
                 _rig.enabled = false;
+                _collider.destroy();
+                _rig.destroy();
                 Laya.timer.clearAll(prefab);
                 prefab.removeSelf();
                 // ball.destroy();
-                // let _index = DropRule.Instance.GetBallIndex(ball.score);
-                // GamePool.Instance.RecoverModel(prefab,_index.toString());
+                let _index = DropRule.Instance.GetBallIndex(ball.score);
+                GamePool.Instance.RecoverModel(prefab,_index.toString());
                 // Laya.Pool.recover("img"+_index.toString,ball);
             }
         }
@@ -419,11 +433,13 @@ export default class InGameView extends ui.InGameSceneUI implements SC{
                     let _collider = prefab.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
                     _collider.enabled = false;
                     _rig.enabled = false;
+                    // _collider.destroy();
+                    // _rig.destroy();
                     Laya.timer.clearAll(prefab);
                     prefab.removeSelf();
-                    prefab.destroy();
-                    // let _index = DropRule.Instance.GetBallIndex(ball.score);
-                    // GamePool.Instance.RecoverModel(prefab,_index.toString());
+                    // prefab.destroy();
+                    let _index = DropRule.Instance.GetBallIndex(ball.score);
+                    GamePool.Instance.RecoverModel(prefab,_index.toString());
                     // Laya.Pool.recover("img"+_index.toString,prefab);
                 }
             }
@@ -449,17 +465,19 @@ export default class InGameView extends ui.InGameSceneUI implements SC{
                 let ball = prefab.getComponent(Ball) as Ball;
                 for (let j = 0; j < DropRule.Instance.BallNum.length; j++) {
                     let Score = DropRule.Instance.GetBallIndex(ball.score);
-                    if(Score+1 ==Number(DropRule.Instance.BallNum[j]) ){
+                    if(Score+1 == Number(DropRule.Instance.BallNum[j]) ){
                         DropRule.Instance.CreateEffect(ball.score,new Laya.Vector2(prefab.x,prefab.y));
                         let _rig = prefab.getComponent(Laya.RigidBody) as Laya.RigidBody;
                         let _collider = prefab.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
                         _collider.enabled = false;
                         _rig.enabled = false;
+                        // _collider.destroy();
+                        // _rig.destroy();
                         Laya.timer.clearAll(prefab);
                         prefab.removeSelf();
                         // prefab.destroy();
-                        // let _index = DropRule.Instance.GetBallIndex(ball.score);
-                        // GamePool.Instance.RecoverModel(prefab,_index.toString());
+                        let _index = DropRule.Instance.GetBallIndex(ball.score);
+                        GamePool.Instance.RecoverModel(prefab,_index.toString());
                         // Laya.Pool.recover("img"+_index.toString,prefab);
                     }
                 }
@@ -486,11 +504,13 @@ export default class InGameView extends ui.InGameSceneUI implements SC{
                         let _collider = prefab.getComponent(Laya.CircleCollider) as Laya.CircleCollider;
                         _collider.enabled = false;
                         _rig.enabled = false;
+                        // _collider.destroy();
+                        // _rig.destroy();
                         Laya.timer.clearAll(prefab);
                         prefab.removeSelf();
                         // prefab.destroy();
-                        // let _index = DropRule.Instance.GetBallIndex(ball.score);
-                        // GamePool.Instance.RecoverModel(prefab,_index.toString());
+                        let _index = DropRule.Instance.GetBallIndex(ball.score);
+                        GamePool.Instance.RecoverModel(prefab,_index.toString());
                         // Laya.Pool.recover("img"+_index.toString,prefab);
                     }
                 }

+ 12 - 1
src/View/RankView.ts

@@ -1,5 +1,6 @@
 import { ui } from "../ui/layaMaxUI";
 import { SC, ViewManager, ViewType } from "./ViewManager";
+import RankSDK from "../Rank/RankSDK";
 
 export default class RankView extends ui.RankViewUI implements SC{
     private static ins:RankView;
@@ -15,7 +16,11 @@ export default class RankView extends ui.RankViewUI implements SC{
         }
     }
     Show(){
-        this.CloseBtn.clickHandler = Laya.Handler.create(this,this.ClickClose)
+        RankSDK.OpenPan();
+        RankSDK.OpenRank("max_score");
+        this.CloseBtn.clickHandler = Laya.Handler.create(this,this.ClickClose);
+        this.UpPageBtn.clickHandler = Laya.Handler.create(this,this.UpPage);
+        this.DownPageBtn.clickHandler = Laya.Handler.create(this,this.DownPage);
         this.height = Laya.stage.height; 
         Laya.stage.on(Laya.Event.RESIZE,this,()=>
         {
@@ -28,5 +33,11 @@ export default class RankView extends ui.RankViewUI implements SC{
     ClickClose(){
         ViewManager.Instance.ShowView(ViewType.MainView);
     }
+    UpPage(){
+
+    }
+    DownPage(){
+
+    }
 
 }