-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathextensionmake.js
More file actions
1 lines (1 loc) · 6.56 KB
/
extensionmake.js
File metadata and controls
1 lines (1 loc) · 6.56 KB
1
let 扩展代码 = []; class extensionmake { getInfo() { return { id: 'extensionmake', name: '扩展制作', color1: '#ff8829', blocks: [{ opcode: '初始化', blockType: Scratch.BlockType.COMMAND, text: '初始化', arguments: {} }, { opcode: 'class', blockType: Scratch.BlockType.COMMAND, text: 'class [扩展id] ', arguments: { 扩展id: { type: Scratch.ArgumentType.STRING, defaultValue: 'myextension', }, } }, { opcode: '获取信息', blockType: Scratch.BlockType.COMMAND, text: 'getInfo([string]) ', arguments: { string: { type: Scratch.ArgumentType.STRING, defaultValue: ' ', }, } }, { opcode: '返回', blockType: Scratch.BlockType.COMMAND, text: '开始定义扩展', arguments: {} }, { opcode: 'id', blockType: Scratch.BlockType.COMMAND, text: '扩展id [扩展id]', arguments: { 扩展id: { type: Scratch.ArgumentType.STRING, defaultValue: 'myextension', }, } }, { opcode: 'name', blockType: Scratch.BlockType.COMMAND, text: '扩展名 [扩展name]', arguments: { 扩展name: { type: Scratch.ArgumentType.STRING, defaultValue: '我的扩展', }, } }, { opcode: 'color1', blockType: Scratch.BlockType.COMMAND, text: 'color1[扩展color1]', arguments: { 扩展color1: { type: Scratch.ArgumentType.STRING, defaultValue: '#ff8829', }, } }, { opcode: 'color2', blockType: Scratch.BlockType.COMMAND, text: 'color2[扩展color2]', arguments: { 扩展color2: { type: Scratch.ArgumentType.STRING, defaultValue: '#ff8829', }, } }, { opcode: 'color3', blockType: Scratch.BlockType.COMMAND, text: 'color3[扩展color3]', arguments: { 扩展color3: { type: Scratch.ArgumentType.STRING, defaultValue: '#ff8829', }, } }, { opcode: 'blocks', blockType: Scratch.BlockType.COMMAND, text: '开始定义积木', arguments: {} }, { opcode: 'blockstart', blockType: Scratch.BlockType.COMMAND, text: '积木开始', arguments: {} }, { opcode: 'blockend', blockType: Scratch.BlockType.COMMAND, text: '积木结束', arguments: {} }, { opcode: '操作码', blockType: Scratch.BlockType.COMMAND, text: 'opcode[操作码]', arguments: { 操作码: { type: Scratch.ArgumentType.STRING, defaultValue: 'myblock', }, } }, { opcode: '积木类型', blockType: Scratch.BlockType.COMMAND, text: '积木类型[积木类型]', arguments: { 积木类型: { type: Scratch.ArgumentType.STRING, defaultValue: 'COMMAND', }, } }, { opcode: '积木名', blockType: Scratch.BlockType.COMMAND, text: '积木名[积木名]', arguments: { 积木名: { type: Scratch.ArgumentType.STRING, defaultValue: '我的积木', }, } }, { opcode: 'arguments', blockType: Scratch.BlockType.COMMAND, text: '开始解释', arguments: {} }, { opcode: '解释', blockType: Scratch.BlockType.COMMAND, text: '解释[解释]类型[type]默认值[默认值]', arguments: { 解释: { type: Scratch.ArgumentType.STRING, defaultValue: 'A', }, type: { type: Scratch.ArgumentType.STRING, defaultValue: 'STRING', }, 默认值: { type: Scratch.ArgumentType.STRING, defaultValue: 'A', }, } }, { opcode: 'argumentend', blockType: Scratch.BlockType.COMMAND, text: '结束解释', arguments: {} }, { opcode: 'blocksend', blockType: Scratch.BlockType.COMMAND, text: '结束定义积木', arguments: {} }, { opcode: 'code', blockType: Scratch.BlockType.COMMAND, text: '后台编译[opcode]参数[can]', arguments: { opcode: { type: Scratch.ArgumentType.STRING, defaultValue: 'opcode', }, can: { type: Scratch.ArgumentType.STRING, defaultValue: 'agrs', }, } }, { opcode: 'runcode', blockType: Scratch.BlockType.COMMAND, text: '代码[code]', arguments: { code: { type: Scratch.ArgumentType.STRING, defaultValue: ' ', }, } }, { opcode: 'codeend', blockType: Scratch.BlockType.COMMAND, text: '结束编译', arguments: {} }, { opcode: 'extensionend', blockType: Scratch.BlockType.COMMAND, text: '结束定义扩展id[id]参数[can]', arguments: { id: { type: Scratch.ArgumentType.STRING, defaultValue: '扩展id', }, can: { type: Scratch.ArgumentType.STRING, defaultValue: ' ', }, } }, { opcode: '扩展代码', blockType: Scratch.BlockType.REPORTER, text: '扩展代码', arguments: {} }, ] }; } 初始化({}) { 扩展代码 = []; } class({ 扩展id }) { 扩展代码.push(`class ${扩展id} {`); } 获取信息({ string }) { 扩展代码.push(`getInfo(${string}) {`); } 返回({}) { 扩展代码.push("return {"); } id({ 扩展id }) { 扩展代码.push(`id: '${扩展id}',`); } name({ 扩展name }) { 扩展代码.push(`name: '${扩展name}',`); } color1({ 扩展color1 }) { 扩展代码.push(`color1: '${扩展color1}',`); } color2({ 扩展color2 }) { 扩展代码.push(`color2: '${扩展color2}',`); } color3({ 扩展color3 }) { 扩展代码.push(`color3: '${扩展color3}',`); } blocks({}) { 扩展代码.push("blocks: ["); } blockstart({}) { 扩展代码.push("{"); } blockend({}) { 扩展代码.push("},"); } 操作码({ 操作码 }) { 扩展代码.push(`opcode: '${操作码}',`); } 积木类型({ 积木类型 }) { 扩展代码.push(`blockType: Scratch.BlockType.${积木类型},`); } 积木名({ 积木名 }) { 扩展代码.push(`text: '${积木名}',`); } arguments({}) { 扩展代码.push("arguments: {"); } 解释({ 解释, type, 默认值 }) { 扩展代码.push(`${解释}: { type: Scratch.ArgumentType.${type}, defaultValue: '${默认值}', },`); } argumentend({}) { 扩展代码.push("}"); } blocksend({}) { 扩展代码.push(" ] }; }"); } code({ opcode, can }) { 扩展代码.push(`${opcode}(${can}) {`); } runcode({ code }) { 扩展代码.push(`${code};`); } codeend({}) { 扩展代码.push("}"); } extensionend({ id, can }) { 扩展代码.push(`}Scratch.extensions.register(new ${id}(${can}));`); } 扩展代码({}) { return 扩展代码.join("\n"); } } Scratch.extensions.register(new extensionmake());