Discuss Scratch

sohtamei
New Scratcher
16 posts

Scratch 3.0 の拡張機能について話すトピック

このスレッドの内容をまとめさせて頂きました。
「Scratch3.0で独自extensionを使ったサンプルプログラムをリンククリックで開く方法」
https://github.com/sohtamei/docs/blob/master/Scratch3.0LinkToSample.md
akku--n11
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

yukumom wrote:

penで塗りつぶしってできるんですか?]
定義 塗りつぶす
ペンを上げる
x座標を (0) 、y座標を (0) にする
ペンの太さを (1000) にする
ペンを下ろす
ペンを上げる
ioio3
Scratcher
26 posts

Scratch 3.0 の拡張機能について話すトピック

yu-tatta wrote:

「Makey Makey」の
when [スペース v] key pressed ::pen
と「イベント」にある
[スペース v] キーが押されたとき
の違いってなんですか?
⚑ がクリックされたとき
ずっと
もし <[スペース v] キーが押された> なら

end
end

を簡略化したものです
yukku
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

既に解決している質問に答える必要はありません。
gdpre2ed98464a95c004773f44d7
Scratcher
100+ posts

Scratch 3.0 の拡張機能について話すトピック

噂ですが、デンソーウェブが、QRコード認証を拡張機能として追加する予定と聞いたことがあるのですが、本当でしょうか?
abee
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

その情報源はどこですか。
akku--n11
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

stretchのことではないでしょうか。
元サイトはscratch(?)です。
abee
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

そうかもしれませんが、私たちが想像しても、本人に聞かない限り分かりません。
少なくとも、Stretch3に入っているQRコードは、デンソーウェーブではなく、sugiura-labが開発したものです。これが公式の拡張機能に入る予定はありません。
また、Stretch3の移転前のサイトはScratchの公式サイトとは関係ありません。
intelyuza5
Scratcher
12 posts

Scratch 3.0 の拡張機能について話すトピック

定義 
定義
Es-2
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

#49
定義ブロックは拡張機能ではありません。
takoyariika
Scratcher
48 posts

Scratch 3.0 の拡張機能について話すトピック

自作拡張機能について質問なんですが
下記のコードを拡張機能として動かした際になぜかブロックが追加されませんでした。

argumentsの部分がないバージョンは動いたので多分そこらへんが悪さしてるとは思いましたが、
いくら調べてもどこがおかしいかわからないので詳しい方は教えてください。

ちなみにe羊icquesで実行した場合、コンソールに

sheeptester.github.io/:1 Uncaught (in promise) DOMException: Failed to execute ‘importScripts’ on ‘WorkerGlobalScope’: The script at ‘ローカルサーバー上のJSファイルのURL’ failed to load.


と出ます。


class Test {

constructor() {}

getInfo() { // 拡張機能の各種情報
return {
id: ‘test’,
name: ‘Test’, // 拡張機能の名前
blocks: [ // 各ブロックの定義
{
opcode: ‘hello’, // このブロックが実行されると、helloという関数が呼ばれる
blockType: Scratch.BlockType.COMMAND, // 「10歩動かす」のような通常の命令ブロック
text: ‘log ’,
arguments: {
TEXT: {
type: ArgumentType.STRING,
defaultValue: “hello”
}
}
}
],
menus: {
}
};
}

hello() {
console.log('hello'); // console log に hello と出力
}
}

Scratch.extensions.register(new Test());
abee
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

以下のように書き換えて、e羊icquesで実行できました。
プログラムを載せるときはcodeタグを使うことをお勧めします。
class Test {
  constructor() {}
  getInfo() {
    return {
      id: 'test',
      name: 'Test',
      blocks: [
          {
          opcode: 'hello', 
          blockType: Scratch.BlockType.COMMAND,
          text: 'log',
          arguments: {
            TEXT: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: 'hello'
               },
             }
           }
        ]
     }
  }
  hello(args) {
    console.log('hello');
  }
}
Scratch.extensions.register(new Test());
takoyariika
Scratcher
48 posts

Scratch 3.0 の拡張機能について話すトピック

abee wrote:

以下のように書き換えて、e羊icquesで実行できました。
プログラムを載せるときはcodeタグを使うことをお勧めします。
class Test {
  constructor() {}
  getInfo() {
    return {
      id: 'test',
      name: 'Test',
      blocks: [
          {
          opcode: 'hello', 
          blockType: Scratch.BlockType.COMMAND,
          text: 'log',
          arguments: {
            TEXT: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: 'hello'
               },
             }
           }
        ]
     }
  }
  hello(args) {
    console.log('hello');
  }
}
Scratch.extensions.register(new Test());

ありがとうございました!
実行できました!
takoyariika
Scratcher
48 posts

Scratch 3.0 の拡張機能について話すトピック

以下のコードを書いてブロックを組み合わせたのですがうまくいきませんでした。
どうしたら想定した挙動になりますか?
僕が思うにはscratchの拡張機能だとグローバル変数にしてもほかのブロックとの共有がうまくいってなかったので
ちゃんと動かなかったんだと思いました。
他のブロックと変数を共有する方法が分かれば多分動くようになると思いました。


想定した挙動
JS実行ブロックででaに1を代入する。
上のブロックで代入したaという変数を変数に入れる


⚑ がクリックされたとき
JS実行[a=1;]
[変数] を (変数[a]) にする

class jsexec {
  constructor() {}
  getInfo() {
    return {
      id: 'JSEXEC',
      name: 'JS実行',
      blocks: [
          {
          opcode: 'jikko', 
          blockType: Scratch.BlockType.COMMAND,
          text: 'JSを実行[TEXT]',
          arguments: {
            TEXT: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: 'スクリプト内容'
               },
             }
           },
           {
          opcode: 'hensu', 
          blockType: Scratch.BlockType.REPORTER,
          text: '変数[TEXT]',
          arguments: {
            TEXT: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: '変数名'
               },
             }
           }
        ]
     }
  }
  jikko(args) {
    var text =  String(args.TEXT);
    eval(text);
  }
  hensu(args) {
    var text =  String(args.TEXT);
    var kekka=0;
    eval("var kekka = parseFloat("+text+");");
    return kekka;
  }
}
Scratch.extensions.register(new jsexec());
Es-2
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

ここは「ここはScratch 3.0 で追加された「拡張機能」について話すトピック」なので、自作拡張機能についてはScratch 3.0 をハック(動作や構造を解析すること)しよう!
で投稿したほうがいいですよ。
abee
Scratcher
1000+ posts

Scratch 3.0 の拡張機能について話すトピック

#55
#1に「こんな拡張機能作ってみたいけど、どうすればいいと思いますか?」と書いてあります。
takoyariika
Scratcher
48 posts

Scratch 3.0 の拡張機能について話すトピック

globalThisで宣言した変数はちゃんと動作しました。
少し不便ですけどやりたいことはできるのでそうしました。
takoyariika
Scratcher
48 posts

Scratch 3.0 の拡張機能について話すトピック

完成した拡張機能はこうなりました。
jsの実行と変数の出力とコンソール出力の機能があります。

class jsexec {
  constructor() {}
  getInfo() {
    return {
      id: 'JSEXEC',
      name: 'JS実行',
      blocks: [
          {
          opcode: 'jikko', 
          blockType: Scratch.BlockType.COMMAND,
          text: 'JSを実行[TEXT]',
          arguments: {
            TEXT: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: 'スクリプト内容'
               },
             }
           },
           {
          opcode: 'hensu', 
          blockType: Scratch.BlockType.REPORTER,
          text: 'JS変数[TEXT](「globalThis.」で宣言した変数のみ)',
          arguments: {
            TEXT: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: '変数名'
               },
             }
           },
           {
          opcode: 'gurobaru', 
          blockType: Scratch.BlockType.REPORTER,
          text: 'コピペ用[TEXT]',
          arguments: {
            TEXT: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: 'globalThis.'
               },
             }
           },
           {
          opcode: 'konsoru', 
          blockType: Scratch.BlockType.COMMAND,
          text: 'コンソール出力[TEXT]',
          arguments: {
            TEXT: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: '出力したい言葉'
               },
             }
           }
        ]
     }
  }
  jikko(args) {
    var text =  String(args.TEXT);
    eval(text);
  }
  hensu(args) {
    var text =  String(args.TEXT);
    var kekka=0;
    eval("kekka = "+text+";");
    return kekka;
  }
  gurobaru(args) {
    return 0;
  }
  konsoru(args) {
    var text =  String(args.TEXT);
    console.log(text);
  }
}
Scratch.extensions.register(new jsexec());
taji-pg
Scratcher
62 posts

Scratch 3.0 の拡張機能について話すトピック

最近LEGO社が新しく「LEGO spike」というレゴブロックで作ったロボットを動かすキットを作りましたが、EV3やBOOST、LEGOwedoの拡張機能までも追加してるからLEGOspikeの拡張機能も追加してほしいです。
3659662244
Scratcher
100+ posts

Scratch 3.0 の拡張機能について話すトピック

質問失礼します。ここは拡張機能などで増えて欲しいものは投稿しない方が良いのですか?

Powered by DjangoBB