[MF]修改贪吃蛇模型加载后无法手动导入问题,调整仓库路径

This commit is contained in:
51hhh 2025-08-28 15:17:05 +08:00
parent 0d6d11aaf7
commit 778af9770b
10 changed files with 1484 additions and 30 deletions

View File

@ -97,18 +97,18 @@ async function initModel() {
const cdnJsonUrl = `${cdnModelBaseUrl}${cdnModelJsonFileName}`; const cdnJsonUrl = `${cdnModelBaseUrl}${cdnModelJsonFileName}`;
const cdnBinUrl = `${cdnModelBaseUrl}${cdnModelBinFileName}`; const cdnBinUrl = `${cdnModelBaseUrl}${cdnModelBinFileName}`;
// 模型自动加载
console.log(`尝试从 CDN 加载模型: ${cdnJsonUrl}, ${cdnBinUrl}`); // console.log(`尝试从 CDN 加载模型: ${cdnJsonUrl}, ${cdnBinUrl}`);
showStatus(MODEL_STATUS, 'info', '正在尝试从 CDN 自动加载 KNN 模型...'); // showStatus(MODEL_STATUS, 'info', '正在尝试从 CDN 自动加载 KNN 模型...');
try { // try {
await loadKNNModel(cdnJsonUrl, cdnBinUrl); // await loadKNNModel(cdnJsonUrl, cdnBinUrl);
console.log('CDN 模型自动加载成功。'); // console.log('CDN 模型自动加载成功。');
} catch (cdnError) { // } catch (cdnError) {
showStatus(MODEL_STATUS, 'warning', `从 CDN 加载 KNN 模型失败: ${cdnError.message}。您可以尝试手动加载。`); // showStatus(MODEL_STATUS, 'warning', `从 CDN 加载 KNN 模型失败: ${cdnError.message}。您可以尝试手动加载。`);
console.warn('CDN KNN 模型加载失败:', cdnError); // console.warn('CDN KNN 模型加载失败:', cdnError);
updateModelUI(false); // updateModelUI(false);
} // }
} catch (error) { } catch (error) {
showStatus(MODEL_STATUS, 'error', `模型加载失败: ${error.message}`); showStatus(MODEL_STATUS, 'error', `模型加载失败: ${error.message}`);

File diff suppressed because one or more lines are too long

View File

@ -519,8 +519,10 @@
async function initApp() { async function initApp() {
updateGameStatus('initial'); // 初始状态设为 'initial' updateGameStatus('initial'); // 初始状态设为 'initial'
statusDisplay.textContent = '正在加载 MoveNet 模型和摄像头...'; statusDisplay.textContent = '正在加载 MoveNet 模型和摄像头...';
isModelLoaded = false;
importModelBtn.disabled = false;
startBtn.disabled = true; startBtn.disabled = true;
importModelBtn.disabled = true;
try { try {
// 初始化 KNN 分类器 // 初始化 KNN 分类器
@ -542,7 +544,6 @@
// 绑定按钮事件 // 绑定按钮事件
startBtn.addEventListener('click', startGame); startBtn.addEventListener('click', startGame);
importModelBtn.addEventListener('click', () => fileImporter.click());
fileImporter.addEventListener('change', handleModelImport); fileImporter.addEventListener('change', handleModelImport);
restartBtn.addEventListener('click', resetGame); restartBtn.addEventListener('click', resetGame);
@ -562,19 +563,16 @@
} }
}); });
// --- 新增:尝试自动从 CDN 加载 KNN 模型数据 ---
// !!! 请替换为你的实际 CDN 模型 URL !!!
const cdnModelJsonUrl = 'https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/models/pose-knn-model.json';
console.log(`尝试从 CDN 自动加载 KNN 模型数据: ${cdnModelJsonUrl}`); // 自动加载模型
statusDisplay.textContent = '正在尝试从 CDN 加载姿态识别模型...'; const cdnModelJsonUrl = 'https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/models/pose-knn-model.json';
try { try {
await loadKNNModelData(null, cdnModelJsonUrl); // 传入 CDN URL, file 为 null await loadKNNModelData(null, cdnModelJsonUrl); // 传入 CDN URL, file 为 null
statusDisplay.textContent = 'CDN 姿态识别模型加载成功!可以开始游戏了。'; statusDisplay.textContent = 'CDN 姿态识别模型加载成功!可以开始游戏了。';
isModelLoaded = true; // 标记模型已加载 isModelLoaded = true; // 标记模型已加载
startBtn.disabled = false; // 启用开始游戏按钮 startBtn.disabled = false; // 启用开始游戏按钮
importModelBtn.disabled = true; // 自动加载成功后,禁用手动导入按钮
updateGameStatus('ready'); // 更新游戏状态 updateGameStatus('ready'); // 更新游戏状态
} catch (cdnError) { } catch (cdnError) {
console.warn('CDN KNN 模型数据自动加载失败:', cdnError); console.warn('CDN KNN 模型数据自动加载失败:', cdnError);
@ -788,7 +786,7 @@
statusDisplay.textContent = '正在加载模型数据...'; statusDisplay.textContent = '正在加载模型数据...';
startBtn.disabled = true; // 加载中禁用开始按钮 startBtn.disabled = true; // 加载中禁用开始按钮
importModelBtn.disabled = true; // 加载中禁用导入按钮 importModelBtn.disabled = true;
try { try {
let loadedModelData; let loadedModelData;
@ -865,7 +863,6 @@
statusDisplay.textContent = '姿态模型导入成功!可以开始游戏了。'; statusDisplay.textContent = '姿态模型导入成功!可以开始游戏了。';
isModelLoaded = true; // 设置模型已加载状态 isModelLoaded = true; // 设置模型已加载状态
startBtn.disabled = false; // 启用开始游戏按钮 startBtn.disabled = false; // 启用开始游戏按钮
importModelBtn.disabled = true; // 导入按钮禁用
updateGameStatus('ready'); updateGameStatus('ready');
} catch (error) { } catch (error) {
@ -1130,28 +1127,28 @@ function generateFood() {
if (gameStatus === 'initial') { if (gameStatus === 'initial') {
statusDisplay.textContent = '等待模型导入...'; statusDisplay.textContent = '等待模型导入...';
startBtn.disabled = true; startBtn.disabled = true;
importModelBtn.disabled = false; importModelBtn.disabled = false; // 初始状态下允许导入
restartBtn.disabled = true; restartBtn.disabled = true;
} else if (gameStatus === 'loading') { } else if (gameStatus === 'loading') {
// 状态文本已经在加载函数中设置 // 状态文本已经在加载函数中设置
startBtn.disabled = true; startBtn.disabled = true;
importModelBtn.disabled = true; importModelBtn.disabled = true; // 加载过程中禁用导入
restartBtn.disabled = true; restartBtn.disabled = true;
} else if (gameStatus === 'ready') { } else if (gameStatus === 'ready') {
statusDisplay.textContent = '模型已加载点击“开始游戏”或按“Enter”键。'; statusDisplay.textContent = '模型已加载点击“开始游戏”或按“Enter”键。';
startBtn.disabled = false; startBtn.disabled = false;
importModelBtn.disabled = true; importModelBtn.disabled = false; // 模型加载完成后,导入按钮保持启用
restartBtn.disabled = true; // 只有在gameOver后才启用重新开始 restartBtn.disabled = true;
} else if (gameStatus === 'playing') { } else if (gameStatus === 'playing') {
statusDisplay.textContent = '游戏进行中...'; statusDisplay.textContent = '游戏进行中...';
startBtn.disabled = true; startBtn.disabled = true;
importModelBtn.disabled = true; importModelBtn.disabled = false; // 游戏进行中,导入按钮保持启用(如果用户想切换模型)
restartBtn.disabled = true; restartBtn.disabled = true;
} else if (gameStatus === 'gameOver') { } else if (gameStatus === 'gameOver') {
statusDisplay.textContent = '游戏结束点击“重新开始”或按“Enter”键。'; statusDisplay.textContent = '游戏结束点击“重新开始”或按“Enter”键。';
startBtn.disabled = true; startBtn.disabled = true;
importModelBtn.disabled = true; importModelBtn.disabled = false; // 游戏结束后,导入按钮保持启用
restartBtn.disabled = false; // 游戏结束时启用重新开始 restartBtn.disabled = false;
} }
} }