A Three.js site presenting 20 world history milestones as double-sided loose-leaf pages, with three views: a leather binder with page-flip animation, a golden timeline, and a dotted globe with great-circle arcs. All textures (paper, leather, registration cards, and 18 hand-drawn sketches) are generated procedurally via Canvas 2D, so no external image assets are needed beyond the Earth map. Includes dev helper scripts for screenshots, ASCII previews, and headless verification.
44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
// 截图 + 控制台错误采集(开发辅助脚本)
|
|
import puppeteer from 'puppeteer-core';
|
|
|
|
const CHROME = 'C:/Program Files/Google/Chrome/Application/chrome.exe';
|
|
const URL = process.argv[2] || 'http:/localhost:5199/';
|
|
const OUT = process.argv[3] || 'shot';
|
|
|
|
const browser = await puppeteer.launch({
|
|
executablePath: CHROME,
|
|
headless: 'new',
|
|
args: ['--no-sandbox', '--disable-gpu', '--use-gl=swiftshader', '--enable-unsafe-swiftshader', '--window-size=1440,900'],
|
|
});
|
|
|
|
const page = await browser.newPage();
|
|
await page.setViewport({ width: 1440, height: 900 });
|
|
|
|
const logs = [];
|
|
page.on('console', (m) => logs.push(`[${m.type()}] ${m.text()}`));
|
|
page.on('pageerror', (e) => logs.push(`[pageerror] ${e.message}`));
|
|
|
|
await page.goto(URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
|
|
await new Promise((r) => setTimeout(r, 6000));
|
|
|
|
// 依次截图三种视图
|
|
await page.screenshot({ path: `${OUT}-binder.png` });
|
|
|
|
await page.click('.view-btn[data-view="timeline"]');
|
|
await new Promise((r) => setTimeout(r, 2600));
|
|
await page.screenshot({ path: `${OUT}-timeline.png` });
|
|
|
|
await page.click('.view-btn[data-view="globe"]');
|
|
await new Promise((r) => setTimeout(r, 2600));
|
|
await page.screenshot({ path: `${OUT}-globe.png` });
|
|
|
|
// 翻页后截图(回到活页本并翻一页)
|
|
await page.click('.view-btn[data-view="binder"]');
|
|
await new Promise((r) => setTimeout(r, 2600));
|
|
await page.click('#btn-next');
|
|
await new Promise((r) => setTimeout(r, 1600));
|
|
await page.screenshot({ path: `${OUT}-binder-flipped.png` });
|
|
|
|
console.log('LOGS:\n' + logs.join('\n'));
|
|
await browser.close();
|