zhuguoqing 53febf2dc4 update
2022-05-28 10:31:45 +08:00

499 lines
14 KiB
JavaScript

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;