3,389
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
Salt lovely(留言 | 贡献) (快过年了) |
Salt lovely(留言 | 贡献) 小 (添加了自定义烟花颜色色相,颜色波动范围,粒子数量三种自定义参数) |
||
| 第9行: | 第9行: | ||
*/ | */ | ||
(function () { | (function () { | ||
// 阻止重复调用 | |||
if (document.getElementById('saltFireWorkCanvas')) return | |||
// 参数 | // 参数 | ||
const hueRange = [0, 360] // | // 颜色范围 | ||
const hueDiff = 30 // | const hueRange = (function () { | ||
const count = 110 | let defaultValue = (function () { | ||
var x = [] | |||
for (let i = 1; i < 361; i++) | |||
x.push(i) | |||
return x | |||
})() | |||
let e = document.getElementById('saltForeworkHueRange') | |||
if (!e) return defaultValue | |||
let c = e.textContent.replace(/[\s\n_]+/g, '').replace(/[\;\/\|\/\\,;、\-]+/g, ',').split(',').map((v) => parseInt(v)).filter(Boolean).filter((v) => v > 0 && v < 361) | |||
if (!c || c.length < 1 || c.length > 360) return defaultValue | |||
return c | |||
})()// [0, 360] | |||
// 颜色变化区间 | |||
const hueDiff = (function () { | |||
let e = document.getElementById('saltForeworkHueDiff') | |||
if (!e) return 30 | |||
let c = parseInt(e.textContent) | |||
if (isNaN(c) || c < 0 || c > 180) return 30 | |||
return c | |||
})() | |||
// 粒子效果数量 | |||
const count = (function () { | |||
let e = document.getElementById('saltForeworkCount') | |||
if (!e) return 110 | |||
let c = parseInt(e.textContent) | |||
if (isNaN(c) || c < 1 || c > 500) return 110 | |||
return c | |||
})() | |||
const baseRange = [1, 4] // 粒子大小 | const baseRange = [1, 4] // 粒子大小 | ||
const speedMutiply = 6 // 粒子速度范围 | const speedMutiply = 6 // 粒子速度范围 | ||
| 第40行: | 第69行: | ||
clearCanvas() | clearCanvas() | ||
tick() // 开始tick | tick() // 开始tick | ||
document.addEventListener('mousedown', (e) | document.addEventListener('mousedown', function (e) { createFireworks(e.clientX, e.clientY) }) // 监听事件 | ||
} | } | ||
/**清理绘图区 */ | /**清理绘图区 */ | ||
| 第55行: | 第84行: | ||
function createFireworks(x, y) { | function createFireworks(x, y) { | ||
/**这个烟花的颜色 */ | /**这个烟花的颜色 */ | ||
let hue = | let hue = randomChoice(hueRange) | ||
for (let i = 0; i < count; i++) { | for (let i = 0; i < count; i++) { | ||
let spd = Math.random() * speedMutiply + baseSpeed | let spd = Math.random() * speedMutiply + baseSpeed | ||
| 第128行: | 第157行: | ||
clearParticles() | clearParticles() | ||
requestAnimationFrame(tick) | requestAnimationFrame(tick) | ||
} | |||
/**随机选择 */ | |||
function randomChoice(arr) { | |||
if (arr.length < 1) { | |||
return null; | |||
} | |||
return arr[Math.floor(Math.random() * arr.length)]; | |||
} | } | ||
})() | })() | ||
</script></includeonly> | </script></includeonly> | ||