插件 API
插件是修改编辑器和播放器的 userscript 和 userstyle。每个插件是 scratch-gui/src/addons/addons/ 下的一个文件夹,带有一个清单和一个或多个脚本。当插件的 userscript 运行时,它接收一个 API 对象。本页是该对象的参考,定义在 scratch-gui/src/addons/api.js。插件是什么以及如何使用请参阅插件。
userscript 入口点
插件 userscript 导出一个接收 API 对象的默认异步函数:
export default async function ({addon, console, msg}) {
const vm = addon.tab.traps.vm;
// ... 修改编辑器 ...
}
传入的对象具有以下成员:
addon:插件 API,分为addon.tab、addon.settings和addon.self(见下文)。console:浏览器控制台。global:全局对象。msg(key, vars):来自插件翻译的本地化消息。safeMsg(key, vars):相同,但经过 HTML 转义。
addon.tab
addon.tab 是触及页面的主要表面。它是一个事件目标。
tab.traps:到编辑器内部的逃生舱口:traps.vm:实时的VirtualMachine。traps.getBlockly():在 Blockly 实例就绪后解析它。traps.getWorkspace():当前的 Blockly 工作区。traps.getPaper():在造型编辑器打开时解析 paper.js 作用域。
tab.redux:访问 GUI 的 Redux store,包括tab.redux.state和statechanged事件。tab.waitForElement(selector, options):在匹配的 DOM 元素出现后解析它。选项包括markAsSeen(这样同一元素不会返回两次)、condition回调、reduxCondition回调和reduxEvents以等待特定的 store 操作。tab.appendToSharedSpace({space, element, order, scope}):将元素插入已知的编辑器区域(例如stageHeader),相对于其他插件保持在稳定位置。tab.createBlockContextMenu(callback, {workspace, blocks, flyout, comments}):向积木或工作区上下文菜单添加项目。tab.scratchClass(...names, {others}):将 RemixWarp 的哈希 CSS 类名(例如green-flag)解析为它们真实的运行时类名,让您的样式和查询匹配。tab.scratchMessage(id):查找编辑器自己本地化字符串之一。tab.copyImage(dataURL):将 PNG 数据 URL 复制到剪贴板。tab.createModal(title, {isOpen})、tab.confirm(...)、tab.prompt(...):编辑器风格的对话框。tab.displayNoneWhileDisabled(el, options):在插件被禁用时隐藏元素。tab.editorMode:当前编辑器模式字符串。tab.direction:当前语言环境的'ltr'或'rtl'。tab.recolorable():一个<img>,其 SVG 根据当前主题强调色重新着色。