火柴人大逃亡
欢迎来到程序小院
火柴人大逃亡
玩法:左右两边火柴人,点击左边左边火柴人跳跃,点击右边右边跳跃,
上下快速移动道路,躲过障碍物,看你能坚持多久,快去火柴人大逃亡吧^^。
开始游戏
https://www.ormcc.com/play/gameStart/266

html
<canvas id="c2canvas" width="640" height="960"></canvas>
css
html, body {background: #fff;color: #333;overflow: hidden;touch-action: none;-ms-touch-action: none;
}
canvas {touch-action-delay: none;touch-action: none;-ms-touch-action: none;
}
js
function resetdpsubmit() {g9param.issubmit = false
}
var g9param = {resetId: "",issubmit: false
};
var cr = {};
cr.plugins_ = {}, cr.behaviors = {}, "function" != typeof Object.getPrototypeOf && (
Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(e) {return e.__proto__
} : function(e) {return e.constructor.prototype
}),
function() {function e(e, t) {this.x = e, this.y = t, cr.seal(this)}function t(e, t, n, r) {this.set(e, t, n, r), cr.seal(this)}function n() {this.tlx = 0, this.tly = 0, this.trx = 0, this.try_ = 0, this.brx = 0,this.bry = 0, this.blx = 0, this.bly = 0, cr.seal(this)}function r(e, t, n, r) {t > e ? r > n ? (h = n > e ? e : n, p = t > r ? t : r) : (h = r > e ? e : r,p = t > n ? t : n) : r > n ? (h = n > t ? t : n, p = e > r ? e : r) : (h = r > t ? t : r, p = e > n ? e : n)}function i() {this.s = null, this.items = null, this.item_count = 0, b && (this.s = new Set),this.values_cache = [], this.cache_valid = !0, cr.seal(this)}function s(e) {w[E++] = e}function o() {this.c = 0, this.y = 0, this.t = 0, this.sum = 0, cr.seal(this)}function u(e) {this.pts_cache = [], this.bboxLeft = 0, this.bboxTop = 0, this.bboxRight = 0, this.bboxBottom = 0, this.convexpolys = null, this.set_pts(e), cr.seal(this)}function a(e, t) {this.cellwidth = e, this.cellheight = t, this.cells = {}}function f(e, t, n) {var r;return a.prototype.totalCellCount++, x.length ? (r = x.pop(), r.grid = e, r.x = t, r.y = n, r) : new cr.GridCell(e, t, n)}function l(e) {a.prototype.totalCellCount--, e.objects.clear(), x.length < 1e3 && x.push(e)}function c(e, t, n) {this.grid = e, this.x = t, this.y = n, this.objects = new cr.ObjectSet}cr.logexport = function(e) {window.console && window.console.log && window.console.log(e)}, cr.seal = function(e) {return e}, cr.freeze = function(e) {return e}, cr.is_undefined = function(e) {return "undefined" == typeof e}, cr.is_number = function(e) {return "number" == typeof e}, cr.is_string = function(e) {return "string" == typeof e}, cr.isPOT = function(e) {return e > 0 && 0 === (e - 1 & e)}, cr.nextHighestPowerOfTwo = function(e) {--e;for (var t = 1; 32 > t; t <<= 1) e |= e >> t;return e + 1}, cr.abs = function(e) {return 0 > e ? -e : e}, cr.max = function(e, t) {return e > t ? e : t}, cr.min = function(e, t) {return t > e ? e : t}, cr.PI = Math.PI, cr.round = function(e) {return e + .5 | 0}, cr.floor = function(e) {return e >= 0 ? 0 | e : (0 | e) - 1}, cr.ceil = function(e) {var t = 0 | e;return t === e ? t : t + 1}, e.prototype.offset = function(e, t) {return this.x += e, this.y += t, this}, e.prototype.mul = function(e, t) {return this.x *= e, this.y *= t, this}, cr.vector2 = e, cr.segments_intersect = function(e, t, n, r, i, s, o, u) {var a, f, l, c, h, p, d, v;if (n > e ? (f = e, a = n) : (f = n, a = e), o > i ? (p = i, h = o) : (p = o, h = i), p > a || f > h) return !1;if (r > t ? (c = t, l = r) : (c = r, l = t), u > s ? (v = s, d = u) : (v = u,d = s), v > l || c > d) return !1;var m = i - e + o - n,g = s - t + u - r,y = n - e,b = r - t,w = o - i,E = u - s,S = cr.abs(b * w - E * y),x = w * g - E * m;if (cr.abs(x) > S) return !1;var T = y * g - b * m;return cr.abs(T) <= S}, t.prototype.set = function(e, t, n, r) {this.left = e, this.top = t, this.right = n, this.bottom = r}, t.prototype.copy = function(e) {this.left = e.left, this.top = e.top, this.right = e.right, this.bottom = e.bottom}, t.prototype.width = function() {return this.right - this.left}, t.prototype.height = function() {return this.bottom - this.top}, t.prototype.offset = function(e, t) {return this.left += e, this.top += t, this.right += e, this.bottom += t, this}, t.prototype.normalize = function() {var e = 0;this.left > this.right && (e = this.left, this.left = this.right, this.right = e), this.top > this.bottom && (e = this.top, this.top = this.bottom, this.bottom = e)}, t.prototype.intersects_rect = function(e) {return !(e.right < this.left || e.bottom < this.top || e.left > this.right || e.top > this.bottom)}, t.prototype.intersects_rect_off = function(e, t, n) {return !(e.right + t < this.left || e.bottom + n < this.top || e.left + t > this.right || e.top + n > this.bottom)}, t.prototype.contains_pt = function(e, t) {return e >= this.left && e <= this.right && t >= this.top && t <= this.bottom}, t.prototype.equals = function(e) {return this.left === e.left && this.top === e.top && this.right === e.right &&this.bottom === e.bottom}, cr.rect = t, n.prototype.set_from_rect = function(e) {this.tlx = e.left, this.tly = e.top, this.trx = e.right, this.try_ = e.top, this.brx = e.right, this.bry = e.bottom, this.blx = e.left, this.bly = e.bottom}, n.prototype.set_from_rotated_rect = function(e, t) {if (0 === t) this.set_from_rect(e);else {var n = Math.sin(t),r = Math.cos(t),i = e.left * n,s = e.top * n,o = e.right * n,u = e.bottom * n,a = e.left * r,f = e.top * r,l = e.right * r,c = e.bottom * r;this.tlx = a - s, this.tly = f + i, this.trx = l - s, this.try_ = f + o, this.brx = l - u, this.bry = c + o, this.blx = a - u, this.bly = c + i}}, n.prototype.offset = function(e, t) {return this.tlx += e, this.tly += t, this.trx += e, this.try_ += t, this.brx += e, this.bry += t, this.blx += e, this.bly += t, this};var h = 0,p = 0;n.prototype.bounding_box = function(e) {r(this.tlx, this.trx, this.brx, this.blx), e.left = h, e.right = p, r(this.tly, this.try_, this.bry, this.bly), e.top = h, e.bottom = p}, n.prototype.contains_pt = function(e, t) {var n = this.trx - this.tlx,r = this.try_ - this.tly,i = this.brx - this.tlx,s = this.bry - this.tly,o = e - this.tlx,u = t - this.tly,a = n * n + r * r,f = n * i + r * s,l = n * o + r * u,c = i * i + s * s,h = i * o + s * u,p = 1 / (a * c - f * f),d = (c * l - f * h) * p,v = (a * h - f * l) * p;if (d >= 0 && v > 0 && 1 > d + v) return !0;n = this.blx - this.tlx, r = this.bly - this.tly;var a = n * n + r * r,f = n * i + r * s,l = n * o + r * u;return p = 1 / (a * c - f * f), d = (c * l - f * h) * p, v = (a * h - f * l) *p, d >= 0 && v > 0 && 1 > d + v}, n.prototype.at = function(e, t) {if (t) switch (e) {case 0:return this.tlx;case 1:return this.trx;case 2:return this.brx;case 3:return this.blx;case 4:return this.tlx;default:return this.tlx} else switch (e) {case 0:return this.tly;case 1:return this.try_;case 2:return this.bry;case 3:return this.bly;case 4:return this.tly;default:return this.tly}}, n.prototype.midX = function() {return (this.tlx + this.trx + this.brx + this.blx) / 4}, n.prototype.midY = function() {return (this.tly + this.try_ + this.bry + this.bly) / 4}, n.prototype.intersects_segment = function(e, t, n, r) {if (this.contains_pt(e, t) || this.contains_pt(n, r)) return !0;var i, s, o, u, a;for (a = 0; 4 > a; a++)if (i = this.at(a, !0), s = this.at(a, !1), o = this.at(a + 1, !0), u = this.at(a + 1, !1), cr.segments_intersect(e, t, n, r, i, s, o, u)) return !0;return !1}, n.prototype.intersects_quad = function(e) {var t = e.midX(),n = e.midY();if (this.contains_pt(t, n)) return !0;if (t = this.midX(), n = this.midY(), e.contains_pt(t, n)) return !0;var r, i, s, o, u, a, f, l, c, h;for (c = 0; 4 > c; c++)for (h = 0; 4 > h; h++)if (r = this.at(c, !0), i = this.at(c, !1), s = this.at(c + 1, !0), o =this.at(c + 1, !1), u = e.at(h, !0), a = e.at(h, !1), f = e.at(h + 1, !0), l = e.at(h + 1, !1), cr.segments_intersect(r, i, s, o, u, a, f, l)) return !0;return !1}, cr.quad = n, cr.RGB = function(e, t, n) {return Math.max(Math.min(e, 255), 0) | Math.max(Math.min(t, 255), 0) << 8 | Math.max(Math.min(n, 255), 0) << 16}, cr.GetRValue = function(e) {return 255 & e}, cr.GetGValue = function(e) {return (65280 & e) >> 8}, cr.GetBValue = function(e) {return (16711680 & e) >> 16}, cr.shallowCopy = function(e, t) {var n;for (n in t) t.hasOwnProperty(n) && (e[n] = t[n]);return e}, cr.arrayRemove = function(e, t) {var n, r;if (t = cr.floor(t), !(0 > t || t >= e.length)) {for (n = t, r = e.length - 1; r > n; n++) e[n] = e[n + 1];e.length = r}}, cr.shallowAssignArray = function(e, t) {e.length = t.length;var n, r;for (n = 0, r = t.length; r > n; n++) e[n] = t[n]}, cr.appendArray = function(e, t) {e.push.apply(e, t)}, cr.fastIndexOf = function(e, t) {var n, r;for (n = 0, r = e.length; r > n; ++n)if (e[n] === t) return n;return -1}, cr.arrayFindRemove = function(e, t) {var n = cr.fastIndexOf(e, t); - 1 !== n && cr.arrayRemove(e, n)}, cr.clamp = function(e, t, n) {return t > e ? t : e > n ? n : e}, cr.to_radians = function(e) {return e / (180 / cr.PI)}, cr.to_degrees = function(e) {return e * (180 / cr.PI)}, cr.clamp_angle_degrees = function(e) {return e %= 360, 0 > e && (e += 360), e}, cr.clamp_angle = function(e) {return e %= 2 * cr.PI, 0 > e && (e += 2 * cr.PI), e}, cr.to_clamped_degrees = function(e) {return cr.clamp_angle_degrees(cr.to_degrees(e))}, cr.to_clamped_radians = function(e) {return cr.clamp_angle(cr.to_radians(e))}, cr.angleTo = function(e, t, n, r) {var i = n - e,s = r - t;return Math.atan2(s, i)}, cr.angleDiff = function(e, t) {if (e === t) return 0;var n = Math.sin(e),r = Math.cos(e),i = Math.sin(t),s = Math.cos(t),o = n * i + r * s;return o >= 1 ? 0 : -1 >= o ? cr.PI : Math.acos(o)}, cr.angleRotate = function(e, t, n) {var r = Math.sin(e),i = Math.cos(e),s = Math.sin(t),o = Math.cos(t);return cr.clamp_angle(Math.acos(r * s + i * o) > n ? i * s - r * o > 0 ? e + n :e - n : t)}, cr.angleClockwise = function(e, t) {var n = Math.sin(e),r = Math.cos(e),i = Math.sin(t),s = Math.cos(t);return 0 >= r * i - n * s}, cr.rotatePtAround = function(e, t, n, r, i, s) {if (0 === n) return s ? e : t;var o = Math.sin(n),u = Math.cos(n);e -= r, t -= i;var a = e * o,f = t * o,l = e * u,c = t * u;return e = l - f, t = c + a, e += r, t += i, s ? e : t}, cr.distanceTo = function(e, t, n, r) {var i = n - e,s = r - t;return Math.sqrt(i * i + s * s)}, cr.xor = function(e, t) {return !e != !t}, cr.lerp = function(e, t, n) {return e + (t - e) * n}, cr.unlerp = function(e, t, n) {return e === t ? 0 : (n - e) / (t - e)}, cr.anglelerp = function(e, t, n) {var r = cr.angleDiff(e, t);return cr.angleClockwise(t, e) ? e + r * n : e - r * n}, cr.qarp = function(e, t, n, r) {return cr.lerp(cr.lerp(e, t, r), cr.lerp(t, n, r), r)}, cr.cubic = function(e, t, n, r, i) {return cr.lerp(cr.qarp(e, t, n, i), cr.qarp(t, n, r, i), i)}, cr.cosp = function(e, t, n) {return (e + t + (e - t) * Math.cos(n * Math.PI)) / 2}, cr.hasAnyOwnProperty = function(e) {var t;for (t in e)if (e.hasOwnProperty(t)) return !0;return !1}, cr.wipe = function(e) {var t;for (t in e) e.hasOwnProperty(t) && delete e[t]};var d = +(new Date);cr.performance_now = function() {if ("undefined" != typeof window.performance) {var e = window.performance;if ("undefined" != typeof e.now) return e.now();if ("undefined" != typeof e.webkitNow) return e.webkitNow();if ("undefined" != typeof e.mozNow) return e.mozNow();if ("undefined" != typeof e.msNow) return e.msNow()}return Date.now() - d};var v = !1,m = !1,g = !1,y = !1;"undefined" != typeof window && (v = /chrome/i.test(navigator.userAgent) || /chromium/i.test(navigator.userAgent), m = !v && /safari/i.test(navigator.userAgent),g = /(iphone|ipod|ipad)/i.test(navigator.userAgent), y = window.c2ejecta);var b = !m && !y && !g && "undefined" != typeof Set && "undefined" != typeof Set.prototype.forEach;i.prototype.contains = function(e) {return this.isEmpty() ? !1 : b ? this.s.has(e) : this.items && this.items.hasOwnProperty(e)}, i.prototype.add = function(e) {if (b) this.s.has(e) || (this.s.add(e), this.cache_valid = !1);else {var t = e.toString(),n = this.items;n ? n.hasOwnProperty(t) || (n[t] = e, this.item_count++, this.cache_valid = !1) : (this.items = {}, this.items[t] = e,this.item_count = 1, this.cache_valid = !1)}}, i.prototype.remove = function(e) {if (!this.isEmpty())if (b) this.s.has(e) && (this.s["delete"](e), this.cache_valid = !1);else if (this.items) {var t = e.toString(),n = this.items;n.hasOwnProperty(t) && (delete n[t], this.item_count--, this.cache_valid = !1)}}, i.prototype.clear = function() {this.isEmpty() || (b ? this.s.clear() : (this.items = null, this.item_count = 0),this.values_cache.length = 0, this.cache_valid = !0)}, i.prototype.isEmpty = function() {return 0 === this.count()}, i.prototype.count = function() {return b ? this.s.size : this.item_count};var w = null,E = 0;i.prototype.update_cache = function() {if (!this.cache_valid) {if (b) this.values_cache.length = this.s.size, w = this.values_cache, E = 0, this.s.forEach(s), w = null, E = 0;else {var e = this.values_cache;e.length = this.item_count;var t, n = 0,r = this.items;if (r)for (t in r) r.hasOwnProperty(t) && (e[n++] = r[t])}this.cache_valid = !0}}, i.prototype.valuesRef = function() {return this.update_cache(), this.values_cache}, cr.ObjectSet = i;var S = new cr.ObjectSet;cr.removeArrayDuplicates = function(e) {var t, n;for (t = 0, n = e.length; n > t; ++t) S.add(e[t]);cr.shallowAssignArray(e, S.valuesRef()), S.clear()}, o.prototype.add = function(e) {this.y = e - this.c, this.t = this.sum + this.y, this.c = this.t - this.sum - this.y, this.sum = this.t}, o.prototype.reset = function() {this.c = 0, this.y = 0, this.t = 0, this.sum = 0}, cr.KahanAdder = o, cr.regexp_escape = function(e) {return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")}, u.prototype.set_pts = function(e) {this.pts_array = e, this.pts_count = e.length / 2, this.pts_cache.length =e.length, this.cache_width = -1, this.cache_height = -1, this.cache_angle = 0}, u.prototype.is_empty = function() {return !this.pts_array.length}, u.prototype.update_bbox = function() {for (var e, t, n, r = this.pts_cache, i = r[0], s = i, o = r[1], u = o, a = 1, f = this.pts_count; f > a; ++a) n = 2 * a, e = r[n], t = r[n + 1], i > e && (i = e), e > s && (s = e), o > t && (o = t), t > u && (u = t);this.bboxLeft = i, this.bboxRight = s, this.bboxTop = o, this.bboxBottom = u}, u.prototype.set_from_rect = function(e, t, n) {this.pts_cache.length = 8, this.pts_count = 4;var r = this.pts_cache;r[0] = e.left - t, r[1] = e.top - n, r[2] = e.right - t, r[3] = e.top - n, r[4] = e.right - t, r[5] = e.bottom - n, r[6] = e.left - t, r[7] = e.bottom - n, this.cache_width = e.right - e.left, this.cache_height = e.bottom - e.top, this.update_bbox()}, u.prototype.set_from_quad = function(e, t, n, r, i) {this.pts_cache.length = 8, this.pts_count = 4;var s = this.pts_cache;s[0] = e.tlx - t, s[1] = e.tly - n, s[2] = e.trx - t, s[3] = e.try_ - n, s[4] = e.brx - t, s[5] = e.bry - n, s[6] = e.blx - t, s[7] = e.bly - n, this.cache_width = r, this.cache_height = i, this.update_bbox()}, u.prototype.set_from_poly = function(e) {this.pts_count = e.pts_count, cr.shallowAssignArray(this.pts_cache, e.pts_cache), this.bboxLeft = e.bboxLeft, this.bboxTop - e.bboxTop, this.bboxRight = e.bboxRight, this.bboxBottom = e.bboxBottom}, u.prototype.cache_poly = function(e, t, n) {if (this.cache_width !== e || this.cache_height !== t || this.cache_angle !== n) {this.cache_width = e, this.cache_height = t, this.cache_angle = n;var r, i, s, o, u, a, f = 0,l = 1,c = this.pts_array,h = this.pts_cache;for (0 !== n && (f = Math.sin(n), l = Math.cos(n)), r = 0, o = this.pts_count; o > r; r++) i = 2 * r, s = i + 1, u = c[i] * e, a = c[s] * t, h[i] = u * l -a * f, h[s] = a * l + u * f;this.update_bbox()}}, u.prototype.contains_pt = function(e, t) {var n = this.pts_cache;if (e === n[0] && t === n[1]) return !0;var r, i, s, o, u, a, f, l = this.pts_count,c = this.bboxLeft - 110,h = this.bboxTop - 101,p = this.bboxRight + 131,d = this.bboxBottom + 120,v = 0,m = 0;for (r = 0; l > r; r++) i = 2 * r, s = (r + 1) % l * 2, o = n[i], u = n[i + 1], a = n[s], f = n[s + 1], cr.segments_intersect(c, h, e, t, o, u, a, f) && v++, cr.segments_intersect(p, d, e, t, o, u, a, f) && m++;return v % 2 === 1 || m % 2 === 1}, u.prototype.intersects_poly = function(e, t, n) {var r = e.pts_cache,i = this.pts_cache;if (this.contains_pt(r[0] + t, r[1] + n)) return !0;if (e.contains_pt(i[0] - t, i[1] - n)) return !0;var s, o, u, a, f, l, c, h, p, d, v, m, g, y, b, w;for (s = 0, a = this.pts_count; a > s; s++)for (o = 2 * s, u = (s + 1) % a * 2, p = i[o], d = i[o + 1], v = i[u], m = i[u + 1], f = 0, h = e.pts_count; h > f; f++)if (l = 2 * f, c = (f + 1) % h * 2, g = r[l] + t, y = r[l + 1] + n, b = r[c] + t, w = r[c + 1] + n, cr.segments_intersect(p, d, v, m, g,y, b, w)) return !0;return !1}, u.prototype.intersects_segment = function(e, t, n, r, i, s) {var o = this.pts_cache;if (this.contains_pt(n - e, r - t)) return !0;var u, a, f, l, c, h, p, d;for (u = 0, a = this.pts_count; a > u; u++)if (f = 2 * u, l = (u + 1) % a * 2, c = o[f] + e, h = o[f + 1] + t, p = o[l] + e, d = o[l + 1] + t, cr.segments_intersect(n, r, i, s, c, h, p, d)) return !0;return !1}, u.prototype.mirror = function(e) {var t, n, r;for (t = 0, n = this.pts_count; n > t; ++t) r = 2 * t, this.pts_cache[r] = 2 * e - this.pts_cache[r]}, u.prototype.flip = function(e) {var t, n, r;for (t = 0, n = this.pts_count; n > t; ++t) r = 2 * t + 1, this.pts_cache[r] = 2 * e - this.pts_cache[r]}, u.prototype.diag = function() {var e, t, n, r, i;for (e = 0, t = this.pts_count; t > e; ++e) n = 2 * e, r = n + 1, i = this.pts_cache[n], this.pts_cache[n] = this.pts_cache[r], this.pts_cache[r] = i}, cr.CollisionPoly = u, a.prototype.totalCellCount = 0, a.prototype.getCell = function(e, t, n) {var r, i = this.cells[e];return i ? (r = i[t], r ? r : n ? (r = f(this, e, t), this.cells[e][t] = r, r) : null) : n ? (r = f(this, e, t), this.cells[e] = {}, this.cells[e][t] = r, r) :null}, a.prototype.XToCell = function(e) {return cr.floor(e / this.cellwidth)}, a.prototype.YToCell = function(e) {return cr.floor(e / this.cellheight)}, a.prototype.update = function(e, t, n) {var r, i, s, o, u;if (t)for (r = t.left, i = t.right; i >= r; ++r)for (s = t.top, o = t.bottom; o >= s; ++s) n && n.contains_pt(r, s) ||(u = this.getCell(r, s, !1), u && (u.remove(e), u.isEmpty() && (l(u), this.cells[r][s] = null)));if (n)for (r = n.left, i = n.right; i >= r; ++r)for (s = n.top, o = n.bottom; o >= s; ++s) t && t.contains_pt(r, s) || this.getCell(r, s, !0).insert(e)}, a.prototype.queryRange = function(e, t) {var n, r, i, s, o, u;for (n = this.XToCell(e.left), i = this.YToCell(e.top), r = this.XToCell(e.right),o = this.YToCell(e.bottom); r >= n; ++n)for (s = i; o >= s; ++s) u = this.getCell(n, s, !1), u && u.dump(t)}, cr.SparseGrid = a;var x = [];c.prototype.isEmpty = function() {return this.objects.isEmpty()}, c.prototype.insert = function(e) {this.objects.add(e)}, c.prototype.remove = function(e) {this.objects.remove(e)}, c.prototype.dump = function(e) {cr.appendArray(e, this.objects.valuesRef())}, cr.GridCell = c;var T = ["lighter", "xor", "copy", "destination-over", "source-in", "destination-in","source-out", "destination-out", "source-atop", "destination-atop"];cr.effectToCompositeOp = function(e) {return 0 >= e || e >= 11 ? "source-over" : T[e - 1]}, cr.setGLBlend = function(e, t, n) {if (n) switch (e.srcBlend = n.ONE, e.destBlend = n.ONE_MINUS_SRC_ALPHA, t) {case 1:e.srcBlend = n.ONE, e.destBlend = n.ONE;break;case 2:break;case 3:e.srcBlend = n.ONE, e.destBlend = n.ZERO;break;case 4:e.srcBlend = n.ONE_MINUS_DST_ALPHA, e.destBlend = n.ONE;break;case 5:e.srcBlend = n.DST_ALPHA, e.destBlend = n.ZERO;break;case 6:e.srcBlend = n.ZERO, e.destBlend = n.SRC_ALPHA;break;case 7:e.srcBlend = n.ONE_MINUS_DST_ALPHA, e.destBlend = n.ZERO;break;case 8:e.srcBlend = n.ZERO, e.destBlend = n.ONE_MINUS_SRC_ALPHA;break;case 9:e.srcBlend = n.DST_ALPHA, e.destBlend = n.ONE_MINUS_SRC_ALPHA;break;case 10:e.srcBlend = n.ONE_MINUS_DST_ALPHA, e.destBlend = n.SRC_ALPHA}}, cr.round6dp = function(e) {return Math.round(1e6 * e) / 1e6}, cr.equals_nocase = function(e, t) {return "string" != typeof e || "string" != typeof t ? !1 : e.length !== t.length ? !1 : e === t ? !0 : e.toLowerCase() === t.toLowerCase()}, cr.isCanvasInputEvent = function(e) {var t = e.target;return t ? t === document || t === window ? !0 : document && document.body && t === document.body ? !0 : cr.equals_nocase(t.tagName, "canvas") ? !0 : !1 : !0}
}();
源码
需要源码请关注添加好友哦^ ^
转载:欢迎来到本站,转载请注明文章出处
https://ormcc.com/

相关文章:
火柴人大逃亡
欢迎来到程序小院 火柴人大逃亡 玩法:左右两边火柴人,点击左边左边火柴人跳跃,点击右边右边跳跃, 上下快速移动道路,躲过障碍物,看你能坚持多久,快去火柴人大逃亡吧^^。开始游戏https://www.or…...
AI革命新篇章:法国天才团队挑战ChatGPT霸主地位
Mistral AI: Guillaume Lample, Arthur Mensch et Timothe Lacroix. ChatGPT 的霸主地位已被三位来自法国的天才所颠覆!如上图这三个人,其中一位曾在 DeepMind 工作,另外两位来自 Meta,他们联手为 AI 领域带来了革命性的变革 我…...
数据双向绑定v-modal
v-model v-model就实现了双向数据绑定,实际上它就是通过Vue提供的事件机制。即在子组件通过$emit()触发一个事件,在父组件使用v-on来监听对应的事件并修改相应的数据。 input的v-model就是通过<input :value"value" input"input"…...
Docker 容器jar 运行报错 at sun.awt.FontConfiguration.getVersion 解决方法
docker jar 运行报错 at sun.awt.FontConfiguration.getVersion 初步判断是在运行 Docker 容器中的 JAR 文件时遇到了与字体配置相关的问题。这个问题可能是由于容器内缺少字体配置或字体文件而引起的。 要解决这个问题,你可以尝试以下方法: 1.安装字…...
光学3D表面轮廓仪服务超精密抛光技术发展
随着技术的不断进步,精密制造领域对材料表面的处理要求越来越高,超精密抛光技术作为当下表面处理的尖端技术,对各种高精密产品的生产起到了至关重要的作用,已广泛应用于集成电路制造、医疗器械、航空航天、3C电子、汽车、精密模具…...
详解C++中auto关键字
auto关键字 auto关键字(C11)类型别名思考auto简介auto的使用细则auto与指针和引用结合起来使用在同一行定义多个变量 auto不能推导的场景1.auto不能作为函数的参数2.auto不能直接用来声明数组 auto关键字(C11) 类型别名思考 随着程序越来越复杂,程序中用到的类型也…...
24.云原生ArgoCD高级之数据加密seale sealed
云原生专栏大纲 文章目录 数据加密之seale sealedBitnami Sealed Secrets介绍Bitnami Sealed Secrets工作流程安装sealed-secrets和kubeseal安装sealed-secrets-controller安装kubeseal通过kubeseal将sealed-secrets公钥拿出来通过kubeseal加密secrets替换kustomize下secret为…...
线性代数:线性方程组
目录 一、线性方程组概念 二、消元法求线性方程组 三、系数阵的秩与线性方程组的解 无解 唯一解 无数解 相关定理 一、线性方程组概念 二、消元法求线性方程组 三、系数阵的秩与线性方程组的解 无解 唯一解 无数解 相关定理...
标准的排序组合-算法
题目 有若干个字母,要求计算出长度为4的所有可能得组合 解题 排序组合最适用的就是回溯了,建议大家本地debug一层一层的看能好理解点 private static void getResult(List<String> source, Stack<String> temp, int curLength, int maxL…...
2402C++,C++递归取各种节点名字
参考 explicit FindNamedClassVisitor(ASTContext *Context) : Context(Context) {}元<类 T>极 动作(T&e){串 ae->getQualifiedNameAsString();d.加(a);中 真;} bool VisitCXXRecordDecl(CXXRecordDecl *e) {中 动作(e);} bool VisitFunctionDecl(FunctionDecl*e…...
Qt 5.9.4 转 Qt 6.6.1 遇到的问题总结(三)
1.QSet: toList 中的toList 函数已不存在,遇到xx->toList改成直接用,如下: 2.开源QWT 图形库中QwtDial中的 setPenWidth 变成 setPenWidthF函数。 3.QDateTime 中无setTime_t 改为了setSecsSinceEpoch函数。 4.QRegExp 类已不存在 可以用Q…...
Logstash 7.7.1版本安装系统梳理
前言 上一篇文章介绍了 《ElasticSearch7.7.1集群搭建 & Kibana安装》,今天说一下 Logstash的安卓和配置; Logstash是一个开源的数据收集引擎,具有实时管道功能。它可以动态地将来自不同数据源的数据统一起来,并将数据标准化…...
4. sass实用函数归纳
4. sass实用函数归纳 字符串函数 1、quote(string) 给字符串添加引号 quote(xiaoming) // "xiaoming"2、unquote(string) 移除字符串的引号 unquote("xiaoming") // xiaoming3、str-index(string, substring) 返回 substring 子字符串第一次在 stri…...
《元梦之星》赛季更新带来“新”内容,为何却被玩家集体声讨?
前段时间,《元梦之星》迎来了“山海奇遇”赛季的重磅更新,诸多“新”内容的上线吸引了很多玩家们的关注,然而在新版本开启之后没有多,新玩法新时装甚至是游戏中的新改动都引起了不少玩家的不满。 在新赛季开启之后,玩家…...
故障诊断 | 一文解决,CNN-SVM卷积神经网络-支持向量机组合模型的故障诊断(Matlab)
效果一览 文章概述 故障诊断 | 一文解决,CNN-SVM卷积神经网络-支持向量机组合模型的故障诊断(Matlab) 模型描述 卷积神经网络(Convolutional Neural Network,CNN)和支持向量机(Support Vector Machine,SVM)是两种常用的机器学习算法,它们在不同领域和任务中都表现出…...
菜鸡后端的前端学习记录-2
前言 记录一下看视频学习前端的的一些笔记,以前对Html、Js、CSS有一定的基础(都认得,没用过),现在不想从头再来了,学学Vue框架,不定时更新,指不定什么时候就鸽了。。。。 忘了记一下…...
Layui + Echarts 5.0
Layui 怎么整合最新版本的 Echarts 5.0,Echarts 4 升级到 5后,有了很大改变,新的配置项4是无法兼容的,所以想要使用新的功能,都需要升级! 新建一个echarts.js文件 layui.define(function (exports) {// 这…...
linux使用iptables禁用ip
iptables是什么? iptables 是一个强大的开源软件,它是 Linux 系统内核中 netfilter 包过滤框架的一部分,用来实现防火墙功能。iptables 提供了一种灵活的方式来控制和管理进出以及通过 Linux 计算机的网络流量。 前提 我在云服务器上用doc…...
安全防御第五次作业
拓扑图及要求如下: 实验注意点: 先配置双机热备,再来配置安全策略和NAT两台双机热备的防火墙的接口号必须一致双机热备时,请确保vrrp配置的虚拟IP与下面的ip在同一网段如果其中一台防火墙有过配置,最好清空或重启&…...
分库分表原则
分库分表原则 单表数据到达千万级别或者20存储空间 优化已经解决不了问题一 IO瓶颈导致性能问题 拆分策略 垂直分库 以表为依据,根据业务将不同的表拆分到不同库中,有点像微服务 垂直分表 以字段为依据,根据字段属性将不同字段拆分到不同…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
