var x1 = 0 var x2 = 0 var w1 = 0 var w2 = 0 var y1 = 0 var y2 = 0 var h1 = 0 var h2 = 0 var f1 = 0 var f2 = 0 var f3 = 0 var f4 = 0 var cx = 0 var cy = 0 var myAni = require('myAni'); var gameConfig = require("gameConfig"); var spCache = { } var spCachearr = [] var isspbusying = false cc.tree = function(key) { let index = key || 0; let treeNode = function(node) { let nameStyle = `color: ${node.parent === null || node.activeInHierarchy ? 'green' : 'grey'}; font-size: 14px;font-weight:bold`; let propStyle = `color: black; background: lightgrey;margin-left: 5px;border-radius:3px;padding: 0 3px;font-size: 10px;font-weight:bold`; let indexStyle = `color: orange; background: black;margin-left: 5px;border-radius:3px;padding:0 3px;fonrt-size: 10px;font-weight:bold;` let nameValue = `%c${node.name}`; let propValue = `%c${node.x.toFixed(0) + ',' + node.y.toFixed(0) + ',' + node.width.toFixed(0) + ',' + node.height.toFixed(0) + ',' + node.scale.toFixed(1)}` let indexValue = `%c${index++}`; if (node.childrenCount > 0) { console.groupCollapsed(nameValue + propValue + indexValue, nameStyle, propStyle, indexStyle); for (let i = 0; i < node.childrenCount; i++) { treeNode(node.children[i]); } console.groupEnd(); } else { console.log(nameValue + propValue + indexValue, nameStyle, propStyle, indexStyle); } } if (key) { let node = cc.cat(key); index = node['tempIndex']; treeNode(node); } else { let scene = cc.director.getScene(); treeNode(scene); } return 'property x,y,width,height,scale.usecc.cat(id)to check.'; } cc.cat = function(key) { let index = 0; let target; let sortId = function(node) { if (target) return; if (cc.js.isNumber(key)) { if (key === index++) { target = node; return; } } else { if (key.toLowerCase() === node.name.toLowerCase()) { target = node; return; } else { index++; } } if (node.childrenCount > 0) { for (let i = 0; i < node.childrenCount; i++) { sortId(node.children[i]); } } } let scene = cc.director.getScene(); sortId(scene); target['tempIndex'] = cc.js.isNumber(key) ? key : index; return target; } cc.list = function(key) { let targets = []; let step = function(node) { if (node.name.toLowerCase().indexOf(key.toLowerCase()) > -1) { targets.push(node); } if (node.childrenCount > 0) { for (let i = 0; i < node.childrenCount; i++) { step(node.children[i]); } } } let scene = cc.director.getScene(); step(scene); if (targets.length === 1) { return targets[0]; } else { return targets; } } cc.where = function(key) { let target = key.name ? key : cc.cat(key); if (!target) { return null; } let rect = target.getBoundingBoxToWorld(); let bgNode = new cc.Node(); let graphics = bgNode.addComponent(cc.Graphics); let scene = cc.director.getScene(); scene.addChild(bgNode); bgNode.position = rect.center; bgNode.group = target.group; bgNode.zIndex = cc.macro.MAX_ZINDEX; let isZeroSize = rect.width === 0 || rect.height === 0; if (isZeroSize) { graphics.circle(0, 0, 100); graphics.fillColor = cc.Color.GREEN; graphics.fill(); } else { bgNode.width = rect.width; bgNode.height = rect.height; graphics.rect(-bgNode.width / 2, -bgNode.height / 2, bgNode.width, bgNode.height); graphics.fillColor = new cc.Color().fromHEX('#E91E6390'); graphics.fill(); } setTimeout(() => { if (cc.isValid(bgNode)) { bgNode.destroy(); } }, 2000); return target; } cc.cache = function() { let rawCacheData = cc.loader._cache; let cacheData = []; let totalTextureSize = 0; for (let k in rawCacheData) { let item = rawCacheData[k]; if (item.type !== 'js' && item.type !== 'json') { let itemName = '_'; let preview = ''; let content = (item.content && item.content.__classname__) ? item.content.__classname__ : item.type; let formatSize = -1; if (item.type === 'png' || item.type === 'jpg') { let texture = rawCacheData[k.replace('.' + item.type, '.json')]; if (texture && texture._owner && texture._owner._name) { itemName = texture._owner._name; preview = texture.content.url; } } else { if (item.content.name && item.content.name.length > 0) { itemName = item.content.name; } else if (item._owner) { itemName = (item._owner && item._owner.name) || '_'; } if (content === 'cc.Texture2D') { let texture = item.content; preview = texture.url; let textureSize = texture.width * texture.height * ((texture._native === '.jpg' ? 3 : 4) / 1024 / 1024); totalTextureSize += textureSize; // sizeStr = textureSize.toFixed(3) + 'M'; formatSize = Math.round(textureSize * 1000) / 1000; } else if (content === 'cc.SpriteFrame') { preview = item.content._texture.url; } } cacheData.push({ queueId: item.queueId, type: item.type, name: itemName, preview: preview, id: item.id, content: content, size: formatSize }); } } let cacheTitle = `cache [file:${cacheData.length}][cache:${totalTextureSize.toFixed(2) + 'M'}]`; return [cacheData, cacheTitle]; } var Utils = cc.Class({ properties: { timeSeed: new Date().getTime() }, dirRotate(dir, ag) { ag = ag * 0.0174533 var x = dir.x * Math.cos(ag) + dir.y * Math.sin(ag) var y = -dir.x * Math.sin(ag) + dir.y * Math.cos(ag) var out = cc.v2(x, y) out = out.normalize(); return out }, hitTestCircle(c1, c2) { var len1 = (c1.width + c2.width) / 2; return ((c1.x - c2.x) * (c1.x - c2.x) + (c1.y - c2.y) * (c1.y - c2.y)) < len1 * len1 }, hitTestRectangle(r1, r2) { if (r1.width == 0 || r1.height == 0 || r2.width == 0 || r2.height == 0) { return false } x1 = r1.x - r1.width / 2; x2 = r2.x - r2.width / 2; w1 = r1.width; w2 = r2.width; y1 = r1.y - r1.height / 2; y2 = r2.y - r2.height / 2; h1 = r1.height; h2 = r2.height; return !(x1 + w1 < x2 || y1 + h1 < y2 || x2 + w2 < x1 || y2 + h2 < y1) }, hitTestMutex(temp, staticObj) { f1 = temp.x - staticObj.x + staticObj.width / 2 f2 = temp.x - staticObj.x - staticObj.width / 2 f3 = temp.y - staticObj.y + staticObj.height / 2 f4 = temp.y - staticObj.y - staticObj.height / 2 cx = Math.abs(f1) > Math.abs(f2) ? f2 : f1 cy = Math.abs(f3) > Math.abs(f4) ? f4 : f3 if (Math.abs(cx) > Math.abs(cy)) { Math.abs(f4) > Math.abs(f3) ? temp.y = staticObj.y - staticObj.height / 2 - temp.height / 2 : temp.y = staticObj.y + staticObj.height / 2 + temp.height / 2 } else { Math.abs(f2) > Math.abs(f1) ? temp.x = staticObj.x - staticObj.width / 2 - temp.width / 2 : temp.x = staticObj.x + staticObj.width / 2 + temp.width / 2 } }, loadRes: function(url, type, cb) { cc.loader.loadRes(url, type, function(err, res) { if (err) { // cc.error(err.message || err); return; } if (cb) { cb(err, res); } }); }, loadSprite: function(url, node, cb) { cc.loader.loadRes(url, cc.SpriteFrame, function(err, res) { if (err) { // cc.error(err.message || err); return; } var spf = node.getComponent('cc.Sprite'); spf.spriteFrame = res; // res.getTexture().setAliasTexParameters(); if (cb) { cb(err, res); } }); }, RandomNumBoth(Min, Max) { var Range = Max - Min; var Rand = Math.random(); var num = Min + Math.round(Rand * Range); return num; }, rnd: function(seed) { seed = (seed * 9301 + 49297) % 233280; this.timeSeed = seed; return seed / (233280.0); }, randintSeed(number) { return Math.floor(this.rnd(this.timeSeed) * number); }, rand01() { var _v = this.randintSeed(10000) / 10000; var str = _v.toFixed(4); var v = parseFloat(str); return v; }, randint(v) { return Math.floor(Math.random() * v); }, deepClone(initalObj, finalObj) { var obj = finalObj || {}; for (var i in initalObj) { var prop = initalObj[i]; if (prop === obj) { continue; } if (typeof prop === 'object') { obj[i] = (prop.constructor === Array) ? [] : {}; arguments.callee(prop, obj[i]); } else { obj[i] = prop; } } return obj; }, getSystemTime() { return Math.floor(new Date().getTime() / 1000); }, createMyAni(target) { return new myAni(target); }, contains(arr, obj) { var i = arr.length; while (i--) { if (arr[i] === obj) { return true; } } return false; }, padding(num, length) { for (var len = (num + "").length; len < length; len = num.length) { num = "0" + num; } return num; }, getPointDistanceFromLine(_lineX0, _lineY0, _lineX1, _lineY1, _pointX, _pointY) { var px = _lineX1 - _lineX0; var py = _lineY1 - _lineY0; var sum = px * px + py * py; var u = ((_pointX - _lineX0) * px + (_pointY - _lineY0) * py) / sum; if (u > 1) { u = 1; } else if (u < 0) { u = 0; } let x = _lineX0 + u * px; let y = _lineY0 + u * py; let dx = x - _pointX; let dy = y - _pointY; return Math.sqrt(dx * dx + dy * dy); }, sixstr(str) { var length = str.length; if (length > 6) { var str2 = ""; for (var i = 0; i < 6; i++) { str2 += str[i]; } str2 += "..."; return str2; } else { return str; } }, findvarbylv(attrv, lv, str) { if (!lv) { return 0 } if (!str) { return 0 } if (lv <= 1) { return 0 } var attr = str.split('|') if (attr[lv - 2]) { var onedata = attr[lv - 2].split(';') for (var i = onedata.length - 1; i >= 0; i--) { var at = onedata[i].split(':') if (at[0] == attrv) { return Number(at[1]) } } } return 0 }, rendernode(tnode, size) { let camera = tnode.addComponent(cc.Camera); let texture = new cc.RenderTexture(); if (!size) { size = tnode.width } texture.initWithSize(size, size); camera.targetTexture = texture; tnode.scaleY *= -1; camera.render(tnode); tnode.scaleY *= -1; var spriteFrame = new cc.SpriteFrame(); spriteFrame.setTexture(texture); tnode.removeComponent(cc.Camera); return spriteFrame }, arrtoarr(oldarr, fg) { var newlist = [] var newlengh = Math.ceil(oldarr.length / fg) for (var i = 0; i < newlengh; i++) { var onedata = [] for (var j = 0; j < fg; j++) { if (i * fg + j < oldarr.length) { onedata.push(oldarr[i * fg + j]) } else { onedata.push(0) } } newlist.push(onedata) } return newlist }, second3Time(time) { let str = ""; let min = Math.floor(time % 3600 / 60); let second = Math.floor(time % 60); let min_str = min <= 9 ? "0" + min + ":" : min + ":"; let second_str = second <= 9 ? "0" + second : second; str = "" + min_str + second_str; return str; }, setitem(target,itemid, sp1, sp2) { var itemcfg = gameConfig.all_ItemConfig[itemid] if(!itemcfg){ sp1.spriteFrame = null if(sp2){ sp2.spriteFrame = null } return } cc.loader.loadRes("itemicon/" + itemcfg.icon, cc.SpriteFrame, function(err, res) { if (!err && target.isValid) { sp1.spriteFrame = res; } }); if(!sp2){ return } var quality = 1 if (itemcfg.quality) { quality = itemcfg.quality } cc.loader.loadRes("textures/frame/draw_v" + quality, cc.SpriteFrame, function(err, res) { if (!err && target.isValid) { sp2.spriteFrame = res; } }); }, }); var util = new Utils(); module.exports = util;