HTML5-Tutorium: Canvas: Hello World 04: Unterschied zwischen den Versionen
Kowa (Diskussion | Beiträge) Die Seite wurde neu angelegt: „{{HTML5-Tutorium:Canvas:HelloWorld:Menü}} '''Ergebnis''': [http://glossar.hs-augsburg.de/beispiel/tutorium/html5_canvas/hello_world/html5_canvas_hello_world_0…“ |
Kowa (Diskussion | Beiträge) |
||
| Zeile 3: | Zeile 3: | ||
([http://glossar.hs-augsburg.de/beispiel/tutorium/html5_canvas/hello_world/html5_canvas_hello_world_04 SVN-Repository]) | ([http://glossar.hs-augsburg.de/beispiel/tutorium/html5_canvas/hello_world/html5_canvas_hello_world_04 SVN-Repository]) | ||
= | =Browser-Unhabhängigkeit mit jQuery= | ||
Leider weichen die JavaScript-Implementierungen der einzelnen Browser ziemlich voneinander ab. | Leider weichen die JavaScript-Implementierungen der einzelnen Browser ziemlich voneinander ab. | ||
Daher ist es fast immer sinnvoll, JavaScript-Biliotheken einzusetzen, deren Hauptzweck es ist, | Daher ist es fast immer sinnvoll, JavaScript-Biliotheken einzusetzen, deren Hauptzweck es ist, | ||
| Zeile 10: | Zeile 10: | ||
In diesem Tutorium soll die JavaScript-Bibliothek <code>jQuery</code><ref>[http://jquery.com/ jQuery]</ref> eingesetzt werden. | In diesem Tutorium soll die JavaScript-Bibliothek <code>jQuery</code><ref>[http://jquery.com/ jQuery]</ref> eingesetzt werden. | ||
Außerdem sollen alle Konstanten aus der JavaScript-Datei <code>main.js</code> in eine eigene Datei <code>CONSTANT.js</code> ausgelagert werden. | |||
Dies hat den Vorteil, dass die Konfiguration des Projektes (Bühnenbreite, Font-Wahl etc.) an einer zentralen Stelle erfolgen kann. | |||
==Musterlösung herunterladen== | ==Musterlösung herunterladen== | ||
| Zeile 82: | Zeile 84: | ||
Außerdem wird der Benutzer beim Speichern des Projektes im Repositorys nicht dauern mit einer Warnmeldung, dass im PRojekt noch Fehler enthalten seien, gebervt. | Außerdem wird der Benutzer beim Speichern des Projektes im Repositorys nicht dauern mit einer Warnmeldung, dass im PRojekt noch Fehler enthalten seien, gebervt. | ||
=== | ===JavaScript-Code auf <code>jQuery</code> umstellen=== | ||
Bevor Sie <code>jqery.min.js</code> verwenden können, müssen Sie diese Datei in der HTML-Datei <code>hallo.html</code> laden. | |||
Erweitern Sie also den entsprechenden Abschnitt im HTML-Header: | |||
<source lang="html4strict"> | |||
<!-- Laden aller JavaScript-Dateien --> | |||
<script type="text/javascript" src="lib/jquery.min.js"></script> | |||
<!--<script type="text/javascript" src="js/all.min.js" ></script>--> | |||
<script type="text/javascript" src="js/CONSTANT.js" ></script> | |||
<script type="text/javascript" src="js/main.js" ></script> | |||
</source> | |||
Die JavaScript-Datei <code>CONSTANT.js</code> enthält folgende Konstanten-Definitionen: | |||
<source lang="html4strict"> | |||
"use strict"; /* Warne vor unsauberem JavaScript-Code! */ | |||
// Anstelle von "var" sollte "const" verwendet werden. | |||
// Dies wird aber vom Internet Explorer nicht unterstützt. | |||
var CANVAS_WIDTH = 300; | |||
var CANVAS_HEIGHT = 27; | |||
var HELLO_POS_X = 5; | |||
var HELLO_POS_Y = 20; | |||
var HELLO_FONT_FAMILY = "'Times New Roman', Times, serif"; | |||
var HELLO_FONT_SIZE = 20; | |||
var HELLO_FONT_WEIGHT = "bold";</source> | |||
Anschließend können Sie die JavaScript-Datei <code>main.js</code> anpassen: | |||
die | |||
<source lang="html4strict"> | |||
window.onload = init; | |||
</source> | |||
durch | |||
<source lang="html4strict"> | |||
$(document).ready(init); | |||
</source> | |||
ersetzen. | |||
<source lang=" | |||
In der <code>init</code>-Funktion werden folgende Anpassungen vorgenommen: | |||
<source lang="html4strict"> | |||
v_canvas = document.getElementById("d_canvas"); | |||
v_context = v_canvas.getContext("2d"); | |||
v_canvas.width = 300; | |||
v_canvas.height = 27; | |||
</source> | </source> | ||
wird durch | |||
== | <source lang="html4strict"> | ||
v_canvas = $("#d_canvas") | |||
.attr("width", CANVAS_WIDTH) | |||
.attr("height", CANVAS_HEIGHT | |||
) | |||
[0] // Array-Zugriff um das Raw-Canvas-Objekt | |||
// aus dem jQuery-Objekt zu extrahieren | |||
; | |||
v_context = v_canvas.getContext("2d"); | |||
</source> | |||
und | |||
<source lang="html4strict"> | |||
// Interaktive HTML-Formular-Elemente mit JavaScript verknüpfen. | |||
document.getElementById("d_button_ok").onmousedown = sayHello; | |||
</source> | |||
durch | |||
<source lang="html4strict"> | |||
<source lang=" | // Interaktive HTML-Formular-Elemente mit JavaScript verknüpfen. | ||
$("#d_button_ok").click(sayHello); | |||
</source> | </source> | ||
Abschließend wird der Inhalt der <code>sayHello</code>-Funktion durch | |||
folgenden Code ersetzt: | |||
<source lang=" | |||
<source lang="html4strict"> | |||
v_context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); // clear canvas | |||
v_context.font = HELLO_FONT_WEIGHT | |||
+ " " + HELLO_FONT_SIZE + "px" | |||
+ " " + HELLO_FONT_FAMILY; | |||
v_context.fillText("Hallo, " + $("#d_name").val() + "!", | |||
HELLO_POS_X, HELLO_POS_Y | |||
); | |||
</source> | </source> | ||
==Testen und speichern== | |||
Nun sollt Ihre Web-Anwendung wieder funktionieren. | |||
Testen Sie Sie und speichern Sie sie in Ihrem Repository. | |||
=Quellen= | =Quellen= | ||
Version vom 8. Oktober 2012, 10:15 Uhr
Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen:
| Korrektheit: 4 (großteils überprüft) |
Umfang: 4 (unwichtige Fakten fehlen) |
Quellenangaben: 5 (vollständig vorhanden) |
Quellenarten: 5 (ausgezeichnet) |
Konformität: 4 (sehr gut) |
HTML-Tutorium Hello World: JavaScript | Canvas | SVG
Ergebnis: hallo.html
(SVN-Repository)
Browser-Unhabhängigkeit mit jQuery
Leider weichen die JavaScript-Implementierungen der einzelnen Browser ziemlich voneinander ab. Daher ist es fast immer sinnvoll, JavaScript-Biliotheken einzusetzen, deren Hauptzweck es ist, diese Unterschiede auszugleichen. Daneben stellen sie im Allgemeinen auch noch viele sehr nützliche JavaScript-Erweiterungen zur Verfügung.
In diesem Tutorium soll die JavaScript-Bibliothek jQuery[1] eingesetzt werden.
Außerdem sollen alle Konstanten aus der JavaScript-Datei main.js in eine eigene Datei CONSTANT.js ausgelagert werden.
Dies hat den Vorteil, dass die Konfiguration des Projektes (Bühnenbreite, Font-Wahl etc.) an einer zentralen Stelle erfolgen kann.
Musterlösung herunterladen
(Dieser Punkt kann übersprungen werden.)
Laden Sie die Musterlösung http://glossar.hs-augsburg.de/beispiel/tutorium/html5_canvas/hello_world/html5_canvas_hello_world_03/
auf bekannte Weise in Eclipse.
Neues Projekt anlegen
Legen Sie ein neues Projekt an
Datei→Neu→Statisches Web-Projekt- Project name:
HelloWorldCanvas03→Fertigstellen
Legen Sie die Ordner js und css an und kopieren Sie die Dateien main.js, main.css und
hello.html aus HelloWorldCanvas03 in die entsprechenden Ordner WebContent des neuen Projektes.
Passen Sie das title-Element in der Datei hello.html an.
Ändern Sie den Haeder der HTML-Datei hallo.html so ba,
dass Sie die unkomprimierten CSS- und JavaScript-Dateien einbinden.
<!-- Laden aller CSS-Dateien -->
<!--<link rel="stylesheet" href="css/all.min.css" />-->
<link rel="stylesheet" href="css/main.css" />
<!-- Laden aller JavaScript-Dateien -->
<!--<script type="text/javascript" src="js/all.min.js"></script>-->
<script type="text/javascript" src="js/main.js" ></script>
Anderenfalls müssten Sie vor jedem Test zunächst das Komprimierungsskript build.xml
ausführen. Dies vergisst man recht schnell und testet dann eine alte Version, bei der
aktuelle Änderungen an den CSS- und JavaScript-Dateien nicht berücksichtigt werden.
Nachdem Sie diese Version getestet haben, sollten Sie sie zunächst in Ihrem Repository speichern:
Projektexplorer: Rechtsklick aufHelloWorldCanvas04→Team→Projekt gemeinsam nutzenSVN→Weiter- Url:
https://praktikum.multimedia.hs-augsburg.de/svn/ACCOUNT(ACCOUNTdurch eigenen RZ-Account ersetzen) →Weiter - Use specified folder name:
mmprog/tutorium/HelloWorldCanvas04→Fertigstellen - Im Projektexplorer: Rechtsklick auf
HelloWorldCanvas04→Team→Commit - Comment:
Neues Projekt angelegt. OK
Einbinden von jQuery
Laden Sie die komprimierte Version von jQuery herunter
und speichern Sie diese unter dem Namen jquery.min.js irgendwo auf Ihrer
Festplatte. Binden Sie nun jQuery in Ihr Projekt ein:
Projektexplorer: Rechtsklick aufWebContentim OrdnerHelloWorldCanvas04→ Klick aufNeu→ Klick aufOrdner- Ordnername:
lib→Fertigstellen - Rechtsklick auf den neu erstellen Ordner
lib→ Klick aufImportieren Allgemeinaufklappen → Klick aufDateisystem→ Klick aufWeiter→ Aus Verzeichnis:<Verzeichnis, in dem jQuery liegt>→ Häckchen vorjquery.min.js→Fertigstellen(Beachten Sie, im Projektexplorer wird für ihr Projekt nun anagezeigt, dass es nicht frei von Syntaxfehlern sein soll.)Projektexplorer: Rechtsklick aufHelloWorldCanvas04→ Klick aufEigenschaften→ Klick aufJavaScriptaufklappen → Klick aufIncludePath- Klick auf Reiter
Quelle→HelloWorldCanvas04/WebContentaufklappen → Klick aufAussgeschlossen: (Kein)→ Klick aufBearbeiten ... - Klick auf
Hinzufügenunter „Ausschlussmuster“ (= zweiter Buton mit diesem Label!) → Eingabe vonlib/**ins Textfeld OK→Fertigstellen→OK
Anmerkungen
Externe, d.h. nicht von Ihnen geschrieben JavaScript-Bibliotheken, sollten nicht im Ordner js liegen,
da diese im allgemeinen schon komprimiert wurden und vom build nicht noch einmal komprimiert werden sollten.
Daher wurde der neue Ordner lib angelegt.
Für diesen Ordner wurde außerdem das Syntax-Checking deaktiviert,
da bei komprimierten JavaScript-Bibliotheken von Eclipse häufig Syntaxfehler gemeldet werden, obwohl überhaupt keine
Fehler darinnen enthalten sind. Bei jquery.min.js ist dies beispielsweise der Fall.
Nach dem Ausschluss des Ordners lib vom Syntaxchecking, sind die Fehlermarkierungen im Projektexplorer wieder verschwunden.
Außerdem wird der Benutzer beim Speichern des Projektes im Repositorys nicht dauern mit einer Warnmeldung, dass im PRojekt noch Fehler enthalten seien, gebervt.
JavaScript-Code auf jQuery umstellen
Bevor Sie jqery.min.js verwenden können, müssen Sie diese Datei in der HTML-Datei hallo.html laden.
Erweitern Sie also den entsprechenden Abschnitt im HTML-Header:
<!-- Laden aller JavaScript-Dateien -->
<script type="text/javascript" src="lib/jquery.min.js"></script>
<!--<script type="text/javascript" src="js/all.min.js" ></script>-->
<script type="text/javascript" src="js/CONSTANT.js" ></script>
<script type="text/javascript" src="js/main.js" ></script>
Die JavaScript-Datei CONSTANT.js enthält folgende Konstanten-Definitionen:
"use strict"; /* Warne vor unsauberem JavaScript-Code! */
// Anstelle von "var" sollte "const" verwendet werden.
// Dies wird aber vom Internet Explorer nicht unterstützt.
var CANVAS_WIDTH = 300;
var CANVAS_HEIGHT = 27;
var HELLO_POS_X = 5;
var HELLO_POS_Y = 20;
var HELLO_FONT_FAMILY = "'Times New Roman', Times, serif";
var HELLO_FONT_SIZE = 20;
var HELLO_FONT_WEIGHT = "bold";
Anschließend können Sie die JavaScript-Datei main.js anpassen:
window.onload = init;
durch
$(document).ready(init);
ersetzen.
In der init-Funktion werden folgende Anpassungen vorgenommen:
v_canvas = document.getElementById("d_canvas");
v_context = v_canvas.getContext("2d");
v_canvas.width = 300;
v_canvas.height = 27;
wird durch
v_canvas = $("#d_canvas")
.attr("width", CANVAS_WIDTH)
.attr("height", CANVAS_HEIGHT
)
[0] // Array-Zugriff um das Raw-Canvas-Objekt
// aus dem jQuery-Objekt zu extrahieren
;
v_context = v_canvas.getContext("2d");
und
// Interaktive HTML-Formular-Elemente mit JavaScript verknüpfen.
document.getElementById("d_button_ok").onmousedown = sayHello;
durch
// Interaktive HTML-Formular-Elemente mit JavaScript verknüpfen.
$("#d_button_ok").click(sayHello);
Abschließend wird der Inhalt der sayHello-Funktion durch
folgenden Code ersetzt:
v_context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); // clear canvas
v_context.font = HELLO_FONT_WEIGHT
+ " " + HELLO_FONT_SIZE + "px"
+ " " + HELLO_FONT_FAMILY;
v_context.fillText("Hallo, " + $("#d_name").val() + "!",
HELLO_POS_X, HELLO_POS_Y
);
Testen und speichern
Nun sollt Ihre Web-Anwendung wieder funktionieren. Testen Sie Sie und speichern Sie sie in Ihrem Repository.
Quellen
- Kowarschick (MMProg): Wolfgang Kowarschick; Vorlesung „Multimedia-Programmierung“; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2018; Quellengüte: 3 (Vorlesung)
