独自のスタイルと変換を含む描画グループを終了します。
デフォルトでは、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()
は 以下の関数の効果を含みます:
- fill()
- noFill()
- noStroke()
- stroke()
- tint()
- noTint()
- strokeWeight()
- strokeCap()
- strokeJoin()
- imageMode()
- rectMode()
- ellipseMode()
- colorMode()
- textAlign()
- textFont()
- textSize()
- textLeading()
- applyMatrix()
- resetMatrix()
- rotate()
- scale()
- shearX()
- shearY()
- translate()
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!