scratch3.0二次开发分享

最近有个项目,基于scratch3.0二开的,发现网上这方面资料比较少,特把涉及到scratch3.0的相关知识分享给大家,让scratch3.0二开的人,可以少走点弯路。

主要涉及内容,基本以scratch3.0工程本身及相关底层接口调用或扩展为准。

目录


框架初始化升级

集成antd,集成axios:

"devDependencies": {
    "antd": "^3.26.19",
    "axios": "^0.26.1",
  }

保存编程项目到自有服务器

项目文件上传通用封装函数


export function uploadFile (form) {
    return new Promise((resolve, reject) => {
        request({
            url: '你自己的项目保存地址',
            data: form
        })
            .then(response => {
                resolve(response.data);
            })
            .catch(err => {
                console.log(err);
                reject(response.data);
            });
    });
}

编程项目上传

window.vm.saveProjectSb3().then(projectData => {
                const projectFile = new File([projectData], `${window.scratch.getProjectName()}.sb3`);
                const form = new FormData();
                // File.lastModified:最后修改时间
                // File.name:文件名或文件路径
                // File.size:文件大小(单位字节)
                // File.type:文件的 MIME 类型
                form.append('file', projectFile);
                form.append('projectId', this.state.projectId);
                uploadFile(form).then(rres => {
                    log.debug('程序文件上传,返回结果 editProject:', rres);
                    if (rres && rres.data && rres.data.id) {

                    }
                });
            });

在线编程项目加载


    /**
     * 加载当前编程项目
     * @param {number} _codeId
     * @param {string} _title
     */
    loadCloudProject (_codeId, _title) {
        log.debug('状态用户最新的编程项目', _codeId, _title);
        window.scratch.loadProject(
            `你自己的项目下载地址`, _title,
            res => {
                log.debug('编程项目加载结果:', res);
                window.scratch.setProjectName(_title);
                this.props.onProjectUnchanged();
            }
        );
    }

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值