[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 cdnBinUrl = `${cdnModelBaseUrl}${cdnModelBinFileName}`;
// 模型自动加载
// console.log(`尝试从 CDN 加载模型: ${cdnJsonUrl}, ${cdnBinUrl}`);
// showStatus(MODEL_STATUS, 'info', '正在尝试从 CDN 自动加载 KNN 模型...');
console.log(`尝试从 CDN 加载模型: ${cdnJsonUrl}, ${cdnBinUrl}`);
showStatus(MODEL_STATUS, 'info', '正在尝试从 CDN 自动加载 KNN 模型...');
try {
await loadKNNModel(cdnJsonUrl, cdnBinUrl);
console.log('CDN 模型自动加载成功。');
} catch (cdnError) {
showStatus(MODEL_STATUS, 'warning', `从 CDN 加载 KNN 模型失败: ${cdnError.message}。您可以尝试手动加载。`);
console.warn('CDN KNN 模型加载失败:', cdnError);
updateModelUI(false);
}
// try {
// await loadKNNModel(cdnJsonUrl, cdnBinUrl);
// console.log('CDN 模型自动加载成功。');
// } catch (cdnError) {
// showStatus(MODEL_STATUS, 'warning', `从 CDN 加载 KNN 模型失败: ${cdnError.message}。您可以尝试手动加载。`);
// console.warn('CDN KNN 模型加载失败:', cdnError);
// updateModelUI(false);
// }
} catch (error) {
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() {
updateGameStatus('initial'); // 初始状态设为 'initial'
statusDisplay.textContent = '正在加载 MoveNet 模型和摄像头...';
isModelLoaded = false;
importModelBtn.disabled = false;
startBtn.disabled = true;
importModelBtn.disabled = true;
try {
// 初始化 KNN 分类器
@ -542,7 +544,6 @@
// 绑定按钮事件
startBtn.addEventListener('click', startGame);
importModelBtn.addEventListener('click', () => fileImporter.click());
fileImporter.addEventListener('change', handleModelImport);
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 {
await loadKNNModelData(null, cdnModelJsonUrl); // 传入 CDN URL, file 为 null
statusDisplay.textContent = 'CDN 姿态识别模型加载成功!可以开始游戏了。';
isModelLoaded = true; // 标记模型已加载
startBtn.disabled = false; // 启用开始游戏按钮
importModelBtn.disabled = true; // 自动加载成功后,禁用手动导入按钮
updateGameStatus('ready'); // 更新游戏状态
} catch (cdnError) {
console.warn('CDN KNN 模型数据自动加载失败:', cdnError);
@ -788,7 +786,7 @@
statusDisplay.textContent = '正在加载模型数据...';
startBtn.disabled = true; // 加载中禁用开始按钮
importModelBtn.disabled = true; // 加载中禁用导入按钮
importModelBtn.disabled = true;
try {
let loadedModelData;
@ -865,7 +863,6 @@
statusDisplay.textContent = '姿态模型导入成功!可以开始游戏了。';
isModelLoaded = true; // 设置模型已加载状态
startBtn.disabled = false; // 启用开始游戏按钮
importModelBtn.disabled = true; // 导入按钮禁用
updateGameStatus('ready');
} catch (error) {
@ -1130,28 +1127,28 @@ function generateFood() {
if (gameStatus === 'initial') {
statusDisplay.textContent = '等待模型导入...';
startBtn.disabled = true;
importModelBtn.disabled = false;
importModelBtn.disabled = false; // 初始状态下允许导入
restartBtn.disabled = true;
} else if (gameStatus === 'loading') {
// 状态文本已经在加载函数中设置
startBtn.disabled = true;
importModelBtn.disabled = true;
importModelBtn.disabled = true; // 加载过程中禁用导入
restartBtn.disabled = true;
} else if (gameStatus === 'ready') {
statusDisplay.textContent = '模型已加载点击“开始游戏”或按“Enter”键。';
startBtn.disabled = false;
importModelBtn.disabled = true;
restartBtn.disabled = true; // 只有在gameOver后才启用重新开始
importModelBtn.disabled = false; // 模型加载完成后,导入按钮保持启用
restartBtn.disabled = true;
} else if (gameStatus === 'playing') {
statusDisplay.textContent = '游戏进行中...';
startBtn.disabled = true;
importModelBtn.disabled = true;
importModelBtn.disabled = false; // 游戏进行中,导入按钮保持启用(如果用户想切换模型)
restartBtn.disabled = true;
} else if (gameStatus === 'gameOver') {
statusDisplay.textContent = '游戏结束点击“重新开始”或按“Enter”键。';
startBtn.disabled = true;
importModelBtn.disabled = true;
restartBtn.disabled = false; // 游戏结束时启用重新开始
importModelBtn.disabled = false; // 游戏结束后,导入按钮保持启用
restartBtn.disabled = false;
}
}