MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

微件:SaltFirework:修订间差异

来自MCBBS Wiki
跳到导航 跳到搜索
(快过年了)
 
(添加了自定义烟花颜色色相,颜色波动范围,粒子数量三种自定义参数)
第9行: 第9行:
*/
*/
(function () {
(function () {
// 阻止重复调用
if (document.getElementById('saltFireWorkCanvas')) return
// 参数
// 参数
const hueRange = [0, 360] // 颜色范围
// 颜色范围
const hueDiff = 30 // 颜色变化区间
const hueRange = (function () {
let defaultValue = (function () {
const count = 110 // 粒子效果数量
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) => { createFireworks(e.clientX, e.clientY) }) // 监听事件
document.addEventListener('mousedown', function (e) { createFireworks(e.clientX, e.clientY) }) // 监听事件
}
}
/**清理绘图区 */
/**清理绘图区 */
第55行: 第84行:
function createFireworks(x, y) {
function createFireworks(x, y) {
/**这个烟花的颜色 */
/**这个烟花的颜色 */
let hue = Math.floor(Math.random() * (hueRange[1] - hueRange[0])) + hueRange[0]
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)];
}
}
})()
})()

2021年1月20日 (三) 21:37的版本