Discuss Scratch

inoking
Scratcher
1000+ posts

Scratch2.0をModする会

x, y 座標の変換にてついてMODしてみました。
提案反対派の私がするのもナンですが。。。

結論から言うと難しいです。完全にはできませんでした。
内部的には変換できましたが見た目が変わりません。
変換後のブロックをクリックすると変換後の座標値が表示されるので内部的には変換できていることは確認できます。
表示言語を選択し直すか、プロジェクトを開き直すかすると表示も切り替わります。

見た目が変わらないのは、
相互変換に使用する共通処理が「表示のための変換処理」が不要な加減乗除や等号不等号だけに対して実装されているからです。


変更箇所:
src/scratch/BlockMenus.as:
public class BlockMenus implements DragClient {
...
private static const basicMathOps:Array = ['+', '-', '*', '/'];
private static const comparisonOps:Array = ['<', '=', '>'];
private static const positionOps:Array = ['xpos', 'ypos']; // 追加
...

public static function BlockMenuHandler(evt:MouseEvent, block:Block, blockArg:BlockArg = null, menuName:String = null):void {
...
if ((basicMathOps.indexOf(op)) > -1) { menuHandler.changeOpMenu(evt, basicMathOps); return; }
if ((comparisonOps.indexOf(op)) > -1) { menuHandler.changeOpMenu(evt, comparisonOps); return; }
if ((positionOps.indexOf(op)) > -1) { menuHandler.changeOpMenu(evt, positionOps); return; } // 追加
...

見た目が変わらない原因となっている処理:
blocks/Block.as:
public function changeOperator(newOp:String):void {
// Used to switch among a family of related operators (e.g. +, -, *, and /).
// Note: This does not deal with translation, so it only works for symbolic operators.
for each (var item:* in labelsAndArgs) {
if ((item is TextField) && (item.text == op)) item.text = newOp;
}
op = newOp;
opFunction = null;
fixArgLayout();
}

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
MMGISS_sub
Scratcher
43 posts

Scratch2.0をModする会

inoking wrote:

MMGISS_sub wrote:

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

Scratch2.0をModする会

inoking wrote:

x, y 座標の変換にてついてMODしてみました。
(略)
見た目が変わらないのは、
相互変換に使用する共通処理が「表示のための変換処理」が不要な加減乗除や等号不等号だけに対して実装されているからです。

(略)
見た目が変わらない原因となっている処理:

blocks/Block.as:
public function changeOperator(newOp:String):void {
// Used to switch among a family of related operators (e.g. +, -, *, and /).
// Note: This does not deal with translation, so it only works for symbolic operators.
for each (var item:* in labelsAndArgs) {
if ((item is TextField) && (item.text == op)) item.text = newOp;
}
op = newOp;
opFunction = null;
fixArgLayout();
}
そうですね…
同じようにしてandとorの相互変換も試して見ていたのですが
これじゃあ難しいですね…
このScratchのソースにちょこっと追加して色々するだけでは相互変換は無理かもしれません
何とかして実現させたいものですが..
inoking
Scratcher
1000+ posts

Scratch2.0をModする会

今回MODしてみて、以前やったときと少し環境設定手順が変わっていたので
https://scratch.mit.edu/discuss/post/2088193/ のポストを更新しました。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
rapitan
Scratcher
100+ posts

Scratch2.0をModする会

-削除しました-

Last edited by rapitan (Sept. 7, 2019 11:47:26)


一定期間より前の活動はネットについてあまり知らなかった時の活動です…温かい目で見ていただけると幸いです…



rapitanです。 稀に活動しています。
inoking
Scratcher
1000+ posts

Scratch2.0をModする会

60FPSとかにすると結構おもしろいです。
ターボモードのように速くなります。
もちろん元々間に合っていない処理は速くなりません。

src/Scratch.as:
stage.frameRate = 30; // 60 にする

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
inoking
Scratcher
1000+ posts

Scratch2.0をModする会

MODした Scratch.swf でオリジナルを置き換えると、
メニューからロゴや Tips, About が消え
コスチューム等の素材データ (media フォルダ等に格納) にもアクセスできなくなります。
ソースを検索してもそれらしいところは見つからなかったのですが
何か情報お持ちの方はいませんか?

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
apple502j
Scratcher
1000+ posts

Scratch2.0をModする会

Last edited by apple502j (July 28, 2017 02:23:55)


署名は、ディスカッションフォーラムの機能である。署名は、その人のすべての投稿の下部に追加される。署名は、BBCodeで記述できる。 署名を追加/変更/削除したい場合は、ディスカッションフォーラムのホームの一番下に行き、「Change your signature」を押す。署名の大きさは150pxまでである。これには、改行、画像を含む。- Japanese Scratch-Wiki 「署名
inoking
Scratcher
1000+ posts

Scratch2.0をModする会

apple502j wrote:

ソースコードの情報は公開しないほうがいいです。
すみません、これはどういう意味でしょうか?

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
apple502j
Scratcher
1000+ posts

Scratch2.0をModする会

Last edited by apple502j (July 28, 2017 02:23:46)


署名は、ディスカッションフォーラムの機能である。署名は、その人のすべての投稿の下部に追加される。署名は、BBCodeで記述できる。 署名を追加/変更/削除したい場合は、ディスカッションフォーラムのホームの一番下に行き、「Change your signature」を押す。署名の大きさは150pxまでである。これには、改行、画像を含む。- Japanese Scratch-Wiki 「署名
inoking
Scratcher
1000+ posts

Scratch2.0をModする会

apple502j wrote:

inoking wrote:

apple502j wrote:

ソースコードの情報は公開しないほうがいいです。
すみません、これはどういう意味でしょうか?
公開すると、そこを編集してmod版を本サイトにupするなどの不正が行われるかもしれないからです
MOD全般の話をされていますか?

ソースの情報を公開しないと自分で試すこともできませんし
本サイトにアップしようとしても本流には反映できないので問題ないと思います。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
abee
Scratcher
1000+ posts

Scratch2.0をModする会

Scratchのソースをmodした場合、必ずそのソースを公開しなければなりません。
これはライセンス(GPL v2)で決まっています。これはScratchのリスペクトしてリミックスするという考えと基本的に同じです。
https://github.com/LLK/scratch-flash/blob/develop/COPYING
ソースを公開するから悪用されるのではなく、みんながソースを知っていることにより、なにかあったときに対策でき、悪用を防げるのです。
本サイトに直接modをアップすることはできず、pull requestされたソースは、慎重に審査されて本体に取り込まれるかどうかが決まります。
inoking
Scratcher
1000+ posts

Scratch2.0をModする会

abee wrote:

Scratchのソースをmodした場合、必ずそのソースを公開しなければなりません。
ちなみに
これは改変したものを頒布する場合の話で、個人的に改変しているだけの場合には該当しませんよね。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
abee
Scratcher
1000+ posts

Scratch2.0をModする会

その通りです。リミックスして公開しない場合と同じです。

Last edited by abee (July 27, 2017 23:45:24)

inoking
Scratcher
1000+ posts

Scratch2.0をModする会

「Scratch 2.0オフラインエディター」の exe のソースは
https://github.com/LLK には見当たらなかったのですが公開されてないのでしょうか?

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
MMGISS
Scratcher
1000+ posts

Scratch2.0をModする会

https://scratch.mit.edu/discuss/post/2750402/(Scratch2.0の提案)で投稿したものです。



ペンの状態を返すブロックを追加してほしいという提案があったのでModして作ってみたものです。

src/primitives/MotionAndPenPrims.as

		primTable["getPenHue"] = function():* { return interp.targetSprite().penHue };
primTable["getPenShade"] = function():* { return interp.targetSprite().penShade };
primTable["getPenSize"] = function():* { return interp.targetSprite().penWidth };
primTable["getPenState"] = function():* { return interp.targetSprite().penIsDown };
src/specs.as

		["pen color",										"r", 4, "getPenHue"],
["pen shade", "r", 4, "getPenShade"],
["pen size", "r", 4, "getPenSize"],
["-"],
["is pen down?", "b", 4, "getPenState"],
今回はただ値を返すだけだったので非常に簡単でした。Modやったことない人にもオススメです。

apple502j
Scratcher
1000+ posts

Scratch2.0をModする会

三項演算子をつくってみました。空,false,0では後の値が、でなければ前の値が返ります。
演算ブロックに if () then else が追加されます。
Specs.as 348:
["if %n then %s else %s",               "r", 8, "ifThenString",         "",""],

Primitives.as 71:
primTable["ifThenString"] = function(b:*):*{return ""+(interp.arg(b,0)?interp.arg(b,1):interp.arg(b,2))};


署名は、ディスカッションフォーラムの機能である。署名は、その人のすべての投稿の下部に追加される。署名は、BBCodeで記述できる。 署名を追加/変更/削除したい場合は、ディスカッションフォーラムのホームの一番下に行き、「Change your signature」を押す。署名の大きさは150pxまでである。これには、改行、画像を含む。- Japanese Scratch-Wiki 「署名
MMGISS
Scratcher
1000+ posts

Scratch2.0をModする会

apple502j wrote:

Specs.as 348:
["if %n then %s else %s",               "r", 8, "ifThenString",         "",""],
そのコードは
["if %n then %s else %s",               "r", 8, "if:then:else:",         1,"A","B"],
とすることで初期値の設定ができますよ!
また、他のブロックの慣例に従うと、関数名はif:then:else:とやった方がいいかもしれませんね

Last edited by MMGISS (July 30, 2017 03:33:33)

inoking
Scratcher
1000+ posts

Scratch2.0をModする会

apple502j wrote:

三項演算子をつくってみました。空,false,0では後の値が、でなければ前の値が返ります。
演算ブロックに if () then else が追加されます。
いいですね
これがあれば
(<[a] > [b]> * (10)) 歩動かす
のような隠し?テクニックも不要となります。
scratch2.0の提案 に入れたいですね。

なお、最初の引数は真偽値のほうがよいと思います。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
apple502j
Scratcher
1000+ posts

Scratch2.0をModする会

ターボモード・ブロック
BlockMenus.as 104:
		if (menuName == 'onOff') menuHandler.onOffMenu(evt);
BlockMenus.as 113:
		    handler.onOffMenu(evt);
BlockMenus.as 513:
    private function onOffMenu(evt:MouseEvent):void{
        var m:Menu = new Menu(setBlockArg,'onOff');
        m.addItem('off');
        m.addItem('on');
        showMenu(m);
     }
Interpreter.as 463:
		primTable["isTurboMode"]        = function(b:*):*{return turboMode};
		primTable["setTurboMode"]       = function(b:*):*{turboMode = ('on' == arg(b,0));app.refreshScreen();};
Specs.as 254:
		["turbo mode?",                         "b", 6, "isTurboMode"],
		["set turbo mode to %m.onOff",          " ", 6, "setTurboMode","on"],
Specs.as 271:
		["turbo mode?",                         "b", 106, "isTurboMode"],
		["set turbo mode to %m.onOff",          " ", 106, "setTurboMode","on"],
Scratch.as 1251:
    public function refreshScreen():void{stagePart.refresh();}

新しい引数のメニューを定義したり、関数を他ファイルから呼び出すために関数を作成したりといろいろ行っていますが、なんとか成功しています。

Last edited by apple502j (July 30, 2017 04:23:15)


署名は、ディスカッションフォーラムの機能である。署名は、その人のすべての投稿の下部に追加される。署名は、BBCodeで記述できる。 署名を追加/変更/削除したい場合は、ディスカッションフォーラムのホームの一番下に行き、「Change your signature」を押す。署名の大きさは150pxまでである。これには、改行、画像を含む。- Japanese Scratch-Wiki 「署名

Powered by DjangoBB