Scratch拡張のコードをここに書くとScrapboxのAPIでコード単体のURLができるのでそれをsheeptester.github.ioに読みこませて試してる。
ScratchのコードはWebWorkerで走ってるみたいで、JS拡張からwindow.promptを呼び出しても未定義になる :
vm Primitive rejected promise: ReferenceError: prompt is not defined
at Prompt._prompt (prompt.js:23)
at WorkerDispatch.transferCall (extension-worker.js:735)
at WorkerDispatch.call (extension-worker.js:700)
at WorkerDispatch._onMessage (extension-worker.js:879)
prompt.js
class Prompt {
constructor() { }
getInfo() {
return {
id: 'prompt',
name: 'Prompt',
blocks: [
{
opcode: '_prompt',
blockType: Scratch.BlockType.REPORTER,
text: 'prompt([X])',
arguments: {
X: {
type: Scratch.ArgumentType.STRING,
defaultValue: 'message'
},
}
}
]
}
}
_prompt(args) {
return prompt(args.X);
}
}
Scratch.extensions.register(new Prompt());
https://scrapbox.io/api/code/nishio/ScratchExtensionCode/prompt.js
動いた from https://www.kodomonokagaku.com/wp-content/uploads/2020/11/第42回2009ジブン専用パソコン単P-1.pdf KoKa.js
class KoKa {
constructor() { }
getInfo() {
return {
id: 'koka',
name: 'KoKa',
blocks: [
{
opcode: 'power',
blockType: Scratch.BlockType.REPORTER,
text: '[X]の[N]乗',
arguments: {
X: {
type: Scratch.ArgumentType.NUMBER,
defaultValue: '2'
},
N: {
type: Scratch.ArgumentType.NUMBER,
defaultValue: '3'
}
}
}
]
}
}
power(args) {
return Math.pow(args.X, args.N);
}
}
Scratch.extensions.register(new KoKa());
https://scrapbox.io/api/code/nishio/ScratchExtensionCode/KoKa.js