Scratch3.0 页面初始化同时加载sb3文件的操作代码

scratch是一种非常合适的培养自己的编程兴趣的方式。通过拖拽的方式,可以实现一些游戏,小程序的开发,就像搭积木一样,下面给大家介绍Scratch3.0 页面初始化同时加载sb3文件的操作方法,一起看看吧!

目标文件地址:src\containers\sb-file-uploader.jsx

修改 sb-file-uploader.jsx文件, class SBFileUploader中添加componentDidMount(),代码如下

componentDidMount() { 

    var _this = this;

	// 作品所在存放地址
	var sb3Path = null;

	/**
	 * 必须使用 $(window).on("load",function(){});
	 * 否则页面在未加载完的情况下,有些组件会来不及加载,影响二次文件保存
	 */
	console.log("尚未初始加载Sb3文件");
	$(window).on("load",function(){
		console.log("即将初始加载Sb3文件");
		let reader = new FileReader();
		let request = new XMLHttpRequest();
		console.log("加载的资源路径", sb3Path);
		request.open('GET', sb3Path, true);
		request.responseType = "blob";
		request.onload = function() {
			if(request.status==404){
				alert("未找到sb3类型的资源文件");
				location.href='/scratch';
			}
			let blobs = request.response
			reader.readAsArrayBuffer(blobs);
			reader.onload = () => _this.props.vm.loadProject(reader.result).then(() => {
				analytics.event({
					category: 'project',
					action: 'Import Project File',
					nonInteraction: true
				});
				_this.props.onLoadingFinished(_this.props.loadingState);
			}).catch(error => {
				log.warn(error);
			});
		}
		request.send();
	});
}

目标文件地址:src\components\menu-bar\menu-bar.jsx

修改 menu-bar.jsx文件, class MenuBar 中初始SBFileUploader,代码如下

// 必须加载这个文件
import SBFileUploader from '../../containers/sb-file-uploader.jsx';

class MenuBar extends React.Component {

    render () {

        return (
            <Box
                className={classNames(
                    this.props.className,
                    styles.menuBar,
                    {[styles.saveInProgress]: this.props.isUpdating}
                )}
            >
				<SBFileUploader onUpdateProjectTitle={PropTypes.func} /** 初始化加载文件到项目 **/>
					{(className, renderFileInput, loadProject) => (
						<button onClick={loadProject} className={classNames(styles.scratchHide)}></button>
					)}
				</SBFileUploader>
            </Box>
        );
    }
}

export default injectIntl(connect(
    mapStateToProps,
    mapDispatchToProps
)(MenuBar));

到此这篇关于Scratch3.0 页面初始化同时加载sb3文件的操作代码的文章就介绍到这了,更多相关Scratch页面初始化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解析scratch3.0二次开发之scratch-blocks免编译修改问题

    scratch-blocks编译的时候会出现的问题:scratch-gui依赖的scratch-blocks模块在安装的时候编译会报错. 原因:scratch-blocks编译时要调用的build.py文件运行时发生错误.windowst系统下,代码压缩的过程是build.py通过一个closure-library的插件处理后,发送到谷歌的服务器进行压缩,返回的结果会生成blocks_compressed.js,blocks_compressed_horizontal.js,blocks_com

  • 详解scratch3.0二次开发之scratch-blocks中的blocks的类型、定义和使用方法

    scratch-blocks是scratch-gui依赖的一个基本模块.它的作用是生成gui界面上的blocks.(有关scratch-blocks的方法可以看我上一篇博客<scratch3.0二次开发之scratch-blocks的免编译修改方法>).blocks的作用是通过拖曳的方法组成blocks堆块,点击greenflag控件,舞台区(stage)会有相应的变化. scratch-gui的blocks的生成文件在scratch-blocks\blocks_vertical里. bloc

  • Scratch3.0二次开发之windows环境下打包成exe的流程

    先给大家看下Scratch3.0二次开发之windows环境下打包成exe的流程. 1.需要先安装npm,安装过程不作过多介绍了. 2.直接介绍打包成exe流程. (1)首先在scratch-gui目录下 cd scratch-gui npm install 设置静态文件路径 set BUILD_MODE=dist set STATIC_PATH=static build scratch-gui npm run build 设置链接 npm link (2)进入scratch-desktop目录

  • scratch3.0二次开发之用blocks生成python代码

    目录 一.引入一个生成代码的文件 二.定义生成的python代码 1.获取block的type 2.获取参数的值 3.从xml来解析一个块的组成结构 三.生成python代码 四.结语 在开始之前,先回顾下之前写的文章<scratch3.0二次开发之blocks生成代码思路>,在文章里大概地写了生成代码的几个步骤,读者看了可能还不太理解,这是根据我的开发经验写出来的.现在具体写写实现的方法. 一.引入一个生成代码的文件 比如要生成arduino代码,就要引入生成arduino代码的文件,要生成

  • Scratch3.0 页面初始化同时加载sb3文件的操作代码

    scratch是一种非常合适的培养自己的编程兴趣的方式.通过拖拽的方式,可以实现一些游戏,小程序的开发,就像搭积木一样,下面给大家介绍Scratch3.0 页面初始化同时加载sb3文件的操作方法,一起看看吧! 目标文件地址:src\containers\sb-file-uploader.jsx 修改 sb-file-uploader.jsx文件, class SBFileUploader中添加componentDidMount(),代码如下 componentDidMount() { var _

  • iOS 加载Bundle文件的实例代码

    废话不多说了,下面通过一段代码给大家介绍iOS 加载Bundle文件的方法,具体代码如下所示: - (NSString *)loadJsFile:(NSString *)fileName Type:(NSString *)type{ NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:type]; NSString *string1 = [NSString stringWithContentsOfFile

  • jQuery移动web开发中的页面初始化与加载事件

    页面初始化事件(pagebeforecreate.pagecreate) Jquery Mobile会自动基于page"内的增强的约定自动初始化一些插件.例如:给一个input输入框约定了type=range属性会自动生成一个自定义滑动条.这些自动初始化的行为是受"page"插件控制的,它在执行前后部署部署事件,允许你在初始化前后操作页面,或者甚至自己提供初始化行为,禁止自动初始化.注以下的页面初始化事件在每个"page"只被触发一次,与每次页面在显示或者

  • 当滚动条滚动到页面底部自动加载增加内容的js代码

    1,注册页面滚动事件,window.onscroll = function(){ }; 2,相关获取页面高度.滚动条位置.文档高度的函数: 复制代码 代码如下: //获取滚动条当前的位置 function getScrollTop() { var scrollTop = 0; if (document.documentElement && document.documentElement.scrollTop) { scrollTop = document.documentElement.s

  • js加载之使用DOM方法动态加载Javascript文件

    传统上,加载Javascript文件都是使用<script>标签. 就像下面这样: <script type="text/javascript" src="example.js"></script> <script>标签很方便,只要加入网页,浏览器就会读取并运行.但是,它存在一些严重的缺陷. (1)严格的读取顺序.由于浏览器按照<script>在网页中出现的顺序,读取Javascript文件,然后立即运行,

  • jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)

    本文实例讲述了jQuery+ajax实现滚动到页面底部自动加载图文列表效果.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&qu

  • jquery在启动页面时,自动加载数据的实例

    其实,重要的就是这个方法: $(document).ready(function(){ } 具体的在jquery中: 具体的ajax怎么使用,可以查看我的上一篇博客<浅谈ajax在jquery中的请求和servlet中的响应> <script type="text/javascript"> $(document).ready(function(){ var str = ""; var strA = ""; $.ajax({

  • Vue下滚动到页面底部无限加载数据的示例代码

    看到一篇Implementing an Infinite Scroll with Vue.js, 觉得挺实用的就看了下, 顺便简单翻译了一下给需要的人参考. 从这个项目中可以加深对Vue的生命周期的理解, 何时开始axios请求, 如何结合Vue使用原生js来写scroll事件等等, 我这里主要是对原文的重点提取和补充 本文技术要点 Vue生命周期 axios简单用法 moment.js格式化日期 图片懒加载 结合原生js来写scroll事件 请求节流 创建项目 首先创建一个简单的vue项目 #

  • js实现滚动条滚动到页面底部继续加载

    这个实例应该说可以很简单,直接使用jQuery的方法来处理也是可以的.但本文底层使用原生的js来处理,遇到一些小知识点可以分析一下也算有所得. 原理很简单,就是为window添加一个scroll事件,浏览器每次触发scroll事件时判断是否滚动到了浏览器底部,如果到了底部则加载新数据.关键是计算滚动条是否滚动到了浏览器底部,算法如下 滚动条卷起来的高度 + 窗口高度 > 文档的总高度 + 50/*我这里将滚动响应区域高度取50px*/:如果这个判断为true则表示滚动条滚动到了底部. 实例 <

  • Ajax实现静态刷新页面过程带加载旋转图片

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat=

随机推荐