耳内有灰:
已修复的问题:VirtualList 无法滚动 — 根本原因是 Modal 的内容容器使用 YGUndefined 高度,导致 flexGrow=1 的列表容器实际高度为 0,VirtualList 的 ScrollView 无法获得滚动空间。修复方式是将 listContainer 和 VirtualList 都改为明确的固定高度 460px,并设置 viewportHeight = 460。排序切换功能 — 在留言列表头部添加了排序切换按钮,支持两种排序模式:按热度排序:优先按点赞数降序,其次按评论数降序按时间排序:优先按发布时间降序点击按钮即可在两种模式间切换,切换后自动重新排序并刷新列表。
:
修改总结:问题根因:掉落物的下落动画在内容坐标系中操作 Y 坐标(currentY = originY - FALL_HEIGHT),但在等距视角(isometric)下,内容坐标 Y 的偏移会被旋转+压缩变换成屏幕上的对角线方向移动,导致木头看起来是"从旁边飘进来"而不是"从上往下掉"。修复方案:分离内容坐标与视觉高度:新增 visualHeight 属性,独立于内容坐标内容坐标只做水平插值:currentX/currentY 从树中心平滑移动到散落终点,不再包含竖直偏移使用 renderFunc 施加屏幕空间偏移:在 counter-rotation + undo-ISO 变换之后,通过 yOff = -visualHeight 将精灵向上偏移。这样下落动画就是在屏幕空间中垂直方向的移动,视觉上就是"从树冠正上方往下掉"弹跳也改为屏幕空间:落地后的小弹跳同样通过 visualHeight 实现
:
实现内容总结:测量牌匾区域 — 通过 PIL 分析 roof_mid.png(152×217),确定牌匾木板区域为 x=20…132, y=104…142,转换为比例常量添加比例常量(约 1786 行):PLAQUE_LEFT_RATIO = 0.1316,PLAQUE_RIGHT_RATIO = 0.8684PLAQUE_TOP_RATIO = 0.4793,PLAQUE_BOTTOM_RATIO = 0.6544牌匾隐形框+悬停检测(_RenderRoof 步骤 7c):根据中段位置 (roofLeft + capW, roofTop) 和中段尺寸 (midW, roofH) 乘以比例,计算牌匾矩形将鼠标屏幕坐标通过 ScreenToContent → 逆旋转 → 逆缩放,转换到 counter-rotation local 空间鼠标在牌匾矩形内时,绘制 2px 红色描边边框请预览测试 — 鼠标移到屋檐中段的牌匾区域上时应该出现红色边框。










