hhayyatto

これはどうでしょう。
[リスト1v] の(1)番目を[リスト2v]の(1)番目と入れ替える]

masa2004

hhayyatto wrote:

これはどうでしょう。
[リスト1v] の(1)番目を[リスト2v]の(1)番目と入れ替える]
(1 v) 番目 [リスト1 v] を ((1 v) 番目( [リスト2 v] ) :: list) で置き換える::list
これの事ですね。

CommandSlash017

masa2004 wrote:

hhayyatto wrote:

これはどうでしょう。
[リスト1v] の(1)番目を[リスト2v]の(1)番目と入れ替える]
(1 v) 番目 [リスト1 v] を ((1 v) 番目( [リスト2 v] ) :: list) で置き換える::list
これの事ですね。
いや、
[SaveData v] を ((1 v) 番目( [list1 v] ) :: list) にする
(1 v) 番目( [list1 v] )を ((1 v) 番目( [list2 v])) で置き換える
(1 v) 番目( [list2 v] )を (SaveData) で置き換える

assc

MMGISS wrote:


スクラッチで自分のブロックを作る

ここではScratch2.0をModします。
簡単に言えば自分のブロックを作れるんです。
もし間違いがあれば言ってください

Scratchの内部では ActionScript が使われています。まあこれをすでに覚えてれば敵なしですね。

ソースコードを手にいれる
  1. まずgitをインストール。
  2. 以下のコマンドを実行。
    git clone https://github.com/LLK/scratch-flash

    Scratchをコンパイルする

  3. ターミナルを開く。
  4. ディレクトリをスクラッチのソースを含む場所にする。
    cd <path to source code>
    (例)desktop/Scratch/Modding/scratch-flash-developなら
    cd desktop
    cd Scratch
    cd modding
    cd scratch-flash-develop
    と打つ
  5. 以下の文を実行する。
    Unix-like OSを使ってるなら
    ./gradlew build
    Windowsなら
    gradlew.bat build
  6. 全部できたら、Scratchがbuild/11.6/Scratch.swfを見つけてくれます。

参照:https://scratch.mit.edu/discuss/post/324190/
英語版の古い方法リンクはどこに繋がってますか?

Postino

takutok wrote:

バンドルした exe は adt コマンドで作れますよ。
そんなに難しくないです。
adtについてアレコレ調べながら試してみているのですが、どうもうまくいきません……。

エラーメッセージとして
Descriptor cannot be parsedScratch.swf: error 100: Descriptor cannot be parsed
が表示されるので、アプリケーション記述子あたりが怪しいと思ってはいるんですが、そこで詰まってしまっています。
application.xmlを自作する必要があるんでしょうか。
それとも、Scratch 2\META-INF\AIR\application.xmlあたりをモニョモニョするんでしょうか。

takutok

Postino wrote:

takutok wrote:

バンドルした exe は adt コマンドで作れますよ。
そんなに難しくないです。
adtについてアレコレ調べながら試してみているのですが、どうもうまくいきません……。

エラーメッセージとして
Descriptor cannot be parsedScratch.swf: error 100: Descriptor cannot be parsed
が表示されるので、アプリケーション記述子あたりが怪しいと思ってはいるんですが、そこで詰まってしまっています。
application.xmlを自作する必要があるんでしょうか。
それとも、Scratch 2\META-INF\AIR\application.xmlあたりをモニョモニョするんでしょうか。

エラーはおそらく application.xml の指定が間違っているか、xml の記述が間違っています。
オフライン版に元からある applicartion.xml をそのまま流用できます。
ただAir SDKのバージョンによっては application xmlns のバージョンを変更しないとxmlのエラーになった覚えがあります。

Postino

takutok wrote:

エラーはおそらく application.xml の指定が間違っているか、xml の記述が間違っています。
オフライン版に元からある applicartion.xml をそのまま流用できます。
ただAir SDKのバージョンによっては application xmlns のバージョンを変更しないとxmlのエラーになった覚えがあります。

ありがとうございます! 無事にAIRバンドル版のScratch 2.exeができました。
これでやっとAIRインストールを許可してくれない&オフラインな教室でも使える……

CommandSlash017

Git入れたばかりで何も分かっていないです。Git bashでGitHubからコードを入手するまではうまくいった(と思う)のですが、ビルドの仕方が分かりません。My browser / operating system: Windows NT 10.0 です。

abee

この説明でどうでしょう。
https://scratch.mit.edu/discuss/topic/207737/?page=1#post-2088193

abee

分かりやすい記事がありました。

スクラッチのModding環境をつくろう : ロジックラボ for kids
Scratch Moddingで新しいブロックを作ろう : ロジックラボ for kids

MMGISS

abee wrote:

分かりやすい記事がありました。

スクラッチのModding環境をつくろう : ロジックラボ for kids
Scratch Moddingで新しいブロックを作ろう : ロジックラボ for kids
すごい!初めて BUILD SUCCESSFUL が出ました!

しかしダメです!全然Scratch.swfに反映されません!
そもそもどうやったら反映できるんですか?
どなたかビルドできた人お願いします…

MMGISS_sub

MMGISS wrote:

abee wrote:

分かりやすい記事がありました。

スクラッチのModding環境をつくろう : ロジックラボ for kids
Scratch Moddingで新しいブロックを作ろう : ロジックラボ for kids
すごい!初めて BUILD SUCCESSFUL が出ました!

しかしダメです!全然Scratch.swfに反映されません!
そもそもどうやったら反映できるんですか?
どなたかビルドできた人お願いします…
おおおおお!できました!!
Scratch Moddingで新しいブロックを作ろうの記事にはありませんでしたが、
ビルドして動作確認しようの項目にはまずbuild.gradlewでScratchをビルドする必要があるのですね
これでついに私にもできました!!ありがとうございます!

ちなみにbuild.gradlewのビルドはatomでも可能です!

MMGISS_sub

今回は記事を参考に
join %s %s %s ブロックと
あったらいいなみたいな感じで carriage return ブロックを作ってみました

きちんと動作します。
ActionScriptのソースがわかりやすいので初心者にもオススメです!

abee

すばらしい。
もし、気が向いたら、「scratch2.0の提案」で話題になっているいくつかの機能を実装してみるのはいかがでしょう。
たとえば、右クリックメニューでx座標とy座標を入れ替えるとか。

apple502j

「コンストラクタ関数がクラス ZipIO に指定されていません。」はどうすればいいでしょうか。
My browser / operating system: Windows 7, Firefox 54.0, Flash 26.0 (release 0)

MMGISS_sub

右クリックして出るメニューはどのファイルにあるのでしょうか?
ShiftMenuで検索しても何にも出なくて…orz

inoking

MMGISS_sub wrote:

右クリックして出るメニューはどのファイルにあるのでしょうか?
ShiftMenuで検索しても何にも出なくて…orz
src/scratch/BlockMenus.as ではないでしょうか。

MMGISS_sub

inoking wrote:

MMGISS_sub wrote:

右クリックして出るメニューはどのファイルにあるのでしょうか?
ShiftMenuで検索しても何にも出なくて…orz
src/scratch/BlockMenus.as ではないでしょうか。
みつけました!ありがとうございます!
なんとかして作ってみます!

MMGISS_sub

なんだかんだ言って本当に相互変換の仕組みがわかんなかったので今までずっと欲しかったやつ作ってみました。

配列を指定した文字でつなげて文字列型で返すやつです。


こんなこともできちゃいます。
いままで配列全体を文字列型で参照するものといえば、
(list :: list)
これしかなく、また要素をつなげる文字も半角スペースで固定されてました。
これを使えば簡単に配列を取得でき、後者のように買い物リストも簡単に作れます。
もしかしたら、運営に提案してみる価値があるかもしれません。

ちなみにソースはこちらです。
src/Specs.as

src/primitives/ListPrims.as


src/scratch/ScratchObj.as

関数名よくわかんなかったんで適当です許してください
["connect %m.list by %s",								"r", 12, "getList:with:"],
primTable['getList:with:'] = primListWith;
private function primListWith(b:Block):String {
var list:ListWatcher = listarg(b, 0);
if (!list) return '';
return list.contents.join( interp.arg(b, 1) || '' );
}
if ('getList:with:' == op) return [defaultListName(), ',']

inoking

MMGISS_sub wrote:

~略~
いままで配列全体を文字列型で参照するものといえば、
(list :: list)
これしかなく、また要素をつなげる文字も半角スペースで固定されてました。
~略~
本筋でなくてすみません。
どうやると半角スペースで結合できますか?
変数にリストを代入してみたところ間に何も入らずそのままつながりました。