系列文章
PixelKnit 像素织梦第 2 篇 / 共 3 篇从 Canvas 编织图编辑器到模块化架构——一个前端应用从原型到工程化的完整演进记录。
像素织梦 (PixelKnit):一个功能完整的Web编织辅助工具
像素织梦 (PixelKnit) v1.1:像素地图编辑器与完整地图管理系统
像素织梦 (PixelKnit) v2.0:模块化架构重构与用户体验全面升级
引言
在 v1.0 版本发布后,像素织梦 (PixelKnit) 已经成为一个功能完整的编织引导应用。但用户反馈显示,他们不仅需要跟踪编织进度,还希望能够创建和编辑自己的像素地图。因此,我们推出了 v1.1 版本,带来了完整的像素地图编辑器和智能地图管理系统。
像素织梦 v1.1 - 从编织引导到地图创作,让每一格像素都触手可及。
图1:像素织梦 (PixelKnit) Logo - 像素艺术风格的品牌标识
🆕 v1.1 版本亮点
v1.1 版本的核心更新:
🎨 像素地图编辑器:完整的编辑模式,支持绘制、调色板、撤销/重做
📁 智能地图管理:示例地图和用户地图区分,支持复制、编辑、删除
💾 智能保存机制:编辑现有地图直接更新,新建地图另存为
🎯 Logo 展示:应用主页和应用列表页面显示 PixelKnit Logo
⚡ 性能优化:保持流畅的编辑体验
图2:v1.1 版本主界面,展示Logo、地图列表和编辑功能入口
像素地图编辑器
编辑模式概述
v1.1 版本引入了完整的像素地图编辑器,用户可以在应用内直接创建和编辑像素地图,无需外部工具。
编辑模式的核心特性:
画布编辑:在主画布上直接绘制像素,支持点击和拖拽填充
实时预览:编辑时实时显示完整颜色,与浏览模式无缝切换
尺寸灵活:支持 10-500 像素的任意尺寸设置
调色板系统:自动解析颜色,支持自定义颜色添加
图3:编辑模式界面,展示编辑工具栏、调色板和画布
调色板系统
智能调色板:
自动解析:复制地图时自动解析所有颜色并添加到调色板
颜色选择器:支持使用浏览器原生颜色选择器添加自定义颜色
实时显示:显示当前选中颜色的预览和 RGB 值
颜色管理:调色板中的颜色可以随时选择使用
图4:调色板系统,展示颜色预览、RGB值和颜色选择器
编辑工具
完整的编辑工具集:
撤销/重做系统
支持最多 50 步历史记录
快捷键支持(Ctrl+Z / Ctrl+Y)
实时更新按钮状态
尺寸调整
手动设置宽度和高度(10-500 像素)
应用尺寸时保留现有像素数据
支持扩大和缩小画布
清空地图
一键清空所有像素
保留当前尺寸和调色板
快速重置画布
保存功能
保存到 localStorage
自动下载 JSON 文件
智能保存机制(见下文)
图5:编辑工具栏,展示尺寸设置、保存、清空、撤销/重做等工具
智能地图管理系统
地图类型区分
v1.1 版本引入了地图类型系统,区分示例地图和用户地图:
示例地图:
只读保护,不可编辑或删除
可以复制创建用户地图副本
作为模板和参考使用
用户地图:
完全可编辑和可删除
可以复制创建新副本
保存在 localStorage 中
graph LR
Maps["地图列表"] --> Example["示例地图
pixel_map_data.json"]
Maps --> User["用户地图
localStorage"]
Example --> RO["只读保护
不可编辑/删除"]
Example --> Copy["可复制为模板"]
User --> RW["完全可编辑/删除"]
User --> Edit["编辑直接更新原图"]
图6:地图类型标识,展示”示例”和”用户”标签
地图操作
三种核心操作:
复制地图
点击”复制”按钮直接创建新地图
自动解析并添加所有颜色到调色板
不进入编辑模式,直接保存对话框
默认显示名称为”原地图名称 (副本)”
编辑地图
点击用户地图的”编辑”按钮进入编辑模式
编辑后保存直接更新原图(不另存为)
支持撤销/重做,完整编辑历史
删除地图
仅用户地图可删除
删除前需要确认
自动清理 localStorage 数据
图7:地图操作按钮,展示复制、编辑、删除功能
智能保存机制
v1.1 版本实现了智能保存机制,根据编辑状态自动选择保存方式:
编辑现有地图:
检测到正在编辑用户地图时
保存时直接更新原图数据
不显示保存对话框,直接保存
自动退出编辑模式
新建地图:
从空白画布或复制地图创建
保存时显示保存对话框
自动生成 5 位数字 ID(如 map_00001)
可以自定义显示名称
graph LR
Save["用户触发保存"] --> Q{"正在编辑
用户地图?"}
Q -->|是| Update["直接更新原图
自动退出编辑"]
Q -->|否| Dialog["弹出保存对话框
输入名称"]
Dialog --> NewID["自动生成 ID
map_00001"]
NewID --> NewSave["另存为新地图"]
图8:保存对话框,展示地图ID和显示名称输入
Logo 展示系统
v1.1 版本添加了 PixelKnit Logo 的展示功能:
应用主页:
Logo 显示在页面头部,标题上方
120px × 120px(桌面端)
支持 hover 放大效果
与标题和副标题垂直排列
应用列表页面:
Logo 显示在应用卡片头部
80px × 80px(桌面端)
居中显示,突出品牌标识
响应式设计,移动端自动缩小
图9:Logo展示效果,展示应用主页和应用列表页面的Logo位置
技术实现细节
编辑模式架构
状态管理:
// 编辑模式状态
let isEditMode = false;
let editingMapName = null; // 正在编辑的地图名称
let editingMapType = null; // 地图类型:'user' 或 'example'
let editGridData = null; // 编辑网格数据
let editColorMap = null; // 编辑颜色映射
let editHistory = []; // 编辑历史记录(最多50步)
let editHistoryIndex = -1; // 当前历史索引
编辑历史系统:
使用数组存储历史记录
每次编辑操作保存完整状态快照
限制最多 50 步历史记录
支持撤销和重做操作
地图管理实现
地图列表结构:
// 地图列表格式
[
{
"name": "pixel_map_data",
"file": "pixel_map_data.json",
"displayName": "示例地图",
"type": "example" // 示例地图
},
{
"name": "map_00001",
"file": "map_00001.json",
"displayName": "用户地图 00001",
"type": "user" // 用户地图
}
]
数据持久化:
示例地图:从 JSON 文件加载
用户地图:从 localStorage 加载
地图列表:自动合并示例和用户地图
自动管理地图 ID 生成
智能保存逻辑
保存流程判断:
function saveMapToFile() {
// 如果正在编辑用户地图,直接更新原图
if (editingMapName && editingMapType === 'user') {
// 直接更新,不显示对话框
updateExistingMap();
exitEditMode();
return;
}
// 否则,显示保存对话框,另存为新地图
showSaveMapDialog();
}
功能对比
v1.0 vs v1.1
功能
v1.0
v1.1
编织引导
✅
✅
进度跟踪
✅
✅
地图编辑
❌
✅
地图管理
❌
✅
地图复制
❌
✅
Logo展示
❌
✅
撤销/重做
❌
✅
调色板
❌
✅
图10:v1.0 与 v1.1 功能对比图
使用场景
场景一:创建自定义地图
进入编辑模式(从空白或复制地图)
设置画布尺寸
使用调色板绘制像素图案
保存为新地图
开始编织引导
图11:创建自定义地图的完整流程
场景二:编辑现有地图
点击用户地图的”编辑”按钮
修改像素图案
使用撤销/重做调整
保存直接更新原图
图12:编辑现有地图的完整流程
场景三:复制和修改
点击示例地图的”复制”按钮
在保存对话框中输入显示名称
创建副本后进入编辑模式
修改后保存为新地图
图13:复制和修改地图的完整流程
设计思考
为什么区分示例地图和用户地图?
设计理念:
示例地图保护:确保示例地图不被误删或修改,保持模板完整性
用户自由创作:用户地图完全可控,支持自由编辑和删除
清晰的权限边界:通过类型标识和操作按钮,明确区分可操作范围
为什么编辑现有地图直接更新?
用户体验考虑:
符合直觉:编辑现有文件应该直接保存,而不是另存为
减少操作步骤:不需要输入名称,直接保存
避免数据冗余:不会创建重复的地图文件
为什么复制地图不进入编辑模式?
工作流程优化:
快速复制:复制后直接保存,适合快速创建副本
按需编辑:需要修改时再进入编辑模式
减少干扰:避免不必要的编辑界面切换
视觉设计更新
Logo 集成
设计原则:
品牌一致性:Logo 与应用整体风格保持一致
响应式适配:不同页面和屏幕尺寸自动调整大小
交互反馈:hover 效果增强用户体验
编辑模式 UI
界面设计:
独立工具栏:编辑工具集中管理,操作便捷
调色板面板:右侧浮动面板,不遮挡主画布
无缝切换:编辑模式和浏览模式平滑过渡
图14:编辑模式UI设计,展示工具栏、调色板和画布的布局
性能优化
编辑模式性能
优化策略:
历史记录限制:最多 50 步,避免内存占用过大
批量操作:编辑操作批量处理,减少重绘
智能重绘:仅重绘修改区域,提升性能
地图管理性能
优化措施:
延迟加载:地图数据按需加载,不一次性加载所有地图
缓存机制:已加载的地图数据缓存,避免重复加载
DOM 缓存:地图项 DOM 引用缓存,减少查询
未来展望
虽然 v1.1 版本已经功能完整,但仍有改进空间:
图片导入功能:支持导入图片并自动转换为像素地图
图层系统:支持多图层编辑,更复杂的创作
导出功能:支持导出为 PNG、SVG 等格式
模板库:提供更多示例地图模板
协作功能:支持多用户协作编辑
图15:未来功能展望,展示计划中的新功能
更新日志
v1.1.0 (2025-11-09)
新增功能:
🆕 像素地图编辑器:完整的编辑模式,支持绘制、调色板、撤销/重做
🆕 地图管理系统:示例地图和用户地图区分,支持复制、编辑、删除
🆕 智能保存机制:编辑现有地图直接更新,新建地图另存为
🆕 Logo 展示:应用主页和应用列表页面显示 PixelKnit Logo
优化改进:
✅ 性能优化(编辑模式历史记录、地图管理缓存)
✅ UI/UX 优化(编辑工具栏、调色板面板)
✅ 响应式设计(Logo 和编辑界面适配)
v1.0.0 (2025-11-09)
✅ 完整编织引导功能实现
✅ 对角预设模式
✅ 进度跟踪系统
✅ 放大镜和工具提示
PixelKnit 像素织梦 系列
←
像素织梦 (PixelKnit):一个功能完整的Web...
像素织梦 (PixelKnit) v2.0:模块化架构...
→
总结
像素织梦 (PixelKnit) v1.1 是一个重大更新版本,从单纯的编织引导工具升级为完整的像素地图创作和编织平台。新增的编辑器和地图管理系统,让用户可以:
自由创作:创建自己的像素地图
灵活编辑:修改现有地图,满足个性化需求
便捷管理:复制、编辑、删除地图,管理自己的作品库
v1.1 版本不仅保持了 v1.0 的所有编织引导功能,还增加了强大的创作能力,真正实现了”从像素到编织”的完整工作流程。
像素织梦 v1.1 - 不仅跟踪编织,更要创造编织。让每一格像素都成为艺术,让每一针编织都充满创意。
项目地址:GitHub Repository
在线体验:像素织梦 (PixelKnit)
技术栈:HTML5, CSS3, JavaScript, Canvas API, localStorage
相关文章:像素织梦 v1.0 介绍
本文介绍了像素织梦 v1.1 版本的新功能和实现细节。如果你有任何问题或建议,欢迎在评论区留言。
图像资源说明
本文使用的图像资源应放置在以下位置:
assets/images/knitting-guide/
├── logo/
│ └── PixelKnit_logo.png # Logo图片(已存在)
├── v1.1-main-interface.png # v1.1版本主界面截图
├── edit-mode-interface.png # 编辑模式界面截图
├── color-palette-system.png # 调色板系统截图
├── edit-toolbar.png # 编辑工具栏截图
├── map-type-badges.png # 地图类型标识截图
├── map-actions.png # 地图操作按钮截图
├── save-dialog.png # 保存对话框截图
├── logo-display.png # Logo展示效果截图
├── version-comparison.png # 功能对比图
├── create-custom-map.png # 创建自定义地图流程截图
├── edit-existing-map.png # 编辑现有地图流程截图
├── copy-and-modify.png # 复制和修改流程截图
├── edit-mode-ui-design.png # 编辑模式UI设计图
└── future-features.png # 未来功能展望图
图像要求:
格式:PNG 或 JPG
尺寸:建议宽度 1200-1600px
质量:清晰、高分辨率
风格:与应用界面保持一致