|
|
第17行: |
第17行: |
|
| |
|
| == 外部链接和注释 == | | == 外部链接和注释 == |
| {{沔阳小镇}}
| | [沔阳小镇] |
| | |
| | |
| <!DOCTYPE html>
| |
| <html lang="en">
| |
| <head>
| |
| <meta charset="UTF-8">
| |
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
| |
| <title>电闪雷鸣效果</title>
| |
| <style>
| |
| body {
| |
| margin: 0;
| |
| overflow: hidden;
| |
| background-color: #000;
| |
| }
| |
| canvas {
| |
| display: block;
| |
| }
| |
| </style>
| |
| </head>
| |
| <body>
| |
| <canvas id="stormCanvas"></canvas>
| |
| | |
| <script>
| |
| document.addEventListener('DOMContentLoaded', function() {
| |
| const canvas = document.getElementById('stormCanvas');
| |
| const ctx = canvas.getContext('2d');
| |
|
| |
| // 设置canvas大小为窗口大小
| |
| function resizeCanvas() {
| |
| canvas.width = window.innerWidth;
| |
| canvas.height = window.innerHeight;
| |
| }
| |
|
| |
| window.addEventListener('resize', resizeCanvas);
| |
| resizeCanvas();
| |
|
| |
| // 雨滴数组
| |
| const raindrops = [];
| |
| const raindropCount = 500;
| |
|
| |
| // 闪电参数
| |
| let flashAlpha = 0;
| |
| let flashTimeout = null;
| |
| let nextFlashTime = 0;
| |
|
| |
| // 雨滴类
| |
| class Raindrop {
| |
| constructor() {
| |
| this.reset();
| |
| this.z = Math.random() * 0.5 + 0.5; // 深度 (0.5-1)
| |
| }
| |
|
| |
| reset() {
| |
| this.x = Math.random() * canvas.width;
| |
| this.y = Math.random() * -canvas.height;
| |
| this.speed = Math.random() * 10 + 10;
| |
| this.length = Math.random() * 20 + 10;
| |
| this.opacity = Math.random() * 0.5 + 0.3;
| |
| }
| |
|
| |
| update() {
| |
| this.y += this.speed * this.z;
| |
|
| |
| // 如果雨滴落出屏幕,重置到顶部
| |
| if (this.y > canvas.height) {
| |
| this.reset();
| |
| this.y = Math.random() * -50;
| |
| }
| |
| }
| |
|
| |
| draw() {
| |
| ctx.beginPath();
| |
| ctx.moveTo(this.x, this.y);
| |
| ctx.lineTo(this.x, this.y + this.length * this.z);
| |
| ctx.strokeStyle = `rgba(150, 200, 255, ${this.opacity})`;
| |
| ctx.lineWidth = 1 * this.z;
| |
| ctx.stroke();
| |
| }
| |
| }
| |
|
| |
| // 闪电效果
| |
| function createLightning() {
| |
| // 随机闪电位置
| |
| const startX = Math.random() * canvas.width;
| |
| const endX = startX + (Math.random() * 200 - 100);
| |
|
| |
| // 创建闪电分支
| |
| const segments = 10 + Math.floor(Math.random() * 10);
| |
| const points = [];
| |
|
| |
| points.push({x: startX, y: 0});
| |
|
| |
| for (let i = 1; i < segments; i++) {
| |
| const prev = points[i-1];
| |
| const variance = (i === segments-1) ? 0 : 30;
| |
|
| |
| points.push({
| |
| x: prev.x + (Math.random() * variance * 2 - variance),
| |
| y: prev.y + (canvas.height / (segments-1))
| |
| });
| |
| }
| |
|
| |
| // 添加一些随机抖动
| |
| for (let i = 1; i < points.length-1; i++) {
| |
| points[i].x += Math.random() * 10 - 5;
| |
| }
| |
|
| |
| // 绘制闪电
| |
| ctx.beginPath();
| |
| ctx.moveTo(points[0].x, points[0].y);
| |
|
| |
| for (let i = 1; i < points.length; i++) {
| |
| ctx.lineTo(points[i].x, points[i].y);
| |
| }
| |
|
| |
| ctx.strokeStyle = `rgba(200, 220, 255, ${flashAlpha})`;
| |
| ctx.lineWidth = 2;
| |
| ctx.stroke();
| |
|
| |
| // 添加闪电发光效果
| |
| if (flashAlpha > 0.3) {
| |
| ctx.shadowBlur = 20;
| |
| ctx.shadowColor = 'rgba(200, 220, 255, 0.7)';
| |
| ctx.stroke();
| |
| ctx.shadowBlur = 0;
| |
| }
| |
|
| |
| // 创建分支闪电
| |
| if (Math.random() > 0.7) {
| |
| const branchPoint = points[Math.floor(Math.random() * (points.length-3)) + 2];
| |
| const branchSegments = 3 + Math.floor(Math.random() * 3);
| |
| const branchPoints = [];
| |
|
| |
| branchPoints.push({x: branchPoint.x, y: branchPoint.y});
| |
|
| |
| for (let i = 1; i < branchSegments; i++) {
| |
| const prev = branchPoints[i-1];
| |
| branchPoints.push({
| |
| x: prev.x + (Math.random() * 40 - 20),
| |
| y: prev.y + (canvas.height / (branchSegments * 2))
| |
| });
| |
| }
| |
|
| |
| ctx.beginPath();
| |
| ctx.moveTo(branchPoints[0].x, branchPoints[0].y);
| |
|
| |
| for (let i = 1; i < branchPoints.length; i++) {
| |
| ctx.lineTo(branchPoints[i].x, branchPoints[i].y);
| |
| }
| |
|
| |
| ctx.strokeStyle = `rgba(200, 220, 255, ${flashAlpha * 0.7})`;
| |
| ctx.lineWidth = 1;
| |
| ctx.stroke();
| |
| }
| |
| }
| |
|
| |
| // 闪电动画
| |
| function flash() {
| |
| flashAlpha = 0.9;
| |
|
| |
| // 快速淡出
| |
| const fadeOut = () => {
| |
| flashAlpha -= 0.05;
| |
| if (flashAlpha <= 0) {
| |
| flashAlpha = 0;
| |
| clearTimeout(flashTimeout);
| |
| scheduleNextFlash();
| |
| } else {
| |
| flashTimeout = setTimeout(fadeOut, 30);
| |
| }
| |
| };
| |
|
| |
| flashTimeout = setTimeout(fadeOut, 50);
| |
| }
| |
|
| |
| // 安排下一次闪电
| |
| function scheduleNextFlash() {
| |
| nextFlashTime = Date.now() + Math.random() * 3000 + 1000;
| |
| }
| |
|
| |
| // 初始化雨滴
| |
| function initRaindrops() {
| |
| for (let i = 0; i < raindropCount; i++) {
| |
| raindrops.push(new Raindrop());
| |
| }
| |
| }
| |
|
| |
| // 绘制背景
| |
| function drawBackground() {
| |
| // 渐变背景
| |
| const gradient = ctx.createLinearGradient(0, 0, 0, canvas.height);
| |
| gradient.addColorStop(0, '#020210');
| |
| gradient.addColorStop(1, '#0a0a30');
| |
|
| |
| ctx.fillStyle = gradient;
| |
| ctx.fillRect(0, 0, canvas.width, canvas.height);
| |
|
| |
| // 闪电照亮效果
| |
| if (flashAlpha > 0) {
| |
| ctx.fillStyle = `rgba(200, 220, 255, ${flashAlpha * 0.2})`;
| |
| ctx.fillRect(0, 0, canvas.width, canvas.height);
| |
| }
| |
| }
| |
|
| |
| // 动画循环
| |
| function animate() {
| |
| drawBackground();
| |
|
| |
| // 检查是否需要触发闪电
| |
| if (Date.now() > nextFlashTime && flashAlpha === 0) {
| |
| flash();
| |
| }
| |
|
| |
| // 绘制闪电
| |
| if (flashAlpha > 0) {
| |
| createLightning();
| |
| }
| |
|
| |
| // 更新和绘制雨滴
| |
| for (const drop of raindrops) {
| |
| drop.update();
| |
| drop.draw();
| |
| }
| |
|
| |
| requestAnimationFrame(animate);
| |
| }
| |
|
| |
| initRaindrops();
| |
| scheduleNextFlash();
| |
| animate();
| |
|
| |
| // 点击屏幕也可以触发闪电
| |
| canvas.addEventListener('click', flash);
| |
| });
| |
| </script>
| |
| </body>
| |
| </html>
| |
模板:人物信息 何思源.JPG
罗斯,江西南昌人,政治魔怔人,萨拉查主义大手子。以在群聊中宣传新国家体制思想闻名,经常因政治观点与人争论而红温。真名何思源,但自称"新国家领袖"。沉迷于研究葡萄牙历史,特别是萨拉查时期的政治体制。曾经和叫徐志豪的魔怔人辩论政治理论,被驳倒后大脑降级每天研究《国家与革命》。
政治主张
狂热崇拜葡萄牙前领导人安东尼奥·德·奥利维拉·萨拉查
主张建立类似葡萄牙"新国家体制"的政治制度
秘密崇拜法西斯主义
认为传统价值观应该成为国家基石
自称"理性主义者"但经常情绪失控
轶事
曾在沔阳小镇群聊中连续发表3小时政治理论
因为政治观点被多个群组踢出
声称要建立"新南昌国家"
收藏了大量葡萄牙历史书籍
外部链接和注释
[沔阳小镇]