独自のスタイルと変換を含む描画グループを終了します。

デフォルトでは、fill()のようなスタイルや rotate()のような変換は、 その後のすべての描画に適用されます。push()pop() 関数を使用すると、スタイルと変換の効果を特定のグループの 図形、画像、テキストに限定することができます。例えば、図形のグループを マウスに追従するように移動させても、スケッチの他の部分には影響を与えないようにできます:

// 描画グループを開始します。
push();

// 原点をマウスの位置に移動します。
translate(mouseX, mouseY);

// 顔のスタイルを設定します。
noStroke();
fill('green');

// 顔を描きます。
circle(0, 0, 60);

// 目のスタイルを設定します。
fill('white');

// 左目を描きます。
ellipse(-20, -20, 30, 20);

// 右目を描きます。
ellipse(20, -20, 30, 20);

// 描画グループを終了します。
pop();

// 虫を描きます。
let x = random(0, 100);
let y = random(0, 100);
text('🦟', x, y);

上記のコードスニペットでは、虫の位置は translate(mouseX, mouseY)の影響を受けません。なぜなら、その変換は push()pop()の間に含まれているからです。虫は 予想通りキャンバス全体を移動します。

注意:push()pop()は常にペアで呼び出されます。 両方の関数が描画グループを開始し終了するために必要です。

push()pop()はネストして サブグループを作成することもできます。例えば、上記のコードスニペットを 変更してカエルの目により詳細を加えることができます:

// 描画グループを開始します。
push();

// 原点をマウスの位置に移動します。
translate(mouseX, mouseY);

// 顔のスタイルを設定します。
noStroke();
fill('green');

// 顔を描きます。
circle(0, 0, 60);

// 目のスタイルを設定します。
fill('white');

// 左目を描きます。
push();
translate(-20, -20);
ellipse(0, 0, 30, 20);
fill('black');
circle(0, 0, 8);
pop();

// 右目を描きます。
push();
translate(20, -20);
ellipse(0, 0, 30, 20);
fill('black');
circle(0, 0, 8);
pop();

// 描画グループを終了します。
pop();

// 虫を描きます。
let x = random(0, 100);
let y = random(0, 100);
text('🦟', x, y);

このバージョンでは、各目を描くコードは独自の push()pop()関数の間に含まれています。 こうすることで、描画の正しい部分に詳細を追加しやすくなります。

push()pop()は 以下の関数の効果を含みます:

WebGLモードでは、push()pop()は いくつかの追加のスタイルの効果も含みます:

実例

Notice any errors or typos? Please let us know. Please feel free to edit src/core/structure.js and open a pull request!

関連するリファレンス