feat: 分栏对照开发,字体缩放、定位调整
This commit is contained in:
@@ -10,6 +10,7 @@ import {
|
||||
type LetterTracingMode,
|
||||
} from '../shared/generators/letter-tracing-generator';
|
||||
import { LETTERS_UPPER } from '../shared/data/alphabet';
|
||||
import { loadLetterFont } from '../shared/draw/drawTools';
|
||||
|
||||
/** 各 worksheetId 对应的页面标题和描述 */
|
||||
const PAGE_META: Record<string, { title: string; desc: string }> = {
|
||||
@@ -80,13 +81,34 @@ createPage(
|
||||
modeOptions: [...MODE_OPTIONS],
|
||||
} as unknown as PageData,
|
||||
|
||||
/** 页面加载:从路由参数获取 worksheetId 并应用 */
|
||||
onLoad(options: { id?: string }) {
|
||||
/** 页面加载:从路由参数获取 worksheetId、letter、case 并应用,同时预加载字体 */
|
||||
onLoad(options: {
|
||||
id?: string;
|
||||
letter?: string;
|
||||
case?: 'upper' | 'lower';
|
||||
}) {
|
||||
loadLetterFont().catch(() => {});
|
||||
const worksheetId =
|
||||
options.id && PAGE_META[options.id]
|
||||
? options.id
|
||||
: 'letter-tracing-single';
|
||||
this.applyWorksheet(worksheetId);
|
||||
|
||||
const updates: Partial<PageData> = {};
|
||||
if (options.letter) {
|
||||
const normalized = normalizeLetter(options.letter);
|
||||
if (normalized) updates.selectedLetter = normalized;
|
||||
}
|
||||
if (options.case === 'lower') {
|
||||
updates.letterCaseLower = true;
|
||||
} else if (options.case === 'upper') {
|
||||
updates.letterCaseLower = false;
|
||||
}
|
||||
if (Object.keys(updates).length > 0) {
|
||||
this.setData(
|
||||
updates as Partial<PageData> & WechatMiniprogram.IAnyObject,
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
/** 用户点击模式选择器时切换 worksheet */
|
||||
@@ -140,10 +162,11 @@ createPage(
|
||||
});
|
||||
},
|
||||
|
||||
/** 执行 Canvas 绘制:生成数据 → 调用 drawService 渲染 */
|
||||
/** 执行 Canvas 绘制:等待字体就绪 → 生成数据 → 调用 drawService 渲染 */
|
||||
async drawCanvas() {
|
||||
if (!this.ctx || !this.drawService) return;
|
||||
try {
|
||||
await loadLetterFont();
|
||||
const config = this.buildRuntimeConfig();
|
||||
const data = generateLetterTracing(config);
|
||||
console.log('drawCanvas data', data);
|
||||
|
||||
Reference in New Issue
Block a user