提供: Japanese Scratch-Wiki

(英語版からの翻訳:内容的にクローンの応用とかぶっている気もしますが、とりあえず。)
 
(少し表現を整理しました。)
1行目: 1行目:
特定のクローンの情報 (プロパティ) を外部から取得したい場合は、[[リスト]]とローカル[[変数]]を利用する。ローカル変数 (「このスプライトのみ」をチェックして作成した変数) の値は、そのクローン以外のスプライトやクローンから見ることができないため、スプライト側からクローンのもつ値を知るには、クローン側でリストに情報を格納して、スプライトに対し情報を公開する必要があるからだ。
+
特定のクローンの情報 (プロパティ) を外部から取得したい場合は、[[リスト]]とローカル[[変数]]を利用する。ローカル変数 (「このスプライトのみ」をチェックして作成した変数) の値は、そのクローン以外のスプライトやクローンから見ることができない。そのため、このような外部からクローンのもつ値を知るには、クローン側で情報をリストに格納して、外部に対し情報を公開する必要がある。
  
ここで紹介するスクリプトでは、次の内容を前提としている:
+
この例では、次の内容を前提としている:
 
* <sb>(クローンの総数)</sb> {{-}} 作成済みのクローンの数を記録するグローバル変数 (「すべてのスプライト用」をチェックした変数)
 
* <sb>(クローンの総数)</sb> {{-}} 作成済みのクローンの数を記録するグローバル変数 (「すべてのスプライト用」をチェックした変数)
* <sb>(クローンID)</sb> {{-}} クローンの作成順につけるクローンの識別情報。ローカル変数 (「このスプライトのみ」をチェックした変数)。
+
* <sb>(クローンID)</sb> {{-}} クローンの作成順につけるクローンのID情報。ローカル変数 (「このスプライトのみ」をチェックした変数)。
* <sb>(各クローンのデータ::list)</sb> {{-}} それぞれのクローンに持たせる値を管理するためのリスト
+
* <sb>(各クローンのデータ::list)</sb> {{-}} クローンごとに異なる値を管理するためのリスト
 
* '''スプライト1''' {{-}} クローンの作成元となるスプライト
 
* '''スプライト1''' {{-}} クローンの作成元となるスプライト
  
22行目: 22行目:
 
[自分自身 v] のクローンを作る</scratchblocks>
 
[自分自身 v] のクローンを作る</scratchblocks>
  
クローンに持たせたいデータが文字列や数値であれば、次のスクリプトをスプライト1に追加する:
+
クローンに持たせるデータが文字列や数値であれば、次のスクリプトをスプライト1に追加する:
  
 
<scratchblocks>
 
<scratchblocks>

2017年8月7日 (月) 23:05時点における版

特定のクローンの情報 (プロパティ) を外部から取得したい場合は、リストとローカル変数を利用する。ローカル変数 (「このスプライトのみ」をチェックして作成した変数) の値は、そのクローン以外のスプライトやクローンから見ることができない。そのため、このような外部からクローンのもつ値を知るには、クローン側で情報をリストに格納して、外部に対し情報を公開する必要がある。

この例では、次の内容を前提としている:

  • (クローンの総数) — 作成済みのクローンの数を記録するグローバル変数 (「すべてのスプライト用」をチェックした変数)
  • (クローンID) — クローンの作成順につけるクローンのID情報。ローカル変数 (「このスプライトのみ」をチェックした変数)。
  • (各クローンのデータ::list) — クローンごとに異なる値を管理するためのリスト
  • スプライト1 — クローンの作成元となるスプライト

次のスクリプトは、スプライト1に記述する:

@ がクリックされたとき
[すべて v] 番目を [各クローンのデータ v] から削除する
[クローンの総数 v] を (0) にする

このスプライト1のクローンを作成するために、次のスクリプトをスプライト1に追加する:

[] を [各クローンのデータ v] に追加する
[クローンの総数 v] を (1) ずつ変える
[自分自身 v] のクローンを作る

クローンに持たせるデータが文字列や数値であれば、次のスクリプトをスプライト1に追加する:

クローンされたとき
[クローンID v] を (クローンの総数) にする
ずっと 
(クローンID) 番目( [各クローンのデータ v] )を (. . .) で置き換える
end

これによって、((ID) 番目( [各クローンのデータ v] ) :: list) で、「ID」で指定したクローンの値が取得できるようになる。

クローンに持たせる値が真偽値 (trueまたはfalse) であれば、次のスクリプトをスプライト1に追加する:

クローンされたとき
[クローンID v] を (クローンの総数) にする
ずっと 
(クローンID) 番目( [値の総数 v] )を <...> で置き換える
end

これによって、<((ID) 番目( [各クローンのデータ v] ) :: list) = [true]>で、「ID」で指定したクローンのもつ真偽が取得できるようになる。

関連項目