Ich versuche, eine Leinwand mit mehreren Dreiecken überall zu erstellen.Wie erstellt man mehrere Instanzen der gleichen Form in HTML-Canvas?
Ich möchte eine Klasse eines Pfades erstellen, um es mehrmals zu instanziieren. Ich habe das versucht:
class Triangle {
constructor(x = 0, y = 0) {
// Get context from the global variable 'ctx'
this.ctx = ctx;
// Draw triangle
this.ctx.beginPath();
this.ctx.lineTo(0 , 0 );
this.ctx.lineTo(80 , 80 );
this.ctx.lineTo(0 , 160);
this.ctx.moveTo(x , y );
this.ctx.closePath();
// Place color
this.ctx.fillStyle = '#000';
this.ctx.fill();
}
}
Leider, wenn ich das mache, funktioniert es nur mit dem ersten Element. Was bedeutet, dass das Ergebnis zwei Dreiecken auf 0,0 Lage ...
var T1 = new Triangle(0, 0);
var T2 = new Triangle(10, 10);
Wie kann ich mehrere Dreiecken und auf sie Bezug singularely schaffen?
EDIT
Nach @markE Antwort, die ich here below meinen Code aktualisiert.
seien Sie vorsichtig mit 'ctx.save()' und 'ctx.restore()', diese alle Eigenschaften Ihres Kontext sparen ('fillStyle',' strokeStyle', ' clip', 'transforms',' fonts', 'gCO', etc.) Dies kann sehr schwer sein und sollte so weit wie möglich vermieden werden. Wenn Sie nur Ihre Transformationsmatrix auf ihren ursprünglichen Zustand zurücksetzen müssen, rufen Sie einfach 'ctx.setTranform (1,0,0,1,0,0)' auf, was sogar besser ist als die minus vorherige Übertragung durch @markE, da in js Alles ist schwebend, und nach vielen dieser Ops darfst du nicht am selben Punkt enden. – Kaiido
Danke @Kaiido für die Verbesserung. Ich habe auch Code ein bisschen mehr aufgeräumt. –