Compare commits

...
35 Commits
Author SHA1 Message Date
OLDREDSTONE caf38e002f Merge branch 'main' of https://git.obugs.cn/zyx/rd.rdlevel.cn 2026-03-25 14:43:42 +08:00
BucketBrianandOLDREDSTONE 83da1be318 new 2026-03-25 14:43:08 +08:00
BucketBrianandOLDREDSTONE 1425d1b512 new 2026-03-25 14:43:08 +08:00
OLDREDSTONE cd72af4043 2026/03/01 更新 2026-03-25 14:43:08 +08:00
OLDREDSTONE 38010a85e9 [RDView] 修复 hsb 属性读取异常和渲染异常 2026-03-25 14:40:26 +08:00
OLDREDSTONE e12b104c8b [RDView] 现已可用,在 pages/classicbeat 可查看第一个用例 2026-03-25 14:40:18 +08:00
OLDREDSTONE dac8579656 [RDView2] 更新 2026-03-25 14:39:29 +08:00
OLDREDSTONE d125e827f3 [RDView2] DOM 渲染基本完工,进入可行性测试阶段 2026-03-25 14:38:47 +08:00
OLDREDSTONE 76b48c3b95 修复 json 解析异常未捕获的错误 2026-03-25 14:37:40 +08:00
OLDREDSTONE 479da74bfa [rdview2] 性能测试 2026-03-25 14:36:52 +08:00
OLDREDSTONE 05c3417439 优化渲染流程(虽然还是很卡 2026-03-25 14:33:43 +08:00
OLDREDSTONE fe639f79eb 【实验】添加对 rdview2 的支持 2026-03-25 14:33:16 +08:00
kuanpanandOLDREDSTONE 4014df39e5 删除 images/hold.jpg 2026-03-25 14:30:54 +08:00
kuanpanandOLDREDSTONE 8b55914845 上传文件至 images 2026-03-25 14:30:54 +08:00
0x4D2andOLDREDSTONE ecb95f3e8e 更新附录中的事件列表
Signed-off-by: 0x4D2 <1706119930@qq.com>
2026-03-25 14:30:42 +08:00
OLDREDSTONE 550045f5f8 更改了页面右侧功能区的样式 2026-03-25 14:29:52 +08:00
kuanpanandOLDREDSTONE ff60b5fe12 删除 images/moverow_SpinningRows_WavyRotation.png 2026-03-25 14:27:24 +08:00
kuanpanandOLDREDSTONE 73ef185ba3 删除 images/moverow_SpinningRows_Rotate.png 2026-03-25 14:27:24 +08:00
kuanpanandOLDREDSTONE 28fb3b4a88 删除 images/moverow_SpinningRows_Disconnect.png 2026-03-25 14:27:24 +08:00
kuanpanandOLDREDSTONE 757ce6b6ed 删除 images/moverow_SpinningRows_ContinuousRotation.png 2026-03-25 14:27:24 +08:00
kuanpanandOLDREDSTONE d82f49dbec 删除 images/moverow_SpinningRows_Connect.png 2026-03-25 14:27:24 +08:00
kuanpanandOLDREDSTONE 7f58583cff 旋转轨道(怎么一次最多上传5个图啊) 2026-03-25 14:27:24 +08:00
kuanpanandOLDREDSTONE be23ad1d29 重排序:行 2026-03-25 14:27:24 +08:00
kuanpanandOLDREDSTONE c7e9e3da13 更新轨道涂色图片 2026-03-25 14:27:24 +08:00
kuanpanandOLDREDSTONE c595870e06 更新 pages/accessibledesign.md 2026-03-25 14:26:30 +08:00
kuanpanandOLDREDSTONE 3568004db6 更新 pages/moverow.md 2026-03-25 14:26:08 +08:00
kuanpanandOLDREDSTONE 93985cea1d 删除 images/moverow_SpinningRows_WavyRotation.png 2026-03-25 14:26:08 +08:00
kuanpanandOLDREDSTONE c512c2ff3f 删除 images/moverow_SpinningRows_Rotate.png 2026-03-25 14:26:08 +08:00
kuanpanandOLDREDSTONE 9c6ef4e9e3 删除 images/moverow_SpinningRows_Disconnect.png 2026-03-25 14:26:08 +08:00
kuanpanandOLDREDSTONE 981b70c402 删除 images/moverow_SpinningRows_ContinuousRotation.png 2026-03-25 14:26:07 +08:00
kuanpanandOLDREDSTONE 0f3bed36d9 删除 images/moverow_SpinningRows_Connect.png 2026-03-25 14:26:07 +08:00
kuanpanandOLDREDSTONE 850d7d8d0f 旋转轨道(怎么一次最多上传5个图啊) 2026-03-25 14:26:07 +08:00
kuanpanandOLDREDSTONE 42afb16b45 重排序:行 2026-03-25 14:26:07 +08:00
kuanpanandOLDREDSTONE 70feff6119 更新轨道涂色图片 2026-03-25 14:26:07 +08:00
kuanpanandOLDREDSTONE 0ead33329e 更新了窗口动效和旋转轨道 (#52)
Reviewed-on: RDCNWebs/rd.rdlevel.cn#52
Co-authored-by: kuanpan <kuanpan791@gmail.com>
Co-committed-by: kuanpan <kuanpan791@gmail.com>
2026-03-25 14:26:07 +08:00
3 changed files with 101 additions and 1 deletions
+1 -1
View File
@@ -116,4 +116,4 @@
| 设置主窗口 | `U` | [窗口相关的动画](../pages/WindowDance.md#设置主窗口) | 设置对话,顶部护士灯光,状态牌等内容在哪个窗口显示 |
| 设置窗口名称 | `N` | [窗口相关的动画](../pages/WindowDance.md#设置窗口名称) | 修改窗口的标题 |
| 设置桌面颜色 | `D` | [窗口相关的动画](../pages/WindowDance.md#设置桌面颜色) | 修改模拟移动时桌面的颜色 |
| 注释 | `M` | [标签](../pages/tag.md#让事件摆放更有条理) | 添加注释内容或插入注释型自定义方法 |
| 注释 | `M` | [标签](../pages/tag.md#让事件摆放更有条理) | 添加注释内容或插入注释型自定义方法 |
+85
View File
@@ -236,6 +236,91 @@ function rdview() {
textarea.addEventListener("input", initCanvas);
}
function rdview2() {
let rdview = document.getElementsByClassName("rdview2")[0];
if (!rdview) return;
let rdcanvas = rdview.querySelector(".canvas");
let textarea = rdview.querySelector("textarea.area");
let number = rdview.querySelector(".number");
const textareaStyles = window.getComputedStyle(textarea);
[
"fontFamily",
"fontSize",
"fontWeight",
"letterSpacing",
"lineHeight",
"padding",
].forEach((property) => {
number.style[property] = textareaStyles[property];
});
const canvas = document.createElement("canvas");
const context = canvas.getContext("2d");
const font = `${textareaStyles.fontSize} ${textareaStyles.fontFamily}`;
context.font = font;
function calcStringLines(sentence, width) {
if (!width) return 0;
const words = sentence.split("");
let lineCount = 0;
let currentLine = "";
for (let i = 0; i < words.length; i++) {
const wordWidth = context.measureText(words[i]).width;
const lineWidth = context.measureText(currentLine).width;
if (lineWidth + wordWidth > width) {
lineCount++;
currentLine = words[i];
} else {
currentLine += words[i];
}
}
if (currentLine.trim() !== "") lineCount++;
return lineCount;
}
function calcLines() {
const lines = textarea.value.split("\n");
const textareaWidth = textarea.getBoundingClientRect().width;
const textareaScrollWidth = textareaWidth - textarea.clientWidth;
const parseNumber = (v) =>
v.endsWith("px") ? parseInt(v.slice(0, -2), 10) : 0;
const textareaPaddingLeft = parseNumber(textareaStyles.paddingLeft);
const textareaPaddingRight = parseNumber(textareaStyles.paddingRight);
const textareaContentWidth = textareaWidth - textareaPaddingLeft -
textareaPaddingRight - textareaScrollWidth;
const numLines = lines.map((lineString) =>
calcStringLines(lineString, textareaContentWidth)
);
let lineNumbers = [];
let i = 1;
while (numLines.length > 0) {
const numLinesOfSentence = numLines.shift();
lineNumbers.push(i);
if (numLinesOfSentence > 1) {
Array(numLinesOfSentence - 1)
.fill("")
.forEach((_) => lineNumbers.push(""));
}
i++;
}
return lineNumbers;
}
function initLineNumbers() {
const lines = calcLines();
const lineDoms = Array.from({
length: lines.length,
}, (_, i) => `<div>${lines[i] || "&nbsp;"}</div>`);
number.innerHTML = lineDoms.join("");
}
function initCanvas() {
const lang = textarea.value.split("\n")[0];
const code = textarea.value.split("\n").slice(1).join("\n");
rdcanvas.innerHTML = RDViewRender(lang, code);
}
initCanvas();
initLineNumbers();
textarea.addEventListener("input", initLineNumbers);
textarea.addEventListener("input", initCanvas);
}
function rdview2() {
let rdview = document.getElementsByClassName("rdview2")[0];
if (!rdview) return;
+15
View File
@@ -1313,3 +1313,18 @@ del {
transition: background-color 0.3s, transform 0.2s;
z-index: 20;
}
.controlSpan {
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-family: "d9", sans-serif;
font-size: 16px;
height: 30px;
width: 30px;
transition: background-color 0.3s, transform 0.2s;
z-index: 20;
}