提供:Japanese Scratch-Wiki

このきじは ひらがなでよめません。ごめんなさい。編集者向け:作成する

ターゲット(英: Target)は、Scratchのスクリプトを実行できるオブジェクトの内部名である。

特徴

Scratchの仮想マシン(Scratch VM)では、名前、コスチューム(ステージの場合は背景)、ブロックを共有するオブジェクト(ステージを含む)を「スプライト」と呼び、スクリプトを実行し、変数を有するオブジェクトを「ターゲット」と呼ぶ。ターゲットと(広義の、ステージを含む)スプライトは多対一である: 一つのスプライトは、一以上のターゲットから成る。スプライトを実装するコード上では、あるスプライトに関連付けられたターゲットは、(実際にクローンであるかにかかわらず)「クローン」と呼ばれている。混乱を避けるため、この記事ではこの意味でのターゲットを「広義のクローン」、制御ブロックで生成されるターゲットを「狭義のクローン」という。

ターゲットには名前がない。(スプライトには名前があるが、これだけではターゲットを特定できない。)そのため、ターゲットはランダムに生成されたIDで識別される。

ターゲットは、ブロックの実行と変数の管理を行うだけで、理論上は電子機器などでもよい: しかし、実際のScratchで実装されているターゲットは、「描画されたターゲット」(RenderedTarget)のみである。このため、「ターゲット」というと、ほとんどの場合描画されたターゲットを指す。描画されたターゲットは、座標等の属性を有する。

「ターゲット」の語の使用

「ターゲット」の語は、様々な場所で、仮想マシンのコード内での定義とは異なる意味で利用されている。

シリアライザー

プロジェクトの読み込み(デシリアライザー)と書き込み(シリアライザー)では、ターゲットは、広義のスプライトと同義で利用される。これは、狭義のクローンであるターゲットは、プロジェクト内に書き込まれないためである。そのため、project.jsonファイルの、スプライトを列挙する配列は、targetsと呼ばれる。

UI

Scratchのユーザーインターフェースを定めるScratch GUIでは、「ターゲットペイン」(TargetPane)が定義されている。これは、仮想マシンの用語では「広義のスプライトのペイン」であり、実際にスプライトペインと呼ばれている。ターゲットペインは、スプライトを選択するスプライトセレクターとステージを選択するステージセレクターを含む。

アクセス方法

Scratchの仮想マシンでは、ターゲットの一覧は以下の二つの配列によりアクセスできる:

  • Runtime.targets - ターゲットが追加順に並べられている。多くの場合、ステージが配列の最初のターゲットである。
  • Runtime.executableTargets - ターゲットが実行の逆順に並べられている。ステージのターゲットは必ず配列の最初にある。これは、ターゲットのレイヤーの逆順と一致している。(つまり、一番下にあるターゲット - つまりステージのターゲットから、一番上のターゲットの順、ということである。)

また、以下の関数によりターゲットを取得できる:

  • Runtime.getTargetById - ターゲットをIDで取得する。
  • Runtime.getSpriteTargetByName - 渡される名前で識別されるスプライトに結びつけられた、狭義のクローンではないターゲットを取得する。(つまり、スプライトの「オリジナル」のターゲットのこと。)
  • Runtime.getTargetByDrawableId - レンダリングエンジンにて使用される「Drawable ID」で取得する。
  • Runtime.getTargetForStage - ステージのターゲットを取得する。ステージは狭義のクローンを作成できないため、ステージのターゲットは常に最大で一個である。

さらに、ターゲットはさまざまなオブジェクトのtarget属性で取得できる。たとえば、Threadオブジェクトのtarget属性には、そのスレッドの実行に用いられるターゲットが格納されている。

ターゲットの属性

ターゲットには、以下の属性がある:

  • ID - ランダムに生成された、ターゲットを一意に識別する文字列。
  • 変数 - このターゲットが保有する変数。「すべてのスプライト用」(グローバル)変数は、ステージのターゲットの変数として管理される。それ以外は、ターゲットごとに管理される。このため、UI上で「このスプライトのみ」とある変数は、実際は「このターゲットのみ」の変数である。
  • リスト - 同様。
  • メッセージ - 内部では、メッセージはステージのターゲットのみが保有できる、変数の一種として扱われている。
  • コメント - ブロックはスプライトで管理されているが、コメントはターゲットが管理している。
  • カスタムステータス(_customState) - ターゲットが持つ様々な属性で、通常ブロックのみが利用する。音の効果ペンの状態などが保管されている。この値は永続的に保存されない: プロジェクトを保存して再読み込みすると失われる。読み込みにはTarget.getCustomState、書き込みにはTarget.setCustomState関数を利用する。

描画されたターゲットには、加えて以下の属性がある:

  • スプライト - このターゲットに結びつけられているスプライト。
  • Drawable ID - レンダリングエンジンにてターゲット等の「描画できるもの」を識別する数値。
  • 画像効果
  • 「オリジナルかどうか」(isOriginal) - このターゲットが狭義のクローンでないか。
  • このターゲットがステージのターゲットか。(isStage)
  • x座標y座標
  • 向き
  • ドラッグ可能かどうか。
  • 表示されているかどうか。
  • 大きさ
  • 現在のコスチューム番号 - コスチューム自体はスプライトが管理している。
  • 回転方法
  • 音量
  • テンポ - 全ターゲットに適用されるため、ステージのターゲットで一元的に管理されている。
  • ビデオの透明度 - 全ターゲットに適用されるため、ステージのターゲットで一元的に管理されている。
  • ビデオの状態 - 全ターゲットに適用されるため、ステージのターゲットで一元的に管理されている。
  • 音声合成拡張機能言語

ターゲットの選択

ターゲットは、エディター内のステージ上にある表示をダブルクリックして選択できる。この場合、スプライトペインを利用した場合と異なり、狭義のクローンも選択できる。選択した状態でコードペインからブロックを実行すると、そのターゲットにより実行される。

関連項目