提供:Japanese Scratch-Wiki
ペンはScratchによういされているきのうの1つで、スプライトをつかってがめんのうえにかたちをかいたり、ピクセルたんいでカラフルなせんをひいたりできます。このきのうをつかうときは、ペン拡張機能をつかいます。
まっすぐなせん、てん、しかくけい、まるなどかんたんにかけるかたちのほか、けいさんなどをじょうずにつかえば、どんなかたちでもかくことができます。
ペンにかかわるブロック
- 詳細は「ペン拡張機能」を参照
ぜんぶけす::pen
—がめんのうえにペンでかかれたないようをすべてけします。ペンを下ろす::pen
— スプライトのペンきのうをオンにします。これによって、スプライトががめんのうえをうごいたとき、うごいたみちすじにペンによるせんがかかれるようになります。これは、ペンきのうがオフになるまでつづきます。ペンを上げる::pen
— スプライトのペンきのうをオフにする。スプライトがうごいてもせんがかかれないようになります。ペンの色を (カラー) にする::pen
— ペンのいろをカラーピッカー(スポイトツール)でえらんだいろにします。ペンの () を (数値) にする::pen
— ペンのいろをかずできめます。ペンの () を () ずつ変える::pen
— ペンのいろを、いまのいろからきめたかずだけかえます。ペンの太さを () ずつ変える::pen
— ペンのふとさを、いまのふとさからきめたかずだけかえます。ペンの太さを () にする::pen
— ペンのふとさを、きめたかずにします。スタンプ::pen
— スプライトのいまのみためをステージのうえにコピーします。
Flashプレイヤーにかかわるもんだい
この項目には、最新バージョンのScratchには存在しない機能について書かれています。現在は使うことができないので、注意してください。 |
Flashプレイヤーのために、ペンのふとさがさいだい255にせいげんされています。
またFlashプレイヤーによるもんだいとしてはそのほかに、ペンのふとさを1にしたとき、たいしょうのピクセルぜんたいがえがかれないというものがあります。ピクセルのいちぶにいろがぬられていないすけたところができてしまうのです。Flashプレイヤーで1ピクセルのおおきさをきっちりただしくぬりたいときは、ペンのふとさを「2」にしなくてはいけません。
なお、このバグをつかってわざとうしろがすけてみえるかたちをかくこともできます。ただし、ターボモードでもピクセルたんいでかたちをかくのにはじかんがかかるため、すけてみえるかたちがつかいたいだけであれば、ゆうれいの画像効果をつかったほうがよいです。
どんなところにつかわれているか
ペンは、おもにつぎのようなもくてきでつかわれます:
- ヘビゲームタイプのゲーム
- スプライトのうごいたあとをみせること
- アニメーション
- 1S1Sプロジェクトでかたちをえがくこと
- もようをえがくこと
- グラフをつくること
- おえかきプログラムをつくること
- 3D プロジェクトでかたちをえがくこと
- PTE
とうめいペン
- 詳細は「コンピューターの色」を参照
Scratch 2.0のv435.2[1]よりあとに、とうめいペンのきのうができました。これをつかうと、したにかかれたものがすけてみえるせんをかくことができます。
Scratch 3.0では、どのくらいとうめいにするかをきめることができます。
RGB/ARGBひょうげん
ARGB (別名:RGBA) は、RGB (Red (赤)、Green (緑) 、Blue (青)) による光の三原色に、A (アルファチャンネル) による透過度を追加したいろの表現方法である。 アルファチチャンネルの値は1〜255までの数値で表され、1が完全な透明、255が完全な不透明(まったく透けない状態)を表す。 まず、アルファチャンネルを使わない場合のRGBによる色の指定方法は次のとおり:
ペンの色を ((((R) * (65536)) + ((G) * (256))) + (B)) にする // このブロックは、下のカラーボックスを指定するタイプのブロックでなければいけない(数値を入れるタイプのブロックではない)。これを間違えると、意図しない色になってしまう。 ペンの色を [#0000FF] にする
アルファチャンネルを追加したARGBによる色の指定方法は次のとおり:
ペンの色を ((((A) * (16777216)) + ((R) * (65536))) + (((G) * (256)) + (B))) にする
これらの式を使うときは、A、R、G、Bがすべて整数でなければいけない。これらに小数が含まれる場合、下位の値に影響してしまうからだ(たとえば、Rの値が小数の場合、下位の桁にあるGやBが意図しない値として扱われる)。このような間違いを防ぐには、次のコードを使用すると良いだろう。
ペンの色を (((((A) を四捨五入) * (16777216)) + (((R) を四捨五入) * (65536))) + ((((G) を四捨五入) * (256)) + ((B) を四捨五入))) にする
「画面を再描画せずに実行する」オプション
カスタムブロック定義で「画面を再描画せずに実行する」 オプションをチェックすると、ブロック内の処理がすべて終わった段階で一度だけ画面を更新されるため、処理のスピードがアップする。ペンで描画するカスタムブロックをつくるとき、描画の途中の様子を見せたい場合以外は、[オプション]を開いて、このオプションをチェックしておくとよいだろう。次に、カスタムブロックをつかってScratchのステージ上にペンで画像を描画する例を2つ示す。どちらも画像をピクセルごとの色に分解したデータを用意しておき、それを使って元の画像をペンで描画するスクリプトである。違いは、1つめのスクリプトは画像データとしてリストを、2つめのスクリプトは画像データとして文字列変数を使っている点である。
定義 画像を描画 [繰り返し番号 v] を (0) にする // 画像データリストに用意した色の中から1つずつ色を拾っていくための変数 ペンの太さを (2) にする // Flashプレイヤーのバグを避けるためペンサイズを2に x座標を (-240) 、y座標を (180) にする // 開始位置 (360) 回繰り返す // y方向の繰り返し (480) 回繰り返す // x方向の繰り返し [繰り返し番号 v] を (1) ずつ変える ペンの色を ([画像データリスト v]の(繰り返し番号) 番目:: list) にする // ペンの色を画像データリストで指定したものにする ペンを下ろす ペンを上げる x座標を (1) ずつ変える end x座標を (-240) にする // 画面の左端に戻る y座標を (-1) ずつ変える end
2つめは、文字列変数にピクセルごとの色情報を保存したものを画像データとして利用するスクリプトである。
定義 画像を描画 [繰り返し番号 v] を (0) にする // 色指定用の文字列の中から1つずつ色を拾っていくための変数 ペンの太さを (2) にする // Flashプレイヤーのバグを避けるためペンサイズを2に x座標を (-240) 、y座標を (180) にする // 開始位置 (360) 回繰り返す // y方向の繰り返し (480) 回繰り返す // x方向の繰り返し [繰り返し番号 v] を (3) ずつ変える // 3文字ずつ取り出すため、3つずつずらす (色の最大値は200なので、3文字分あればよい) [現在の色 v] を [] にする // 「画像データ」から色を取り出すための一時的な変数 [現在の色 v] を ((画像データ)の((繰り返し番号) - (2)) 番目の文字::operators) にする [現在の色 v] を ((現在の色) と ((画像データ)の((繰り返し番号) - (1)) 番目の文字::operators)) にする [現在の色 v] を ((現在の色) と ((画像データ)の((繰り返し番号) - (1)) 番目の文字::operators)) にする ペンの色を (現在の色) にする // 取り出した「現在の色」をペンの色にする ペンを下ろす ペンを上げる x座標を (1) ずつ変える end x座標を (-240) にする // 画面の左端に戻る y座標を (-1) ずつ変える end
もちろん、がぞうデータとして、Scratchのがめんピクセルのすべてのいろ(360*480=172800しょく)をふくんだリストやへんすうをよういしてもよいのですが、スクリプトをくふうすればもうすこしちいさいがぞうにして、データりょうをへらすことができます。また、うえのスクリプトをじょうずにつかえば、ユーザーがかいたえをリストにほぞんするがぞうへんしゅうソフトをつくることもできます。