您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Create custom blocks for Scratch
// ==UserScript== // @name Custom Scratch Block Maker // @namespace http://tampermonkey.net/ // @version 0.1 // @description Create custom blocks for Scratch // @author You // @match https://scratch.mit.edu/projects/* // @grant none // ==/UserScript== (function() { 'use strict'; // Add a sidebar menu for custom blocks const sidebar = document.createElement('div'); sidebar.id = 'custom-block-sidebar'; sidebar.style.position = 'fixed'; sidebar.style.top = '10px'; sidebar.style.left = '10px'; sidebar.style.backgroundColor = 'white'; sidebar.style.border = '1px solid #ccc'; sidebar.style.padding = '10px'; sidebar.style.zIndex = '1000'; const header = document.createElement('h3'); header.innerText = 'Custom Scratch Block Maker'; sidebar.appendChild(header); const blockNameLabel = document.createElement('label'); blockNameLabel.innerText = 'Block Name: '; const blockNameInput = document.createElement('input'); blockNameInput.type = 'text'; sidebar.appendChild(blockNameLabel); sidebar.appendChild(blockNameInput); const blockCategoryLabel = document.createElement('label'); blockCategoryLabel.innerText = 'Block Category: '; const blockCategoryInput = document.createElement('input'); blockCategoryInput.type = 'text'; sidebar.appendChild(blockCategoryLabel); sidebar.appendChild(blockCategoryInput); const createBlockButton = document.createElement('button'); createBlockButton.innerText = 'Create Block'; createBlockButton.onclick = function() { const blockName = blockNameInput.value; const blockCategory = blockCategoryInput.value; if (blockName && blockCategory) { addCustomBlock(blockName, blockCategory); } }; sidebar.appendChild(createBlockButton); document.body.appendChild(sidebar); // Function to add the custom block to Scratch function addCustomBlock(blockName, blockCategory) { // Create the custom block element in the Scratch blocks menu const customBlock = document.createElement('block'); customBlock.setAttribute('type', blockName); customBlock.setAttribute('category', blockCategory); // Add to Scratch's block palette const blockMenu = document.querySelector('.blocklyToolbox'); const newBlockCategory = document.createElement('category'); newBlockCategory.setAttribute('name', blockCategory); newBlockCategory.appendChild(customBlock); blockMenu.appendChild(newBlockCategory); // Map the block to Scratch's scripting area functionality (simplified) const blockly = window.Blockly; const blockDef = { init: function() { this.appendDummyInput() .appendField(blockName); this.setColour(160); this.setOutput(true, null); this.setTooltip('Custom block'); this.setHelpUrl(''); } }; blockly.Blocks[blockName] = blockDef; // Refresh the Scratch editor to show the new block blockly.selected = null; blockly.svgResize(); } })();