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 '属性依次为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; |