Scratch3.0 动画播放支持SB3.0文件单独运行

2024-08-26 08:38

本文主要是介绍Scratch3.0 动画播放支持SB3.0文件单独运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

git clone https://github.com/LLK/scratch-render.git
cd scratch-render
npm install # 使用cnpm可能会安装失败

git下载慢的,可以考虑一下:加速下载

http://tool.mkblog.cn/github/

其实Scratch开发团队已经实现了这个功能,只是我们要找到接口来调用。打开目录下的/test/integration/index.html可以打开这个播放器Demo网页。此时上传sb文件会发现只能显示代码初始状态的效果,这时需要添加一行代码,添加vm.greenflag()给js执行,就可以实现播放的效果了。
这个网页的代码如下:
 

<body><script src="../../node_modules/scratch-vm/dist/web/scratch-vm.js"></script><script src="../../node_modules/scratch-storage/dist/web/scratch-storage.js"></script><script src="../../node_modules/scratch-svg-renderer/dist/web/scratch-svg-renderer.js"></script><!-- note: this uses the BUILT version of scratch-render!  make sure to npm run build --><script src="../../dist/web/scratch-render.js"></script><canvas id="test" width="480" height="360" style="width: 480px"></canvas><input type="file" id="file" name="file"><script>// These variables are going to be available in the "window global" intentionally.// Allows you easy access to debug with `vm.greenFlag()` etc.window.devicePixelRatio = 1;var canvas = document.getElementById('test');var render = new ScratchRender(canvas);var vm = new VirtualMachine();var storage = new ScratchStorage();var mockMouse = data => vm.runtime.postIOData('mouse', {canvasWidth: canvas.width,canvasHeight: canvas.height,...data,});vm.attachStorage(storage);vm.attachRenderer(render);vm.attachV2SVGAdapter(new ScratchSVGRenderer.SVGRenderer());vm.attachV2BitmapAdapter(new ScratchSVGRenderer.BitmapAdapter());document.getElementById('file').addEventListener('click', e => {document.body.removeChild(document.getElementById('loaded'));});document.getElementById('file').addEventListener('change', e => {const reader = new FileReader();const thisFileInput = e.target;reader.onload = () => {vm.start();vm.loadProject(reader.result).then(() => {// we add a `#loaded` div to our document, the integration suite// waits for that element to show up to assume the vm is ready// to play!const div = document.createElement('div');div.id='loaded';document.body.appendChild(div);// ------------------------------ //vm.greenflag(); // 这里添加这条语句// ------------------------------ //});};reader.readAsArrayBuffer(thisFileInput.files[0]);});</script>
</body>

 

这篇关于Scratch3.0 动画播放支持SB3.0文件单独运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1108081

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla