zhuguoqing ff550d5d6a init
2022-05-22 10:32:02 +08:00

499 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 '属性依次为x,y,width,height,scale.使用cc.cat(id)查看详细属性.';
}
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 = `缓存 [文件总数:${cacheData.length}][纹理缓存:${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]; // 避免相互引用对象导致死循环如initalObj.a = initalObj的情况
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;