499 lines
14 KiB
JavaScript
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; |