MakeMap.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. cc.Class({
  2. extends: cc.Component,
  3. properties: {
  4. TwoArrMap:null,
  5. filename:null,
  6. StylePath:null,
  7. StyleNum:0,
  8. },
  9. // use this for initialization
  10. onLoad: function () {
  11. var self = this;
  12. if(Global.Style == 0){
  13. self.StylePath = 'pet/a';
  14. self.StyleNum = 20;
  15. }else if(Global.Style == 1){
  16. self.StylePath = 'fruit/';
  17. self.StyleNum = 16;
  18. }else if(Global.Style == 2){
  19. self.StylePath = 'bq1/a';
  20. self.StyleNum = 16;
  21. }
  22. //console.log(Global.leveljson[Global.LevelNow]);
  23. self.filename = Global.leveljson[Global.LevelNow];
  24. self.MakeMap(self.filename.filename);
  25. self.scheduleOnce(function() {
  26. Audio.playeffect('resources/audio/sound_readygo.mp3');
  27. },0.5);
  28. },
  29. start:function(){
  30. },
  31. // called every frame
  32. update: function (dt) {
  33. },
  34. MakeMap:function(json){
  35. var self = this;
  36. var jsonpath = 'level/'+json;
  37. cc.loader.loadRes(jsonpath, function (err, jsonAsset) {
  38. var mystr = jsonAsset.json.maps;
  39. var maps = mystr.split(",");
  40. var TwoArrMap = self.One2TwoArray(maps,jsonAsset.json.col_d);
  41. self.TwoArrMap = TwoArrMap;
  42. Global.TwoArrMap = TwoArrMap;
  43. Global.LevelTime = jsonAsset.json.time;
  44. self.CreateMap(TwoArrMap);
  45. });
  46. },
  47. //subArrayNum为每行的个数
  48. One2TwoArray:function(maps,subArrayNum){
  49. //let data = [3, 6, 4, 5, 6, 99, 55, 45, 33, 22, 90, 12, 54, 23, 33, 243, 2324, 12, 335, 23, 21, 22, 22];
  50. //let subArrayNum = 12;
  51. var dataArr = new Array(Math.ceil(maps.length / subArrayNum));
  52. for(let i = 0; i < dataArr.length;i++) {
  53. dataArr[i] = new Array();
  54. for(let j = 0; j < subArrayNum; j++) {
  55. //先创建空的二维数组
  56. dataArr[i][j] = '';
  57. }
  58. }
  59. for(let i = 0; i < maps.length;i++) {
  60. //将一维数组的值赋值给二维数组
  61. dataArr[parseInt(i / subArrayNum)][i % subArrayNum] = maps[i];
  62. }
  63. return dataArr;
  64. },
  65. CreateMap:function(TwoArrMap){
  66. var self = this;
  67. var Raw = TwoArrMap.length;
  68. var col = TwoArrMap[0].length;
  69. for(let i = 0; i < Raw; i++){
  70. for(let j = 0; j < col ; j++){
  71. if(TwoArrMap[i][j] == "1"){
  72. cc.loader.loadRes("prefab/LLKItem", function (err, prefab) {
  73. var newNode = cc.instantiate(prefab);
  74. var MainArea = cc.find('Canvas/MainArea');
  75. var SideLength = Math.min(MainArea.width/col,MainArea.height/Raw);
  76. Global.SideLength = SideLength;
  77. MainArea.addChild(newNode);
  78. newNode.attr({ ad:{raw: i,col:j} })
  79. newNode.width = SideLength - 5;
  80. newNode.height = SideLength - 5;
  81. newNode.y = i*SideLength;
  82. newNode.x = j*SideLength;
  83. });
  84. }
  85. }
  86. }
  87. self.SetNodeDetail();
  88. },
  89. SetNodeDetail:function(){
  90. var self = this;
  91. var TwoArrMap = self.TwoArrMap;
  92. var NeedShowNum = 0;
  93. for(let i = 0; i < TwoArrMap.length; i++){
  94. for(let j=0; j< TwoArrMap[0].length;j++){
  95. if(TwoArrMap[i][j] == "1"){
  96. NeedShowNum++;
  97. }
  98. }
  99. }
  100. var ResIndexArr = [];
  101. for(let i = 0; i < NeedShowNum/2 ; i++){
  102. ResIndexArr.push(i% self.StyleNum +1);//随机生成几副图的单个资源
  103. }
  104. for(let i = 0; i <NeedShowNum/2 ; i++){
  105. ResIndexArr.push(ResIndexArr[i]);//翻倍
  106. }
  107. ResIndexArr = Util.shuffleArray(ResIndexArr);
  108. //console.log(ResIndexArr);
  109. var NodeList = cc.find("Canvas/MainArea").children;
  110. //console.log(ResIndexArr);
  111. setTimeout(()=>{
  112. Global.Nodes = NodeList;
  113. for (let i = 0; i < ResIndexArr.length; i++) {
  114. var imgpath = self.StylePath + ResIndexArr[i];
  115. cc.loader.loadRes(imgpath, cc.SpriteFrame, function (err, spriteFrame) {
  116. NodeList[i].getComponent(cc.Sprite).spriteFrame = spriteFrame;
  117. NodeList[i].attr({ Type: ResIndexArr[i], })
  118. });
  119. }
  120. self.scheduleOnce(function () {
  121. Util.CheckDiedMap();
  122. }, 1);
  123. },2000)
  124. //Util.ReCreateMap();
  125. // self.CheckMapisOK();
  126. },
  127. CheckMapisOK:function(){
  128. //在原生平台会出现最后两个item不显示,但是item存在,属性为空。如果发现该问题,调用地图重绘方法
  129. for(var i = 0;i<Global.Nodes.length;i++){
  130. console.log(Global.Nodes[i]);
  131. if(Global.Nodes[i].getComponent(cc.Sprite).spriteFrame == null){
  132. Util.ReCreateMap();
  133. break;
  134. }
  135. }
  136. }
  137. });