Lies folgende Tutorials:
Der folgende Codeausschnitt enthält einige syntaktische und semantische Fehler. Finde und korrigiere diese zunächst. Überlege, was die vier ganz unten stehenden Methodenaufrufe je ausgeben. Überprüfe Deinen Korrekturvorschlag, indem Du den verbesserten Code auch ausführst und testest! (Wenn Du möchtest, “übersetzen” anschließend noch den Code in ES6-Syntax.)
"use strict";
var Hund = function(name, besitzer) {
this._name = name;
this._besitzer = besitzer;
};
Hund.prototype.bellen = function() {
console.log(this._name + " sagt: Wau wau wau!");
};
Dackel = function(name, besitzer, club) {
Hund.call(this, name);
this._club = club;
};
Dackel.prototype = Hund();
Dackel.prototype.constructor = Dackel;
Dackel.sageSpruch = function() {
console.log(this._besitzer + " sagt: Ordnung muss sein!");
};
var Boxer = function(name, besitzer, bissig) {
Hund(name, besitzer);
_bissig = bissig;
};
Boxer.prototype = Object.create(Hund);
Boxer.prototype.constructor = Boxer;
Boxer.prototype.nenneBeissverhalten = function() {
var prop = this._bissig ? "bissiger" : "lieber";
console.log("Ich bin ein " . prop . " Hund.")
};
var waldi = new Dackel("Waldi", "Krause", "Teckel e.V.");
var prinz = new Boxer("Prinz", "Klitschko", "KGB", false);
waldi.bellen();
waldi.sageSpruch();
prinz.bellen();
prinz.nenneBeissverhalten;
Hinweis: Nutze für diese und die nächste Aufgabe entweder die old-school ES5-Variante (wie in Teilaufgabe 2) oder aber die neue ES6-Syntax (mit class
usw.).
top
, left
, width
, height
und color
. Alle Attribute müssen durch den Konstruktor erzeugt und sinnvoll initialisiert werden, also gültige Pixelpositionen für (top
, left
) mit passender Größe (width
, height
) sowie Objektfarbe.draw(context)
zum Zeichnen des Rechtecks besitzen (Parameter context
ist der sog. 2D-Context von <canvas>
).<canvas>
-Elements durch Aufruf von draw(context)
an der gespeicherten Position gezeichnet wird.<canvas>
einen click
-Eventhandler hinzu, sodass durch Klicken zusätzliche Rechtecke an der Klickposition mit zufälliger Größe (und ggf. Farbe) angezeigt und gespeichert werden. Hinweis: das im Event-Handler übergebene Event-Objekt liefert die Mausposition in Canvas-lokalen Koordinaten in den Attributen layerX
und layerY
.classDiagram
Figur <|-- Kreis
Figur <|-- Rechteck
Figur: +draw()
class Kreis{
+draw()
}
class Rechteck{
+draw()
}
<canvas>
durch Aufruf der Methode draw(context)
. Dabei soll das interaktive Zeichnen der Rechtecke mit der von der Basisklasse Figur abgeleiteten Rechteck-Klasse wie gehabt funktionieren, wobei das oben erwähnte Array nun genauso auch die zu zeichnenden Kreise halten soll. Hinweis: Zeichnen eines Kreises um Punkt (x, y) mit Radius r: context.arc(x, y, r, 0, 2 * Math.PI, true)
Erstelle dynamisch zwanzig Buttons, denen Du beim Erzeugen in einer Schleife einen Eventhandler für das click
-Event zuweist. Beim Anklicken soll die Zählvariable zur Erstellungszeit ausgegeben werden, z.B. mit folgendem Text: “Button 12 wurde gedrückt”.
Alternativ kannst Du auch Übung 5.3 bzw. 8.2 so umschreiben, dass der Index in das Array sowie das Array mit den Adressdaten selbst im click
-Handler mit Hilfe einer Closure zur Verfügung steht, sodass Du nicht mit id
-Strings, globalen Variablen o.ä. arbeiten musst.