Skip to content

项目状态检测器快速入门指南

概述

项目状态检测器 (ProjectStatusChecker) 是 Eagle2Ae 的核心功能之一,用于在执行关键操作前检测系统状态,确保操作的可行性和安全性。

快速开始

基本使用

javascript
// 创建状态检测器实例
const checker = new ProjectStatusChecker();

// 执行完整状态检测
const result = await checker.checkProjectStatus();

// 检查结果
if (result.hasErrors) {
    console.error('检测到错误:', result.errors);
    // 显示智能错误对话框
    const userChoice = await showStatusErrorDialog(result);
    
    // 根据用户选择处理
    switch (userChoice) {
        case '重试':
            return await checker.checkProjectStatus();
        case '忽略':
            console.warn('用户选择忽略错误,继续操作');
            break;
        case '取消':
            return null;
    }
} else {
    console.log('状态检查通过,可以继续操作');
    // 显示状态总结(可选)
    await showStatusSummaryDialog(result);
}

集成到文件导入流程

javascript
// 在文件导入前进行状态检测
async function importFileWithStatusCheck(filePath) {
    const checker = new ProjectStatusChecker();
    
    // 1. 执行状态检测
    const statusResult = await checker.checkProjectStatus();
    
    if (statusResult.hasErrors) {
        // 显示错误对话框并获取用户选择
        const userChoice = await showStatusErrorDialog(statusResult);
        
        if (userChoice === '取消') {
            return { success: false, reason: '用户取消操作' };
        }
        
        if (userChoice === '重试') {
            // 递归重试
            return await importFileWithStatusCheck(filePath);
        }
        
        // 用户选择忽略,记录警告但继续操作
        console.warn('用户选择忽略状态错误,继续导入文件');
    }
    
    // 2. 根据检测结果优化导入参数
    const importOptions = optimizeImportOptions(statusResult);
    
    // 3. 执行文件导入
    return await performFileImport(filePath, importOptions);
}

// 根据状态检测结果优化导入选项
function optimizeImportOptions(statusResult) {
    const options = {
        batchSize: 10,
        useProxy: false,
        enablePreview: true
    };
    
    // 根据系统性能调整批处理大小
    if (statusResult.info.performance?.memoryUsage > 0.8) {
        options.batchSize = 5; // 内存使用率高时减少批处理大小
        options.useProxy = true; // 启用代理以减少内存占用
    }
    
    // 根据项目复杂度调整预览设置
    if (statusResult.info.project?.itemCount > 100) {
        options.enablePreview = false; // 项目复杂时禁用预览
    }
    
    return options;
}

常见使用场景

1. 文件导入前的状态检查

在执行文件导入操作前,使用项目状态检测器确保AE项目已打开且连接正常。

2. 图层操作前的状态检查

在执行图层检测或导出操作前,检查活动合成是否存在。

3. 系统健康检查

定期检查系统状态,确保扩展正常运行。

最佳实践

关键操作前检测

在执行重要操作前始终进行状态检测:

javascript
// 文件导入前检测
async function importFiles(files) {
    const checker = new ProjectStatusChecker();
    const status = await checker.checkProjectStatus();
    
    if (!status.info.project?.hasProject) {
        const userChoice = await showDialog('需要打开项目', '请先打开或创建一个项目');
        if (userChoice === 'create') {
            await createNewProject();
        } else if (userChoice === 'open') {
            await openProjectDialog();
        } else {
            return;
        }
    }
    
    // 继续导入流程...
}

合理使用缓存

根据操作频率合理配置缓存:

javascript
// 高频操作使用较长缓存
const uiChecker = new ProjectStatusChecker();
uiChecker.cacheTimeout = 10000; // UI 更新可以使用 10 秒缓存

// 关键操作使用较短缓存
const importChecker = new ProjectStatusChecker();
importChecker.cacheTimeout = 2000; // 导入操作使用 2 秒缓存

// 实时操作不使用缓存
const realtimeChecker = new ProjectStatusChecker();
realtimeChecker.cacheTimeout = 0; // 实时检测不使用缓存

Released under the MIT License.