Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Universität Salzburg
Sommersemester 2008
ANHÄNGE 204
Literatur- und Web-Tipps 204
Stichwortverzeichnis 206
1.Termin: Multimedia und Web
Der erste Termin der Lehrveranstaltung klärt organisatorische Fragen, stellt die grundlegen-
den Begriffe vor und gibt einen Einstieg in HTML.
• Wie die drei Standards http, URL und HTML das Web definieren.
• Den Zusammenhang zwischen http und TCP sowie zwischen http und dem DNS
• Die Korrektheit des XHTML-Codes mit dem Validator des World Wide Web Consortium
überprüfen
Weitere Informationsquellen
• Selfhtml. http://de.selfhtml.org/
Vertiefungsmöglichkeiten
Sie können sich mit HTML intensiver auseinandersetzen: erforschen Sie Anker/Textmarken
und die verschiedene Eingabefelder für Formulare.
Uni Salzburg, SS 2008
Multimedia ist die Kombination von Text, Bild, Audio und Bewegtbild am Computer.
Die entsprechenden Dokument finden Sie z. B. am Webserver des World Wide Web Consorti-
ums 1.
Rund um diese drei Standards ordnen sich weitere wichtige Begriffe an:
Webbrowser
Ein Webbrowser, oder kurz Browser, ist ein Programm, das bei Eingabe einer URL über http
eine HTML-Webseite laden und anzeigen kann, es ist also der Client zum World Wide Web.
Es gibt sehr viele verschiedene Webbrowser. Abbildung 1 zeigt drei davon: den Browser „Mo-
saic“, der im Jahre 1993 als zweiter Webbrowser für grafische Oberflächen stark zur Verbrei-
tung des World Wide Web beigetragen hat, und die Browser Opera und Mozilla in den Versio-
nen, die im Jahre 2004 verwendet wurden.
1
http://www.w3c.org/
3
WWW und Multimedia: Was ist das Web?
Alle eben erwähnten Browser haben gemeinsam, dass sie auf einem typischen „Büro-
Computer“ eingesetzt werden, einem Computer mit grafischer Oberfläche und einem Farb-
Monitor.
Es gibt aber auch „exotischere“ Browser. Abbildung 2 zeigt den Browser lynx, der nur Text
darstellt, aber keine Bilder. Daneben sehen Sie eine „Braille Ausgabezeile“, ein Gerät, das
eine Zeile Text in eine Zeile Blindenschrift übersetzt. Mit diesem Webbrowser und diesem
Ausgabegerät können Blinde im Web surfen.
Webseite
Die Dokumente, die im Webbrowser dargestellt werden nennt man Webseiten. Eine Webseite
ist – technisch gesehen – ein Dokument im HTML-Format.
Eine Webseite kann – im Gegensatz zu einer Seite in einem Buch – beliebig lang sein. Ist die
Seite zu groß / zu lang für das Browser-Fenster, dann erscheint ein Scrollbalken mit dem man
den Rest der Seite erreichen kann, wie in Abbildung 3 gezeigt.
4
Uni Salzburg, SS 2008
Website
Als Webseite wird also ein Dokument bezeichnet. Verwechseln Sie diesen Begriff nicht mit
dem englischen Wort Website. Eine Website besteht aus mehreren Webseiten, die zusammen
gehören und untereinander verlinkt sind.
1.1.2 URL
Eine URL ist die Adresse eines Dokuments am Web oder in einem anderen Online-
Informationssystem. Wir werden uns hier vorerst nur mit Web-URLs und mailto-URLs beschäf-
tigen. Ein Beispiel:
http://kurse.horus.at/2006-ss/www-mm/index.html#literatur
5
WWW und Multimedia: Was ist das Web?
http Übertragungsprotokoll
Im Zusammenhang mit Web-Formularen und CGI-Skripts werden wir oft mit URLs zu tun ha-
ben, die Parameter enthalten:
http://webwelt.horus.at/html/form/echo.cgi?a=10&b=20#copy
HTTP-URLs sind nicht die einzigen URLs, ein Beispiel mit einem anderen Übertragungsproto-
koll:
mailto:brigitte.jellinek@fh-salzburg.ac.at
1.1.3 HTTP
Das Hypertext Transfer Protocol ist ein relativ simples Protokoll, das immer TCP-
Verbindungen verwendet. Alle Aktivität wird vom Client (=Browser) initiiert.
In der einfachsten Form sieht HTTP so aus (hier wieder am Beispiel der URL
http://kurse.horus.at/2006-ss/www-mm/index.html#literatur):
1. Eine URL wird in den Browser eingetippt, oder ein Link wird im Browser ange-
klickt
2. Der Browser analysiert die URL und ermittelt daraus den Domain Namen des
Webservers (kurse.horus.at), löst diese über DNS zur IP-Adresse auf
(193.80.109.212)
6
Uni Salzburg, SS 2008
5. Der Webserver nimmt die Anfrage entgegen und analysiert sie. Meistens interpre-
tiert er sie als Aufforderung, eine bestimmte Datei von der Platte zu lesen
6. Der Webserver schickt die http-Antwort an den Browser, diese besteht aus einem
Statuscode, z. B. „200 OK\n\n“, gefolgt vom Inhalt der Datei index. html.
7. Der Browser nimmt das Dokument in Empfang und stellt es geeignet dar
Die nächste Anfrage des Clients kann sich an einen anderen Server, oder wieder an denselben
Server richten. Die nächste Anfrage, die der Server beantwortet, kann vom selben Client
kommen, oder von einem anderen Client. Keiner der beiden (Client und Server) muß spei-
chern mit wem er gerade Daten ausgetauscht hat, um die nächste Anfrage durchfüh-
ren/beantworten zu können. Das Protokoll ist also stateless. Dadurch ist es sehr einfach ei-
nen Server zu programmieren.
Das ist nur die einfachste Version des Protokolls, mit Proxies, Caching und Keep-Alive wird es
komplizierter.
1.2 HTML
In der Übung werden wir XHTML Version 1. 0 transitional verwendet. Die wichtigsten
HTML-Tags (Links, Bilder, Tabellen, Formulare) werden Sie bald auswendig können. Alle De-
tails können Sie am HTML-Schwindlzettl oder bei selfhtml nachschlagen.
Das X von XHTML steht für die Kompatibilität mit XML. Die Dateien haben aber weiterhin die
Endung . htm oder . html, ohne x. Im Unterschied zu HTML ist XHTML ein bisschen strenger in
der Schreibweise. Am Web finden Sie noch viele HTML-Dokumente und Tutorials zu HTML –
lassen Sie sich davon nicht verwirren!
HTML-Dateien (Hyper Text Markup Language) bestehen aus reinem Text, in unserem Falle
entweder aus Text im Format ISO 8859-1 (Latin-1) 2 oder im Format utf-8 Sie können also
Umlaute direkt in den HTML-Code eingeben. Siehe auch Seite xxx.
2
Das ist der ASCII-Zeichensatz, ergänzt um die in westeuropäischen Sprachen nötigen Zeichen
wie üöä ÜÖÄ ß é ñ
7
WWW und Multimedia: HTML
1.2.1 Sonderzeichen
Sonderzeichen in HTML nennt man „character entities“. Sie haben die From &entityname;
> >
& &
Folgende Character Entities können Sie vermeiden, indem Sie das Zeichen direkt im ISO 8859-
1 Zeichensatz oder utf-8 eingeben:
Ä ä
ß ß
1.2.2 HTML-Tags
2. Zu (fast) jedem "Anfangs-Tag" gibt es einen "End-Tag", der sich nur durch den
Schrägstrich vom Anfangs-Tag unterscheidet.
Z. B. <p>hier der Absatz</p>.
In XHTML werden Tags immer klein geschrieben (bei HTML war die Groß- oder Kleinschreibung
egal).
1.2.3 Whitespace
8
Uni Salzburg, SS 2008
Nur die Tags beeinflussen die Darstellung der Webseite. Sie müssen den Tag <br /> verwen-
den um einen Zeilenumbruch auf der Webseite zu erzeugen – dies ist aber nur selten sinnvoll,
da der Browser einen automatischen Zeilenumbruch durchführt.
1.2.4 Attribute
Manche Tags können Attribute enthalten. Ein Beispiel ist der Tag <img /> der ein Bild in die
Seite einfügt (Englisch: Image). Die wichtigsten Attribute von <img /> sind src (von Source =
Quelle) und alt (Alternative Darstellung).
In XHTML werden Tags immer klein geschrieben (bei HTML war die Groß- oder Kleinschreibung
egal).
oder
<img
alt="Das ist Neu!"
src="neu.gif"
bli="bla, blo"
/>
Das Attribut bli, welches HTML nicht kennt, wird wie andere unbekannte Attribute einfach
ignoriert.
Der Wert eines Attributes muß in Anführungszeichen geschrieben werden. (in HTML gab es
eine Ausnahme für Werte die keine Leerzeichen enthalten (wie z. B. Zahlen), diese konnten
auch ohne Anführungszeichen geschrieben werden, bei XHTML ist das verboten)
ACHTUNG: ein häufiger Fehler ist es, das zweite Anführungszeichen zu vergessen:
9
WWW und Multimedia: HTML
1.2.5 Kompatibilität
Jeder Browser (egal ob Firefox, Microsoft Internet Explorer, Opera,. . . ) kann jedes HTML-
Dokument darstellen. Mit jedem Editor (egal ob Dreamweaver, Frontpage, GoLive,. . . ) kann
jedes HTML-Dokument bearbeitet werden. Neue Tags, die z. B. ein Browser nicht erkennt,
sind zu ignorieren – es gibt keine Fehlermeldungen!
Wenn das W3C in XHTML Version 21 beispielsweise den neuen Tag <jump> (hüpfenden Text)
einführen würde, können Sie diesen Tag auf Ihrer Webseite verwenden. Der Text würde je-
doch nur in den neuesten Versionen der Browser (die schon die Version 21 kennen) hüpfend
dargestellt. In älteren Browsern wird der Tag <jump> ignoriert:
Bevor Sie also einen neuen Tag einsetzen, sollten Sie sich darüber klar sein, welche Versionen
der Browser diesen Tag darstellen und wie viel Prozent Ihres Zielpublikums schon eine pas-
sende Browser-Version benutzen. Meist können Sie eine Seite so gestalten, dass auch mit äl-
teren Browsern der gesamte Inhalt lesbar ist.
Schlecht Besser:
<p>Zu den hüpfenden Terminen sind noch <p>Zu den markierten Terminen sind noch Plät-
Plätze im Kurs frei: ze im Kurs frei</p>
</p> <ul>
<ul> <li><jump>Montag *</jump>
<li><jump>Montag</jump> <li>Dienstag
<li>Dienstag <li>
<ul>
Auf älteren Browsern geht die wichtigste Auf allen Browsern ist erkennbar zu welchen
Information verloren! Terminen noch Plätze frei sind.
Hinweis: Der <jump>–Tag ist ein Scherz, den gibt es nicht wirklich, und wird es hoffentlich nie
geben.
Wir unterscheiden zwischen HTML-Tags die Blöcke definieren, und solchen die das nicht tun.
Blockbildende Tags beanspruchen immer einen rechteckigen Bereich bei der Ausgabe, nicht
blockbildende Tags tun das nicht-
10
Uni Salzburg, SS 2008
Physische Elemente geben die genaue Darstellung vor und sind eigentlich „altmodische Tags“,
die durch Stylesheets ersetzt wurden, und die Sie möglichst nicht mehr verwenden sollten:
Schriftart
Text in einer bestimmen Farbe <span style="color:red;">rot</span>
1.2.7 Bilder
Als Attribut src können Sie eine absolute oder relative URL angeben:
11
WWW und Multimedia: HTML
1.2.8 Links
Als Attribut href können Sie eine absolute oder relative URL angeben:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Titel der Seite</title>
</head>
<body>
Hier die Tags, die Sie schon kennen.
</body>
</html>
Achtung: es kann nur einen head und einen body geben, keine Wiederholungen! Browser zeigen
oft auch Seiten richtig an, die keine korrekte Struktur haben. Sie sollten sich trotzdem immer
daran halten und standardkonforme Webseiten erstellen.
1.2.10 Listen
Listen werden mit zwei verschachtelten Tags gebaut: der li-Tag für den einzelnen Listen-
Punkt, und der ol- oder ul-Tag für die gesamte Liste.
12
Uni Salzburg, SS 2008
<ul> <ol>
<li>punkti</li> <li>eins</li>
<li>punkti</li> <li>zwei</li>
</ul> <li>drei</li>
</ol>
1.2.11 Tabellen
Um eine Tabelle zu erzeugen müssen Sie die Tags <table>, <tr> und <td> richtig ineinander
verschachteln.
<table border="1">
<tr>
<td>Freitag</td>
<td>Samstag</td>
<td>Sonntag</td>
</tr>
<tr>
<td>lernen</td>
<td>lernen</td>
<td>lange schlafen</td>
</tr>
</table>
HTML-Tabellen wurden früher in Webseiten für das Layout der Seite verwendet, diese Tabel-
lenlayouts sind noch auf vielen älteren Webseiten zu finden. Moderne Webseiten werden mit
CSS-Layouts gestaltet (Siehe Kapitel 3).
1.2.12 Formulare
Mit den HTML-Tags <form>, <input />, <textarea>, <option>, <select> werden Formulare ge-
baut. Hier ein einfaches Beispiel, (in der Code-Ansicht von Dreamweaver 4):
Der <form>-Tag ist „unsichtbar“ und dient nur dazu, die anderen Eingabefelder zu bündeln. Im
Action-Attribut des <form>-tag wird angegeben, an welche URL die Daten zur Verarbeitung
geschickt werden.
13
WWW und Multimedia: HTML
14
Uni Salzburg, SS 2008
• Wie das CSS Box Model funktioniert, wie der Zusammenhang zwischen margin, border
und padding ist.
• Welche Bildformate im Web verwendet werden können. Welches Bildformat für ein
gegebenes Bild geeignet ist (auf Grund von Anforderungen wie: Anzahl der Farben,
Transparenz, Alpha-Transparenz, Animation)
• Mit Hilfe von Firebug oder durch Lesen des Codes herausfinden welche CSS-Regeln zu
einer bestimmten Darstellung in einer (fremden) Webseite führen
• Die Korrektheit des CSS-Codes mit dem CSS-Validator des World Wide Web Consortium
überprüfen. Fehler in einem CSS-Dokument ausbessern bis es valide ist
• Ein Bild das digital vorliegt in ein geeignetes Format für das Web konvertieren.
Weitere Informationsquellen
• CSS Zen Garden. http://csszengarden. com/
Vertiefungsmöglichkeiten
Lesen Sie den CSS-Standard 2. 1. Erstellen Sie eine gif-Animation.
15
WWW und Multimedia: Cascading Style Sheets - CSS
<html><body>
<h1>Das Studium</h1>
<p>Studienziel ist es, breit gefächerte technische und wirtschaftliche Kompetenzen...
</body></html>
Da es keine Stylesheets gab „erfand“ Netscape ab 1994 zusätzliche HTML-Tags, die die Dar-
stellung der Webseite festlegen. Andere Browser übernahmen diese Tags von Netscape.
<html><body>
<h1><font face="Arial" color="blue">Das Studium</font></h1>
<p><font size="+1">S</font>tudienziel ist es, breit gefächerte technische und wirt-
schaftliche Kompetenzen...</p>
<p><font size="+1">P</font>rojekte und Praxissemster stellen schon während des Studiums
die Verbindung...</p>
</body></html>
Durch das Hinzufügen der Tags für Formatierung wurde der HTML-Code komplizierter und
unübersichtlicher. Erst ab ab 1995 wurde endlich an den Standards für Stylesheets gearbeitet,
seit den frühen 2000ern ist die Unterstützung in den gängigen Browsern vorhanden. So sieht
nur eine HTML-Seite mit Stylesheet aus:
Mit der Trennung von Stylesheet und HTML wurde HTML wieder einfacher und übersichtlicher.
Besonders das nachträgliche Verändern der Gestaltung wurde vereinfacht.
• Zusätzliche Gestaltungsmöglichkeiten
• Mit Stylesheets können Sie nur Objekte verändern, die schon in der HTML-Datei vor-
handen sind. Es können keine neuen Objekte eingefügt werden.
• Um ein Stylesheet zu erstellen, muß die DesignerIn die HTML-Tags kennen, z. B. wis-
sen, dass h1, h2, h3 für die Überschriften stehen.
• Damit das Stylesheet wirkt, muß die RedakteurIn, die das HTML-Dokument erstellt,
die richtigen HTML-Tags verwenden, z. B. Überschriften wirklich mit h1, h2, h3 for-
matieren, und nicht mit b, i, font.
Beispiel
h1,h2 {
font-family: Arial, Helvetica, sans-serif;
Eine Regel
color: lightblue;
}
Selektor
Deklaration
body {
margin-left: 150px;
background-color: white;
}
p {
text-align: justify;
}
h1 und h2 sollen mit der Schriftart Arial dargestellt werden, wenn die nicht vorhanden ist mit
Helvetica, wenn die nicht vorhanden ist mit irgendeiner serifenlosen 3 Schrift. Außerdem soll
die Schrift in hellblauer Farbe dargestellt werden.
Die gesamte Seite (body) soll links um 150 Pixel eingerückt werden, die Hintergrundfarbe ist
weiß. Normale Text-Absätze sind im Blocksatz darzustellen.
Der einfachste Selektor besteht aus dem Namen eines einzelnen HTML-Tags.
Sie können auch mehrere Elemente durch ein Komma trennen. In diesem Falle werden für alle
Elemente die selben Style -Angaben definiert, (siehe h1,h2 in obigem Beispiel).
3
Erkärzung zu serifenlos siehe Kapitel 2.2.3
17
WWW und Multimedia: Cascading Style Sheets - CSS
Diese Zeile sollte innerhalb des head Bereiches der HTML-Datei stehen (da sonst die Darstel-
lung der Seite verzögert werden kann 4). mysyle. css könnte etwa so aussehen wie im vorigen
Beispiel.
<style>
h1,h2 {
font-family: Arial, Helvetica, sans-serif;
color: lightblue
}
</style>
Um einen style für einen einzelnen Tag zu definieren, müssen Sie innerhalb des Tags das At-
tribut style verwenden.
Was passiert nun, wenn die verschiedenen Style Angaben sich widersprechen? Die Angaben bei
einem einzelnen Tag haben immer Vorrang. Danach folgen die lokalen Angabe im head Be-
reich und erst zum Schluß die externe Datei.
4
Siehe Souders, Steve (2007) High Performance Web Sites. O'Reilly. ISBN 9780596529307
18
Uni Salzburg, SS 2008
Wenn Sie mit den Style-Angaben den p-Tag umformatieren, betrifft das alle p-Tags in der
Webseite. Oft möchten Sie aber ein oder zwei Absätze anders formatieren als die anderen
Absätze. Zu diesem Zweck können Sie sich im Stylesheet noch weitere Formatvorlagen - soge-
nannte "Klassen" - definieren:
Diesen Klassen können Sie eigene Namen geben (hier „wichtig“), vor dem Klassennamen steht
immer ein Punkt.
Jedem normalen HTML-Tag können Sie nun diese Klasse zuweisen. Dies geschieht mit dem
Attribut class.
Zur "normalen" Wirkung des HTML-Tags kommt nun die Formatierung durch die Klasse hinzu:
der Text „ganz wichtige“ und „Ein ganz wichtiger Absatz“ ist in diesem Beispiel also rot.
Eine Klasse kann mehrmals in einem Dokument verwendet werden. Zur eindeutigen Kenn-
zeichnung von Tags wird das Attribut id verwendet:
Auf diese eindeutigen IDs kann in CSS mit der Raute referenziert werden:
Sowohl Klassen als auch IDs können mit Tags kombiniert werden um einen komplexen Selektor
zu bilden:
p.wichtig { color: red; } /* nur der Tag p mit der Klasse wichtig */
b.wichtig { color: yellow; } /* nur der Tag b mit der Klasse wichtig */
.wichtig { font-size: 20px; } /* alle Tags mit der Klasse wichtig */
Die Firefox-Erweiterung Firebug zeigt Tags, Klassen und IDs in dieser Schreibweise an:
Es wird öfter vorkommen, dass Sie einem Bereich eine bestimmte Klasse zuweisen möchten,
ohne dass ein passender Tag vorhanden ist. Hier können Sie die beiden Tags <span> und <div>
verwenden, die beide selber kaum Eigenschaft aufweisen. <span> eignet sich für die Verwen-
dung in Fließtext, <div> ist ein blockbildender Tag, erzwingt also einen Zeilenumbruch.
19
WWW und Multimedia: Cascading Style Sheets - CSS
Eine abschließende Warnung: Mit Stylesheets können Sie nur Elemente verändern, die schon
in der HTML-Datei vorhanden sind. Sie können keine neuen Elemente einfügen!
In diesem Abschnitt lernen Sie die wichtigsten Deklarationen für Schriftarten, Absätze, Links,
Farben kennen.
Schriftart
Zuerst werden wir die Schriften im Dokument festlegen: Eine serifenlose Schrift für Über-
schriften, eine mit Serifen für den Fließtext.
1. p {
2. font-family: Arial, Helvetica, sans-serif;
3. font-size: 13px;
4. }
5. h1,h2 {
6. font-family: "Trebuchet MS", Verdana, Arial;
7. }
8. h1 { font-size: 24px; }
9. h2 { font-size: 20px; }
In Zeile 1 bis 4 von Listing 1 werden zwei Anweisungen für Fließtext gegeben (HTML-Tag <p>):
die Schriftfamilie in Zeile 2 und die Schriftgröße in Zeile 3.
Bei Schriftfamilien gilt es die Einschränkungen des Web zu beachten. In Zeile 2 werden meh-
rere Schriften angegeben, diese Liste wird vom Browser von links nach rechts abgearbeitet,
die erste Schrift die er findet verwendet er. Vergleichen Sie Zeile 2 mit Zeile 6: Schriftnamen
die ein Leerzeichen enthalten müssen in Anführungszeichen gesetzt werden, wie „Trebuchet
MS“ in Zeile 6.
Das letzte Wort in Zeile 2 „sans-serif“ ist ein CSS-Kürzel für „irgendeine serifenlose Schrift“.
Es empfiehlt sich am Ende einer Schriftliste ein solches Kürzel als Standardwert „wenn alle
Stricke reißen“ anzugeben, dabei sind folgende Werte möglich:
Schriftgröße
Die Schriftgrößen-Angabe in Zeile 3 verwendet Pixel als Maßeinheit. Diese Maßeinheit macht
bei der Darstellung am Screen, besonders in Kombination mit Bildern Sinn. Alternativ wäre
auch eine Angabe in em (=Breite des Buchstaben M) oder ex (Höhe des Buchstaben X), oder
Prozent (%) möglich, so kann jeweils das Verhältnis zur ‚Standard-Schriftgröße’ angegeben
werden.
20
Uni Salzburg, SS 2008
Da Webseiten hauptsächlich auf Bildschirmen gelesen werden, kann man argumentieren, dass
das Pixel die natürliche Maßeinheit auf Webseiten ist. Wenn Sie gif, jpg oder png-Bilder in
Ihrer Webseite verwenden, ist die Breite und Höhe der Bilder in Pixel fix. Pixel auch als Größe
für Schrift macht es einfach, die Größenverhältnisse von Bild und Schrift zu fixieren.
Eine andere Position lautet: Bildschirme und Displays sind sehr unterschiedlich groß; Leserin-
nen und Leser haben sehr unterschiedliche Sehstärken und –schwächen. Deswegen muß das
Verändern der Schriftgröße in der Hand der LeserIn bleiben. In einem Browser wie Firefox
geht das ja auch bequem mit einem Tastendruck.
Wenn nun die LeserIn die Schriftgröße ändert, sollte diese Veränderung alle Schriften auf der
Webseite betreffen: Fließtest, Überschrifen, Aufzählungen, etc. Dabei könnte das Layout und
die Bilder auf der Seite entweder fix bleiben oder sich ebenfalls vergößern oder verkleinern:
Absätze
Wie immer in HTML erfolgt der Zeilenumbruch automatisch. Mit CSS können Sie verschiedene
Aspekte des Absatz-Layoutes steuern, einige davon sind in Abbildung 4 gezeigt:
Mit text-align können Sie die Ausrichtung des Texts im Absatz festlegen: left, right,
center oder justify (Blocksatz). Blocksatz wird aber am Web wenig verwendet, da die
Browser keine Silbentrennung durchführen. Dadurch entstehen bei den meisten Texten häßli-
che Löcher im Blocksatz.
Die erste Zeile des Absatzes kann einen separaten Einzug haben, den Sie mit text-indent
festlegen. Die Zeilenhöhe wird mit line-height festgelegt. Hier ist es sinnvoll für längere
Texte einen etwas erhöhten Wert festzulegen (z. B. 1. 5em) da die Standard-Darstellung der
Browser etwas zu eng ist um gut lesbar zu sein.
Box Model
Jeder blockbildende Tag (z. B. h1, h2, p, blockquote, div, …) hat einen Rahmen, Innen- und
Außenabstand. Diese werden mit den Deklarationen border, padding und margin festgelegt.
Ein Hintergrundbild und/oder eine Hintergrundfarbe des Tags reicht immer bis zum Rahmen,
aber nicht darüber hinaus.
21
WWW und Multimedia: Cascading Style Sheets - CSS
Die Ausdehnung von margin, padding und border kann man besonders gut mit der Firefox-
Erweiterung Firebug erforschen wie in Abbildung 6 gezeigt.
Dabei wird direkt in der Webseite der Aussenabstand (margin) gelb und der Innenabstand
(padding) dunkelviolett hinterlegt.
Die Standard-Darstellung von Absätzen erklärt sich über den margin-top und margin-bottom
des <p>-Tags:
22
Uni Salzburg, SS 2008
Die Details zur Schreibweise sowie die verschiedenen verkürzten Schreibweisen entnehmen
Sie bitte selfhtml.
Farbangaben erfolgen in CSS in verschiedenen Schreibweisen, die aber meist auf das RGB-
Modell 5 zurückgehen. Die älteste Schreibweise ist eine Raute gefolgt von einer sechstelligen
Hexadezimalzahl. Dabei wird die Intensität von rot, grün und blau in Hexadezimal zwischen
00 (Minimum) und FF (Maximum) angegeben. (z. B. #000000 für schwarz, #FFFFFF für Weiss,
#FF0000 für reines Rot,etc).
In Stylesheets kann man statt dessen auch die Schreibweise rgb(10,2,120) verweden, um 10
Teile rot, 2 Teile grün und 120 Teile blau zu mischen. Jede der drei Zahlen kann Werte zwi-
schen 0 und 255 annehmen.
Für einige Farben kann man die englischen Farbwörter wie red, blue, black verwenden.
Hintergrundbilder
Jeder Tag kann mittels CSS ein Hintergrundbild erhalten. Als „Hintergrundbild“ in einer Web-
seite kann jedes Bild in einem Web-geeigneten Dateiformat (gif, jpg, png) dienen. Das Bild
wird „gekachelt“ – es wird horizontal und vertikal so oft wiederholt, bis es die ganze Fläche
des Tags ausfüllt. In Abbildung 8 wurde ein Bild mit drei Zahnrädern als Hintergrundbild ver-
wendet, durch die Wiederholung werden sieben Zahnräder angezeigt.
5
Separate Angabe des Rot-, Grün- und Blauwerts; Mischung dieser drei Farben ergibt die Far-
be
23
WWW und Multimedia: Cascading Style Sheets - CSS
Bitte beachten Sie: Der Inhalt der Seite sollte trotz Hintergrundbild immer noch lesbar sein!
Im Beispiel in Abbildung 8 ist eine Linkfarbe zu hell bzw. das Hintergrundbild zu auffällig: Der
Text „wurde schon besucht“ in der letzten Zeile ist kaum noch lesbar.
Links formatieren
Der <a>-Tag wird in HTML für zwei sehr unterschiedliche Dinge verwendet: zum Setzen von
Links und zum Setzen von Textmarken (auch ‚Anker’ genannt):
<h1><a name="unis"></a>Universitäten</h1>
<a href="http://www.uni-salzburg.at/">Uni Salzburg</a>
Textmarken sind normalerweise unsichtbar, Links sind normalerweise blau oder violett und
unterstrichen.
Um die Darstellung von Links zu verändern muß man in CSS :link oder :visited als Selekto-
ren verwenden. Der Browser unterscheidet dabei zwischen Links die schon einmal besucht
wurden (visited) und neuen Links.
a:link, a:visited {
background-image: url(icon-link.gif);
background-position: center right;
background-repeat: no-repeat;
padding-right: 9px;
}
24
Uni Salzburg, SS 2008
gif Palette von 255 Farben + 1 Transparenz-Farbe (kein Alpha). „animiertes Gif“ ent-
hält mehrere Bilder, die der Reihe nach angezeigt werden (Daumenkino).
Besonders geeignet für Bilder mit klaren Kanten, einfärbigen Flächen, wenigen
Farben, z. B. Comics, Logos.
png Nachfolge-Format für gif, Alpha-Transparenz, diese wird aber von MSIE erst ab
MSIE 7 unterstützt.
Es kann jedes Bild in allen drei Formaten gespeichert werden. Ideal wäre, das Format auszu-
wählen, in dem das Bild nichts an Qualität verliert, und die Dateigröße möglichst gering ist.
25
WWW und Multimedia: Bilder im Web
• Welche Vor- und Nachteile fixe, fluide und elastische Layouts von Webseiten haben.
• Mittels CSS aus einer Liste von Links ein Navigations-Menü machen.
Weitere Informationsquellen
CEDERHOLM,Dan (2007): Bulletproof Webdesign. Addison-Wesley, München. ISBN 3827326230.
Vertiefungsmöglichkeiten
Lesen Sie die Bücher von Dan Cederholm und Eric Meyer um sich noch mehr in CSS zu vertie-
fen.
Testen Sie Ihre Stylesheets nicht an einzelnen Seiten sondern immer an ganzen Sites. Ver-
wenden Sie das gelernte um einem Blog ein neues Erscheinungsbild zu geben (z. B. einem auf
Wordpress basierenden Blog).
26
Uni Salzburg, SS 2008
Zuerst stellt sich die Frage: woher weiß ich, wie hoch die Auflösung am Computer meiner
LeserIn ist? Woher weiß ich, wie viel Platz im Browserfenster zur Verfügung steht?
Die Antwort lautet: ich weiß es nicht, und es gibt keine zuverlässige Methode, mit der man
diese Information in jedem Fall herausfinden kann. Es gibt eine Meßmethode mit Hilfe der
Programmiersprache Javascript, mit der man die Größe des Browserfensters messen kann –
das Ergebnis der Messung ist natürlich dadurch verfälscht, dass Browser ohne Javascript ganz
aus der Messung herausfallen. Diese Beschränkung sollten Sie bei den folgenden Überlegungen
immer beachten.
Vergleichen Sie die höchste hier dargestellte Auflösung (1600x1200 Pixel) mit der geringsten
Auflösung (800x600). Da Breite und Höhe verdoppelt sind, steht bei der höchsten Auflösung
also die vierfache Fläche zur Verfügung!
Abbildung 10 zeigt zwei Statistiken über die Bildschirmauflösung von thecounter. com von
2006 und 2008. In diesem Zeitraum ist der Anteil der geringsten hier dargestellte Auflösung
(800x600) von 17% auf 7% gefallen. Die meistverwendete Auflösung bleibt 1024x768.
27
WWW und Multimedia: Rahmenbedingungen für Layout
Abbildung 10: Statistik über die Bildschirmauflösung, Juni 2006 und April 2008, Quelle: thecounter. com
Beide Browser zeigen dieselbe Webseite, beide Browser wurden auf einem Computer mit ei-
ner Bildschirm-Auflösung von 1024x768 Pixel verwendet.
28
Uni Salzburg, SS 2008
Links in der Abbildung sehen sie den Browser Firefox. Nach Abzug von Symbolleisten oben,
Statusleiste unten, Scrollbalken rechts und dem (sehr dünnen) Fensterrahmen links bleiben
1003x615 Pixel für die Webseite. Rechts in der Abbildung sehen Sie dieselbe Seite in Inter-
net Explorer. Zusätzlich zu den üblichen Symbolleisten ist hier auch die „Favoriten-Leiste“
am linken Rand des Browser sichtbar. Es bleiben 743x562 Pixel für die Darstellung der Web-
seite.
Wie Sie sehen können ist die Seite so gestaltet, dass das Foto, das in Firefox in der rechten
oberen Ecke der Webseite sichtbar ist, in Internet Explorer nicht mehr sichtbar ist.
Abbildung 12 zeigt eine Statistik über die „Netto-Größen“ von Browser-Fenstern. Laut dieser
Statistik kann eine Webseite mit Breite 950 Pixel auf ca. 70% der Browser vollständig ange-
zeigt werden. Bei 1050 Pixel Breite sind es nur noch 20%.
Wie werden Sie als DesignerIn einer Webseite mit diesem Wissen umgehen? Ihr eigener Com-
puter hat wahrscheinlich eine hohe Auflösung – das ist für Computer-Profis typisch. Werden
Sie beim Entwurf Ihrer Webseiten auf die Mehrheit der LeserInnen vergessen, und die Seite so
gestalten, dass sie nur mit hoher Auflösung verwendbar ist?
− die wichtigsten Inhalte Ihrer Webseite sollten im linken, oberen Bereich der Webseite
plaziert sein, innerhalb eines Bereiches von 750x500 Pixel.
− Nach unten zu scrollen ist für die LeserInnen gewohnter (und mit Scrollrad an der
Maus auch einfacher) als nach rechts zu scrollen.
Es gibt aber sicher Umstände, unter denen Sie diese Faustregeln ignorieren können. Z. B.
wenn Sie eine Webseite für einen Kiosk gestalten, und wissen, dass das Ausgabegerät immer
ein Touchscreen mit einer Auflösung von 1200x600 Pixel ist.
Oder wenn Sie eine Webseite mit künstlerischem Anspruch absichtlich so gestalten, dass die
Lese-Gewohnheiten des Web durchbrochen werden.
29
WWW und Multimedia: CSS für Layout
Dabei wird zwischen blockbildenden Tags und nicht-blockbildenden Tags unterschieden. In-
nerhalb eines Blocks wird Text vom Browser gesetzt und umgebrochen, jeder Block nimmt
einen rechteckigen Bereich des Browserfensters in der vollen Breite ein.
In Abbildung 13 wurden <p> und <em>-Tags verwendet und mit folgendem Stylesheet forma-
tiert:
p { background-color:#CCCCCC; }
em { background-color:#FFFF66; }
Bei der Darstellung im Browser kann ein nicht-blockbildender Tag dabei auf mehrere Zeilen
verteilt werden:
div#main { width:500px; }
Um einen Inhalt zu zentrieren kann der margin mit Wert auto verwendet werden.
div#main {
width:500px;
margin-left: auto;
margin-right: auto;
}
30
Uni Salzburg, SS 2008
3.3.1 Float
Eine Möglichkeit aus der normalen Reihenfolge der Darstellung auszubrechen bietet die Dekla-
ration float mit den Werten left und right. Damit wird ein Element nach links bzw. rechts
gesetzt, der Rest des Inhalts „rutscht nach oben“ und wird neben das Element gesetzt.
In Abbildung 1 sind drei Absätze zu sehen die jeweils als erstes ein Bild enthalten. Im ersten
Absatz ist die Darstellung ganz normal – das Bild wird wie ein Wort im Text behandelt. Im
zweiten Absatz „floated“ das Bild nach rechts, der Text rutscht links davon nach oben. Im
dritten Absatz „floated“ das Bild nach links, der Text rutscht rechts davon nach oben.
Bei Bildern funktioniert float besonders einfach, weil das Bild schon eine fixe Breite hat.
Wird ein anderer HTML-Tag mit float versehen muß man auch die Breite des Tags setzen um
einen sichtbaren Effekt zu erzielen. In Abbildung 15 soll der zweite Absatz nach rechts gehen.
Er hat die ID edvard.
p { margin: 0px; }
#edvard {
float:right;
width:33%;
}
Wenn viele Elemente mit float positioniert werden die die gleiche Höhe haben entsteht ein
besonders flexibles Layout: in Abbildung 16 werden je nach zur Verfügung stehendem Platz
drei oder vier Bilder nebeneinander dargestellt:
31
WWW und Multimedia: CSS für Layout
3.3.2 Navigationsmenü
Wenn man mit CSS ein Navigationsmenü gestaltet dann sollte man von einem HTML-Code aus-
gehen der auch ohne CSS gut benützbar bleibt. Dieser Ansatz ist auf englisch als „graceful
degradablility“ bekannt.
Der Ausgangspunkt für ein Navigationsmenü ist eine Liste mit Links:
<div id="navi">
<h3 class="unsichtbar">Seitenauswahl</h3>
<ul>
<li><a href="home.html">home</a></li>
<li><a href="news.html">news</a></li>
<li><a href="portfolio.html">portfolio</a></li>
<li><a href="contact.html">contact</a></li>
</ul>
</div>
Ohne CSS wird die Liste ganz normal dargestellt. Mit CSS kann man daraus ein vertikales Menü
machen, dazu wird mit list-style-type:none der Listenpunkt zu einem normalen Tag.
.unsichtbar {display:none;}
div#navi li {
list-style-type:none;
margin-bottom:1px;
background:#6C6;
width:6em;
padding: 0.2em;
}
div#navi li a:link {
text-decoration: none;
font-weight: bold;
color: black;
}
Mit Hilfe von Float kann man das Menü auch horizontal darstellen, dazu muß nur ein float
eingefügt und der margin anders gesetzt werden:
32
Uni Salzburg, SS 2008
div#navi li {
float:left;
list-style-type:none;
margin-right:1px;
background:#6C6;
width:6em;
padding: 0.2em;
}
div#navi li a:link {
text-decoration: none;
font-weight: bold;
color: black;
}
Wenn man eine Schriftart verwenden will die nicht in allen gängigen Browsern zur Verfügung
steht kann man auf folgenden Trick zurück greifen: der Text wird normal im HTML-Code ein-
gegeben, es wird aber auch ein Bild in der richtigen Schriftart gemacht.
Bei CSS-fähigen Browsern wird der Text versteckt und das Bild angezeigt. Browser ohne CSS
und Suchmaschinen verwenden einfach den Text:
<style>
h1#bildStattText {
/* schiebt den "echten text" extrem weit nach links */
text-indent:-10000px;
overflow:hidden;
background: url(pix/nockerln_schriftzug.gif);
/* hoehe und breite der grafik angeben! */
height:150px;
width:500px;
}
</style>
3.3.4 :hover
Mit dem Selektor :hover wird eine CSS-Regel nur angewandt wenn die Maus über dem Tag ist.
33
WWW und Multimedia: CSS für Layout
Mit Hilfe von Hintergrundbildern kann man so zum Beispiel einen kitschigen 3d-Button dar-
stellen.
Beim Laden des zweiten Hintergrundbildes kann es dabei zu einer Verzögerung kommen. Um
das zu verhindern kann man die beiden Hintergrundbilder in einer Bilddatei speichern und nur
den Bildausschnitt wechseln:
/* css */
div {
height:115px;
width:240px;
background-image: url(pix/rolloverButton.gif);
overflow:hidden;
}
div:hover {
background-position: 0 -120px;
}
Eine extreme Anwendung dieses Prinzips nennt man CSS-Sprites: dabei werden möglichst viele
Bilder in einer Bild-Datei zusammengefaßt. Falls viele kleine Icons verwendet werden kann
das die Darstellung der Webseite erheblich beschleunigen.
34
Uni Salzburg, SS 2008
Mit der Deklaration position:absolute wird ein Tag aus der normalen Darstellung herausge-
nommen und über dem restlichen Inhalt der Seite platziert. Mit top und left kann die linke
obere Ecke des Elements positioniert werden.
#navi {
position: absolute;
width: 80px;
top: 0px;
left: 0px;
}
In Kombination mit einem Inhalt mit margin-left ergibt das folgendes Layout:
margin-left
Die Koordinaten (top und left) beziehen sich normalerweise auf die linke obere Ecke des
Browserfenster. Ein Tag mit position:absolute oder position:relative bildet für seine unterge-
ordneten Tags ein neues Koordinationsystem. In folgendem Code definiert das main-div ein
neues Koordinatensystem, das navi-div ist also in der linken oberen Ecke des main-div und
nicht in der linken oberen Ecke des Browser-Fensters positioniert.
35
WWW und Multimedia: Graceful Degradability
Das dahinter stehende Prinzip lautet: für die verschiedenen Ausgabemedien sollen nicht ver-
schiedene Versionen einer Webseite erstellt werden, sondern alle Ausgabemedien werden mit
einem Dokument bedient.
Wenn der Browser Javascript, Flash, CSS unterstützt, dann soll die Website besonders schön,
interaktiv, praktisch sein. Wenn der Browser etwas nicht unterstützt, dann soll die Website
immer noch lesbar und benutzbar bleiben.
Das sieht zwar wie eine Überschrift aus – wenn das Bild geladen wird – die Information ist
aber für eine Suchmaschine oder ein Braille-Ausgabegerät nicht lesbar. Für diese wäre fol-
gender Code optimal:
<h1>Salzbuerger Nockerl</h1>
36
Uni Salzburg, SS 2008
Mit Image Replacement (siehe 3.3.3) kann man die optimale Darstellung für Suchmaschinen
und Braille Ausgabegeräte mit der optimalen Darstellung als Bild kombinieren.
<table cellspacing="1">
<tr>
<td><a href="home.html"><img src="1.gif" /></a></td>
<td><a href="news.html"><img src="2.gif" /></a></td>
<td><a href="portfotdo.html"><img src="3.gif" /></a></td>
<td><a href="contact.html"><img src="4.gif" /></a></td>
</tr>
</table>
Wieder gilt: die Information ist für eine Suchmaschine oder ein Braille Ausgabegerät nicht
lesbar. Für diese Ausgabemedien wären Links mit normalen Texten besser. Mit der in 3.3.2
beschriebenen Methode kann dieses Problem vermieden werden.
37
WWW und Multimedia: Graceful Degradability
• Was der Unterschied zwischen Javascript und Java ist. Welche Sprache für eine be-
stimmte Programmier-Problemstellung passend ist.
Weitere Informationsquellen
• jQuery Homepage. http://jquery. com/
Vertiefungsmöglichkeiten
Erforschen Sie die Dokumentation und die Tutorials von jquery. Alternativ: befassen Sie sich
statt dessen mit anderen Libraries wie: prototype, scriptaculous, dojo, yui (von Yahoo)
38
Uni Salzburg, SS 2008
Javascript ist eine Programmiersprache die in HTML eingebettet und vom Browser interpre-
tiert wird. Der Wirkungsbereich von Javascript ist auf das Browserfenster und das aktuelle
Dokument beschränkt — Sie können mit Javascript nicht die Festplatte löschen oder Excel
starten. Unter dem Namen Actionscript wird eine Variante von Javascript in Flash verwendet.
Es gibt noch eine zweite Programmiersprache mit sehr ähnlichem Namen: Java. Die beiden zu
verwechseln ist recht peinlich:
Javascript Java
Projekte Meist kurzfristige Projekt mit Alle, auch Großprojekte mit vielen
wenigen Personen „Mannjahren“
Die Verwechslung ist übrigens beabsichtigt: Im Jahr 1995 gab es einen großen Hype rund um
Java, Netscape wollte davon profitieren und nannte die neue Sprache „Javascript“.
Javascript wurde ursprünglich von Netscape erfunden, und dann von verschiedenen Herstel-
lern weiterentwickelt. Es war eines der Schlachtfelder im Browser-War: Microsoft und Net-
scape versuchten durch verschiedene Javascript-Implementierungen die Position des eigenen
Browsers zu verbessern; Webseiten im gegnerischen Browser unbrauchbar zu machen.
39
WWW und Multimedia: Hintergrund zu Javascript
Ein Beispiel: um die Breite des Browser-Fensters auszumessen gibt es mehrere Varianten:
Erst nachträglich gab es (partielle) Einigung auf Standards. Mit dem „Document Object Mo-
del“ (DOM) und Libraries wie Prototype oder jQuery hat Javascript nun einen Zustand er-
reicht, der die Programmierung wieder erträglich macht.
Lange Zeit waren kleine Javascript-Programme eine relative unabhängige Ergänzung für Web-
Applikationen. Ein Beispiel dafür wäre ein Javascript-Kalender der die Eingabe eines Datums
in ein Eingabefeld erleichtert.
Seit 2005 wir unter dem Schlagwort AJAX Javascript noch enger mit der serverseitigen Web-
applikation verzahnt: AJAX steht für asynchrones Nachladen von Teilen der Webseite über
Javascript.
Das Document Object Model (DOM) ist ein allgemeines Modell wie ein Dokument (die Websei-
te oder auch ein XML- Dokument) von einer objektorientierten Skriptsprache aus manipuliert
werden kann. Am 1. Oktober 1998 wurde das DOM eine offizielle W3-Empfehlung (recommen-
dation) in der Version 1. 0.
Das DOM einer Webseite kann man sich als Baum vorstellen, ähnlich der Ordnerstruktur im
Dateisystem. So ist in folgendem Beispiel der markierte <li>-Tag innerhalb des <ol>-Tags,
der <li>-Tag enthält wiederum einen <a>-Tag.
<html>
<body>
<p>Navigation</p>
<h1>Überschrift</h1>
<div class="intro">
<h2>Dies und Das</h2>
<ol>
<li><a href="#bla">erster Link</a></li>
<li><a href="#bla">zweiter Link</a></li>
</ol>
</div> ...
Wenn man mit Javascript irgendeinen Teil der Webseite verändern will
verändert man diesen Baum. Mögliche Veränderungen wären:
• Mache ein beliebiges Element des DOM unsichtbar (z. B. die gan-
ze Liste)
40
Uni Salzburg, SS 2008
<head>
<script>
function setcolor( c ) {
b = document.getElementById('farbfeld');
b.style.backgroundColor = c
}
</script>
<body id="farbfeld">
<h1>Farbwahl</h1>
<form>
<input type="button" value="Rot" onClick="setcolor('red')" />
<input type="button" value="Grün" onClick="setcolor('#0F0')" />
<input type="button" value="Blau" onClick="setcolor('blue')" />
</form>
</body>
In dieser Webseite ist an den vier markierten Stellen Javascript zu finden. Wie Sie sehen ist
Javascript sehr eng mit HTML und CSS verzahnt. Wenn Sie also eine bestehende Website war-
ten oder verändern sollen, müssen Sie mindestens den bestehenden Javascript-Code erkennen
können, um ihn nicht zu beschädigen — auch wenn Sie selbst nicht programmieren wollen.
Externe Javascript-Datei
Man kann Javascript-Programme in eigenen Dateien speichern, diese haben traditionell die
Endung . js. Wir werden eine Javascript-Library namens jQuery verwendet. Mit dem
<script>-Tag im Head des Dokuments wird die externe Javascript-Datei eingebunden:
Wird der <script>-Tag auf diese Weise (mit dem Attribut src) verwendet, dann darf er kei-
nen Inhalt zwischen <script> und </script> enthalten. Achtung: die Schreibweise ohne
Ende-Tag: <script src=“jquery“ /> funktionert nicht!
41
WWW und Multimedia: Javascript Beispiel
<h1>Selbstzerstörung</h1>
<script>
i=10;
while (i>0) {
document.write("<br>in " + i + " Millisekunden");
i--;
}
</script>
<p><strong>Peng!</strong>
Dieses Programm ist übrigens ein gutes Beispiel für ein veraltetes Javascript-Programm. Der
Befehl document. write(), der hier für die Ausgabe verwendet wird, wurde durch das DOM
größteteils ersetzt. Also: nicht nachahmen.
Die “Javascript-in-einer-URL”- Schreibweise ist in HTML-Seiten nicht sehr sinnvoll, da sie für
Browser ohne Javascript-Fähigkeit die Links unbrauchbar macht. Aber Sie werden diese Me-
thode vielleicht noch von Flash aus verwenden.
Die Begriffe Ereignis und Event sind Fachbegriffe in der Programmierung von Benutzer-
schnittstellen: Ein Event ist etwas was die UserIn tut, und was das Programm wahrnehmen
kann. z. B. die UserIn klickt auf einen Button oder bewegt die Maus über einen bestimmten
Bereich der Webseite. Wenn man eine grafische Oberfläche programmiert (egal ob in
HTML+Javascript oder in Flash+Actionscript oder in Java) spricht man von ereignisgesteuerter
Programmierung.
In HTML+Javascript funktioniert das so: Bei manchen HTML-Tags gibt es Attribute die mit on
beginnen (onClick, onSubmit, onLoad,. . . ), als Wert enthalten diese Attribute das Java-
script-Programm das ausgeführt werden soll.
42
Uni Salzburg, SS 2008
<h1>Überraschung</h1>
<form>
<input type="button"
value="Start"
onClick="alert('Ihre Festplatte wurde gelöscht')">
</form>
Ein Button wird angezeigt. Erst wenn der Button gedrückt wird, wird das Event onClick aus-
gelöst, und damit das Javascript-Programm gestartet. Es erzeugt ein Popup-Fenster mit dem
Text „Ihre Festplatte wurde gelöscht“ (aber es löscht nicht wirklich die Festplatte!). Das Pop-
up-Fenster muß erst mit einem Klick auf den OK-Button geschlossen werden, bevor weitere
Arbeit mit dem Browser möglich ist.
<body onLoad=". . . Das Programm wird ausgeführt, nachdem die ganze Seite
"> geladen + fertig dargestellt ist
<a href=". . . " Das Programm wird ausgeführt wenn die Maus über den Link
onMouseOver=". . . bewegt wird (auch: onMouseOut)
">
<input type="button" Das Programm wird ausgeführt wenn auf den Button geklickt
onClick=". . wird. Das Programm muß true oder false zurückgeben um
"> anzuzeigen ob der Link wirklich geöffnet werden soll.
<form onSubmit=". . . Das Programm wird ausgeführt wenn der Einsende-Knopf des
"> Formulars betätigt wird, aber bevor die Daten wirklich ge-
sendet werden. Das Programm muß true oder false zurück-
geben um anzuzeigen ob das Formular wirklich abgesendet
werden soll.
<input onChange=". . Das Programm wird ausgeführt wenn der Inhalt des Eingabe-
"> feldes verändert wurde
Eine vollständige Liste der Events, und eine vollständige Auflistung welcher HTML-Tag mit
welchem Event kombiniert werden kann, finden Sie in selfhtml 6.
6
http://de.selfhtml.org/javascript/sprache/eventhandler.htm
43
WWW und Multimedia: Javascript Beispiel
Javascript hat eine ähnliche Schreibweise wie die Sprachen aus der C-Familie (C, C++, Java,
Perl, PHP): Anweisung wird mit einem Strichpunkt (Semikolon) getrennt, Blöcke werden mit
geschwungenen Klammern gebildet. Im Beispiel sehen Sie eine Funktions-Definition mit zwei
Anweisungen:
function setcolor( c ) {
b = document.getElementById('farbfeld');
b.style.backgroundColor = c
}
In andere Programmiersprachen müssen Variablen deklariert werden (ein Datentyp für die
Variable wird festgelegt) und initialisiert werden (ein erster Wert wird in die Variable gespei-
chert). In Javascript ist das nicht nötig, wenn eine Variable zum ersten Mal im Programm
erwähnt wird, wird sie vom Interpreter angelegt und mit dem Wert undefined belegt.
Die folgenden Beispiele können Sie direkt in FireBug in der Console ausprobieren wie in
Abbildung 20 gezeigt: Wenn Sie einen Ausdruck eintippen wird er ausgewertet, mit dem Be-
fehl console. log( … ) können Sie direkt auf die Console schreiben.
Variablen in Javascript können Zahlen, Strings, Arrays, Objekte enthalten – der Interpreter
trennt Variablen nicht nach verschiedenen Datentypen:
a = 10; // Zahl
a = "ein text"; // String
a = [1,2,3]; // Array
a = { datum: "2008-04-13", titel: "Lehrveranstaltung WWW+MM", ort: "T03" }; // Objekt
Eine Besonderheit von Javascript ist, dass auch Funktionen in Variablen gespeichert werden
können:
a = function ( x ) { return x * x };
a(2);
44
Uni Salzburg, SS 2008
Die Kontrollstrukturen if, while, for funktionieren wie in den anderen C-ähnlichen Spra-
chen.
Damit sollten erfahrene ProgrammiererInnen den Einstieg schaffen, als Referenzwerk kann
wieder selfhtml dienen.
4.4 jQuery
Warnhinweis: jQuery definiert eine Funktion mit Namen $ und ein Objekt mit Namen $. Das
tun auch andere Javascript-Libraries, z. B. Prototype.
Die Library jQuery 7 unterstützt das Prinzip der „graceful degradability“ – auch ohne Javas-
cript werden Webseiten mit jQuery immer noch gut verwendbar sein. Der HTML-Code bleibt
dabei „javascript-frei“, jQuery wird nur an einer Stelle, im Head des Dokuments eingebaut:
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
// Your code here
});
</script>
jQuery verwendet die Schreibweise der CSS-Selektoren um Nodes des DOM auszuwählen:
Falls auf das ‚more’ geklickt wird soll das ‚extra’ erscheinen bzw. verschwinden:
$("p .more").click(function() {
$(this).next(".extra").toggle();
});
7
http://jquery.com
45
WWW und Multimedia: jQuery
this ist innerhalb der Funktion der angeklickte Tag. Mit dem jQuery-Befehl next() wird nach
dem nächsten Geschwister-Tag, bzw. hier nach dem nächsten Geschwister-Tag mit der Klasse
extra gesucht. Auf den gefundenen Tag wird der befehl toggle() angewandt.
Hier noch einmal das vollständige Beispiel wie es in der Vorlesung gezeigt wurde:
<html>
<head>
<title>jQuery Beispiel</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("p .more").show();
$("p .extra").hide();
$("p .more").click(function() {
$(this).next(".extra").toggle();
});
});
</script>
<style>
.more { color: blue; display: none; }
</style>
</head>
<body>
<p>Es war einmal <span class="more">mehr</span>
<span class="extra">eine Prinzessin mit namen Erbse</span></p>
<p>die lebte <span class="more">mehr</span>
<span class="extra">in einem grosses schloss</span></p>
<p>und aß <span class="more">mehr</span>
<span class="extra">am liebsten Erdbeeren</span></p>
</body>
</html>
Lesen Sie dieses Beispiel ganz genau: Was passiert wenn Javascript aktiviert ist? Hier eine
vereinfachte Darstellung der Seite falls Javascript nicht aktiviert ist:
<html>
<head>
<title>jQuery Beispiel</title>
<style>
.more { display: none; }
</style>
</head>
<body>
<p>Es war einmal <span class="more">mehr</span>
<span class="extra">eine Prinzessin mit namen Erbse</span></p>
<p>die lebte <span class="more">mehr</span>
<span class="extra">in einem grosses schloss</span></p>
<p>und aß <span class="more">mehr</span>
<span class="extra">am liebsten Erdbeeren</span></p>
</body>
</html>
<html>
<head>
<title>jQuery Beispiel</title>
</head>
<body>
<p>Es war einmal <span class="extra">eine Prinzessin mit namen Erbse</span></p>
46
Uni Salzburg, SS 2008
47
WWW und Multimedia: jQuery
• Dass Flash-Grafiken als Vektoren gespeichert werden, und somit skalierbar sind. Dass
über die Zeitleiste in Flash Animationen erstellt werden können.
• Dass PHP eine freie Skriptsprache ist, die am Webserver interpretiert wird. Dass nur
der Output von PHP an den Browser übertragen wird, also der Source-Code niemals
lesbar ist.
• Dass es sehr viele Programmiersprache gibt die alternativ zu PHP am Webserver ver-
wendet werden können.
48
Uni Salzburg, SS 2008
Gruppe Flash
• Dass die Bühne keine Begrenzung darstellt, dass Sie auch außerhalb der Bühne zeich-
nen können.
• Dass Symbole zur Wiederverwertung von Formen dienen und Speicherplatz sparen.
Dass die Möglichkeit zur „Gruppierung“ existiert aber kaum verwendet wird.
• Was ein Bewegungstween ist; Dass nur ein einziges Symbol getweent werden kann.
• Dass die Illusion von Bewegung auch durch die Bewegung eines Hintergrundbildes er-
zeugt werden kann. Dass die Illusion von Raumtiefe durch perspektivische Verkleine-
rung/Vergrößerung erzeugt werden kann.
Weitere Informationsquellen
• Flash Homepage
• Flashforum.de
Vertiefungsmöglichkeiten
Erforschen Sie die verschiedenen Möglichkeiten Flash in eine Webseite einzubinden: Fenster-
füllend, als Hintergrundbild, verzerrt, nicht verzerrt, … Importieren Sie Vektorgrafiken und
Bitmap-Grafiken, erstellen Sie Animationen mit den importieren Grafiken. Experimentieren
Sie mit dem Formtween.
49
WWW und Multimedia: jQuery
Gruppe PHP
Weitere Informationsquellen
• PHP Homepage mit Dokumentation in verschiedenen Sprachen: http://php.net
• Smarty http://smarty.php.net/
Vertiefungsmöglichkeiten
Lesen Sie in der Dokumentation über String-Funktionen, Array-Funktionen, Filesystem-
Funktionen.
Installieren Sie Smarty und lösen Sie die Übungsaufgaben alternativ mit Smarty.
50
Uni Salzburg, SS 2008
Bei Verwendung von serverseitiger Programmierung wird auch – wie bei statischen Webseiten
– HTML an den Browser geliefert. Dieser HTML-Code ist nun aber der Output eines Program-
mes. So hat z.B. bei einem Online-Shop wie Amazon jedes Buch eine eigene Webseite.
Diese Seite wurde aber nicht „von Hand“ erstellt, sondern die Daten zum Buch (Titel, Auto-
rInnen, ISBN) liegen in einer Datenbank, und werden bei einer Browser-Anfrage von einem
(PHP-)Programm ausgelesen.
Außerdem gibt es eine Vorlage wie der HTML-Code der gesamten Webseite aussehen solle, ein
sogenanntes Template. Die Daten werden mit dem Template zu einer vollständigen HTML-
Seite kombiniert, und an den Browser gesandt wie in Abbildung 21 gezeigt.
Neben PHP werden viele andere Sprachen am Webserver verwendet. Da der Output dabei
immer HTML ist kann der Client nicht erkennen, welche Sprache verwendet wurde. Der Quell-
text des Programmes wird nie im Browser sichtbar.
51
WWW und Multimedia: Einstieg in PHP
Ein sehr einfaches Beispielprogramm in PHP gibt „Hallo Welt“ aus und zeigt (mit dem Befehl
phpinfo) viele Informationen über den Webserver und die PHP Installation an:
<?php
echo "Hallo Welt";
phpinfo();
?>
Um dieses Programm zu testen, brauchen Sie einen Browser und einen Webserver.
Die Alternative zur Distribution XAMPP wäre, jeden Teil einzeln zu besorgen: Apache von
httpd.apache.org, PHP von php.net, und MySQL von MySQL.com herunter laden, die
drei Pakete separat installieren, und dann versuchen, sie richtig zu kombinieren. Das ist viel
mehr Arbeit.
Man kann Apache und MySQL auf zwei Arten starten: als Windows-Dienst oder über das in
Abbildung 23 gezeigte XAMPP Control Panel.
52
Uni Salzburg, SS 2008
Abbildung 23: XAMPP Control Panel zum Starten und Stoppen von Apache
Abbildung 24: Dienste von Windows: MySQL und Apache2 sind schon gestartet
Webserver stoppen
Egal wie man Apache gestartet hat: erst mit einem Browser kann man die Funktionstüchtig-
keit des Webservers wirklich testen. Als URL verwendet man http://localhost/.
Achtung: Apache und MySQL brauchen viel Hauptspeicher: Apache ca. 40 MB, MySQL fast 400
MB. Wer gleichzeitig mit vielen anderen Programmen arbeitet und nur wenig Hauptspeicher
im Computer hat, sollte also MySQL und Apache nach Gebrauch wieder beenden.
53
WWW und Multimedia: Einstieg in PHP
Wenn Sie eine PHP-Programm in einer Datei mit der Endung .html oder .htm speichern wird
es nicht vom Webserver interpretiert, sondern direkt an den Browser gesandt. Der Browser
zeigt den Code aber nicht an, erst mit Ansicht->Quelltext kann man den Code sehen wie in
Abbildung 26 gezeigt.
Wenn Sie die richtige Dateiendung verwenden (.php) und die Seite über einen Webserver
betrachten (z.B. http://localhost) kann immer noch ein Fehler im PHP-Programm auftre-
ten. Die Fehlermeldung des Interpreters wird dann im Browser angezeigt wie in Abbildung 27
gezeigt.
Zum Abschluß nun das funktionierende Programm bei einem funktionierenden Testlauf:
54
Uni Salzburg, SS 2008
Mit Ansicht->Quelltext kann man nun im Browser nur noch den HTML-Code sehen, niemals
aber den PHP-Quellcode!
PHP Versionen
Der Befehl phpinfo() liefert Informationen zur PHP-Installation. In Abbildung 28 sehen Sie
z.B. dass PHP in der Version 5.0.5 installiert ist.
Zwischen den verschiedenen PHP-Versionen gibt es eklatante Unterschiede, PHP ist nicht
aufwärts-kompatibel. Wenn ihr Webspace-Vermieter auf eine neue PHP-Version umstellt,
müssen Sie eventuell den Code Ihres Programmes anpassen.
In der PHP-Dokumentation sind diese Unterschiede bei den einzelnen Befehlen aufgeführt,
z.B. bei der Funktion array_fill() ist in der Dokumentation angegeben:
Die Funktion existiert also seit PHP 4 Version 4.2.0 und auch in PHP 5.
Besonders im Bereich der Objektorientierung (Objekte, Klassen, etc.) gab es große Verände-
rungen von PHP 4 auf PHP 5. Falls Sie objektorientiert programmieren wollen, sollten Sie auf
jeden Fall PHP 5 verwenden!
Dokumentation
Die Dokumentation zu PHP finden Sie auf http://php.net.
55
WWW und Multimedia: Einstieg in PHP
Abbildung 29: Eine Funktion in der Doku auf php. net nachschlagen
Hilfreich sind auch die Kommentare der UserInnen am Ende jeder Doku-Seite. Hier finden Sie
oft Erklärungen zu einzelnen Features, die in der Dokumentation ‚vergessen’ wurden, oder
Anwendungsbeispiele:
Abbildung 30: Kommentare von UserInnen in der Doku auf php. Net
Die Dokumentation kann man auch herunterladen und lokal installieren, dann enthält sie aber
nicht die Kommentare.
56
Uni Salzburg, SS 2008
07 </head><body>
08 <h1>PHP-Beispiel</h1>
09 <?php
10 $entfernung = 296;
11 $h = 2;
12 $min = 40;
13 $zeit = $h + $min / 60;
14 $kmh = $entfernung / $zeit;
15 echo "<p>$entfernung km in $h:$min sind $kmh km/h</p>\n";
16 if( $kmh > 130 ) {
17 echo("<p><b>Das ist zu schnell!</b></p>\n");
18 }
19 ?>
20 </body>
21 </html>
Der Quellcode besteht hier aus einem HTML-Dokument, in dem in Zeile 09 bis 19 PHP einge-
bettet ist. In den Zeilen 10 bis 14 werden nur Berechnungen durchgeführt, diese Zeilen haben
keine Auswirkung auf das resultierende HTML-Dokument. In den Zeile 15 und 17 wird mit der
echo() – Funktion ein Output erstellt. Der PHP-Interpreter fügt diesen Output an der Stelle
ein, wo der PHP-Code war; das Ergebnis sieht wie folgt aus:
Welcher Teil des Dokuments statisch war und welcher von PHP berechnet wurde ist für den
Browser nicht erkennbar.
Ein PHP-Dokument kann mehrere Einbettungen enthalten, dabei können sogar Kontrollstruk-
turen in einem anderen Teil fortgesetzt werden:
<?php
$i = 0;
while ( $i < 22 ) {
?>
<?php
$i++;
}
57
WWW und Multimedia: Einstieg in PHP
?>
In PHP wird diese Schreibweise oft verwendet, es gibt aber eine alternative Schreibweise für
die Kontrollstrukturen, die besser zu unseren Lesegewohnheiten paßt: Statt der öffnenden
geschwungenen Klammer wird ein Doppelpunkt geschreiben, das Ende der Schleife wird mit
einem eigenen Schlüsselwort (endwhile, endif, endfor) markiert:
<h1>Wilde Mischung</h1>
<?php
$i = 0;
while ( $i < 22 ) :
?>
<?php
$i++;
endwhile;
?>
Bei größeren Projekten empfehle ich aber auf jeden Fall die Trennung von Programm-Logik
und Darstellung und die Verwendung von Templates wie z.B. Smarty 8. Der erste Schritt in
diese Richtung wäre, die Berechnung an den Anfang der Datei zu stellen.
Welcher Teil schon als Ausgabe zählt und in das HTML-Dokument eingebettet wird ist dabei
wieder eine Abwägungsfrage, auf die es keine fixe Antwort gibt.
8
http://smarty.php.net/
58
Uni Salzburg, SS 2008
</head><body>
<h1>PHP-Beispiel</h1>
<?php
echo "<p>$entfernung km in $h:$min sind $kmh km/h</p>";
if( $kmh > 130 ) {
echo("<p><b>Das ist zu schnell!</b></p>");
}
?>
</body>
</html>
Das ist nur möglich weil die Variablennamen mit einem besonderen Zeichen gekennzeichnet
sind. Es gibt in PHP eine zweite Schreibweise für Strings die keine Variablen erlaubt:
Variablen in PHP müssen nicht deklariert oder initialisiert werden. PHP unterscheidet zwi-
schen den Datentypen boolean, integer, float, string, array, object, resource und
NULL. In einer Variable können nacheinander verschiedene Datentypen gespeichert werden,
die Variable selbst hat also keinen Typ! Je nach verwendeten Operatoren und Funktionen
werden die Typen konvertiert:
<?php
$foo = "0"; // $foo is a string with one character (ASCII 48)
$foo += 2; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a float (3.3)
$bar = 5 + "10 Little Piggies"; // $bar is an integer (15)
$baz = 5 . "10 Small Pigs"; // $baz is a longer string "510 Small Pigs"
?>
Die Addition mit + interpretiert beide Summanden als Zahl. Falls ein Summand ein String ist,
wird am Beginn des Strings nach einer Zahl gesucht und diese verwendet. Der Punkt-Operator
fügt Strings zusammen und interpretiert seine beiden Operanden als Strings.
Arrays in PHP können auf ähnliche Art verwendet werden wie in C, C++, Java, Perl und ver-
hält sich auf den ersten Blick auch wie erwartet:
$foo[2] = 2008;
$foo[3] = 2009;
$foo[0] = "Halli";
$foo[1] = "Hallo";
for($i=0;$i<count($foo);$i++) {
echo("Der $i. Wert im Array ist $foo[$i]<br />");
}
59
WWW und Multimedia: Einstieg in PHP
Auf den zweiten Blick sind Arrays in PHP aber wesentlich komplexer: nicht nur Integers sind
als Index zulässig, sondern auch Strings, es handelt sich also um assoziative Arrays in denen
ein Schlüssel mit einem Wert assoziert wird.
Mit der foreach Schleife kann man Schlüssel und Wert auslesen. Dabei wird offenbar, dass
die Reihenfolge des Einfügens ins Array erhalten geblieben ist: Die Schlüssel-Wert-Paare sind
im Array weiterhin geordnet!
$foo[2] = 2008;
$foo[3] = 2009;
$foo[0] = "Halli";
$foo[1] = "Hallo";
Mit der Schreibweise $foo[] kann ein Wert unter der kleinsten (noch nicht verwendet) Inte-
ger-Zahl als Schlüssel gespeichert werden:
$foo[2] = 2008;
$foo[3] = 2009;
$foo[0] = "Halli";
$foo[1] = "Hallo";
$foo['dies'] = "etwas Nahes";
$foo['das'] = "etwas Fernes";
$foo[] = "das Nächste";
Das Array in PHP ist also ein wesentlich komplexerer Datentyp als ein Array in anderen Pro-
grammiesprachen – es verbindet Eigenschaften von Arrays mit denen von assoziativen Arrays.
Ein Array zu sortieren ist entsprechend kompliziert, es gibt entsprechend eine ganze Reihe
von Sortier-Funktionen. Sie finden diese im Abschnitt „Array-Funktionen“ der PHP-Doku.
Funktionen
function foo($arg_1, $arg_2 = "Euro")
{
$a = 1 * 2;
return $a . $arg_2;
}
$x = foo(10);
$y = foo(20, "Pfund");
Die Schreibweise von Funktionen inklusive Argumentliste und Rückgabewert ist leicht ver-
ständlich. Eine Falle für erfahrene ProgrammiererInnen ist das Scoping von globalen Varia-
blen:
$pi = 3.141;
function inhalt($radius)
{
return $radius * $radius * $pi;
}
$r = 10;
60
Uni Salzburg, SS 2008
$a = inhalt($r);
Dieses Programm funktioniert nicht wie erwartet, da innerhalb einer Funktion kein Zugriff auf
außerhalb definierte Variablen möglich ist! Die Variable $pi ist in der Funktion nicht sichtbar,
statt dessen wird mit einer neuen Variable $pi mit default-Wert 0 gerechnet.
Mit dem Keyword global wird die Variable „in die Funktion eingeladen“ und ist dann auch
innerhalb der Funktion sichtbar, lesbar und veränderbar.
$pi = 3.141;
function inhalt($radius)
{
global $pi;
return $radius * $radius * $pi;
}
$r = 10;
$a = inhalt($r);
Ausgenommen von dieser Regelung sind die sogenannten „superglobals“, das sind Variablen,
die auf jeden Fall sichtbar sind. Drei davon sind allgemeiner Natur und werden hier erläutert,
die restlichen dienen speziell zur Kommunikation mit dem Webbrowser und werden erst spä-
ter behandelt.
$_ENV Dieses Array enthält die Umgebungsvariablen (je nach Betriebssystem ver-
schieden).
In diesem Kapitel wird beschreiben, wie PHP mit Dateien und Ordnern arbeiten kann und wel-
che Web-spezifischen Probleme dabei auftreten.
61
WWW und Multimedia: Einstieg in PHP
Zugriffsrechte
Achtung: Auf einem UNIX-Webserver läuft das PHP-Programm unter dem Usernamen des Web-
servers, nicht unter Ihrem Namen! Dies wird relevant, sobald ein PHP-Programm eine andere
Datei lesen oder (über-)schreiben soll.
Beim Upload der Dateien auf den Webserver mit einem FTP oder SFTP-Programm sollten Sie
auch die Möglichkeit haben, die Zugriffsrechte anzusehen bzw. zu verändern. Abbildung 31
zeigt links die Darstellung der Zugriffsrechte in der Shell, rechts das Verändern der Zugriffs-
rechte mit Dreamweaver.
Eine kurze Wiederholung der UNIX-Zugriffsrechte: Es gibt drei Rechte (Lesen, Schreiben, Aus-
führen) und drei Gruppen von Usern die unterschieden werden (Eigentümer, Gruppe, Jeder).
Im Terminal werden diese Rechte als Buchstaben angezeigt: r steht für Lesen, w für Schrei-
ben, x für Ausführen.
Das PHP-Programm läuft nicht unter Ihrem Usernamen, sondern unter dem Usernamen des
Webservers. D.h. für das PHP-Programm gelten die Zugriffsrechte „für alle“.
Mit den PHP-Funktionen is_readable() und is_writable() können Sie testen, ob das Pro-
gramm Lese- bzw. Schreibrechte auf eine bestimmte Datei hat.
Ordner auflisten
Um herauszufinden, welche Dateien (und Unter-Ordner) sich in einem Ordner befinden, ver-
wendet man die Funktion glob. (Achtung: die Funktionen opendir, readdir, closedir gibt
es auch, die sind aber komplizierter zu verwenden)
<?php
$alle = glob("*");
foreach( $alle as $file ) { // forach-Schleife über Werte, Schlüssel ignorieren!
echo "<br>Datei $file gefunden.\n";
}
?>
62
Uni Salzburg, SS 2008
Im Output des Programmes werden nicht nur Dateien angezeigt, sondern auch Ordner. Mit
den Funktionen is_dir() und is_file() könnte man herausfinden ob ein Ordner oder eine
Datei vorliegt.
Die Funktion glob kann — ähnlich wie das DOS-Kommand dir oder das UNIX-Kommando ls —
mit verschiedenen Mustern suchen:
<?php
$alle = glob("*.jpg");
foreach( $alle as $file ) {
echo "<br>Bild $file gefunden.\n";
}
?>
Der Rückgabewert von glob ist ein Array. Mit array_merge kann man mehrere Arrays zusam-
menfügen zu einem langen Array und mit asort die Werte alphabethisch sortieren:
$jpg = glob("bilder/*.jpg");
$gif = glob("bilder/*.gif");
$alle_bilder = array_merge($jpg, $gif);
asort( $alle_bilder )
Datei lesen
Um eine Datei von PHP aus zu benutzen, muß man sie mit der Funktion fopen öffnen. Man
erhält einen „handle“ mit dem man sich im Weiteren auf diese Datei bezeihen kann.
Achtung: die Pfadangabe zur Datei ist in UNIX-Schreibweise mit Slash zu schreiben, nicht in
Windows-Schreibweise mit Backslash, also:
Da die Datei zum Lesen geöffnet wurde, kann man nun mit fgets eine Zeile aus der Datei
lesen. „Eine Zeile“ bedeutet hier: bis ein Zeilenumbruch in der Datei gefunden wird.
$zahl = fgets($handle);
Bei längeren Dateien wird fgets meist in einer Schleife verwendet, um alle Zeilen aus der
Datei zu lesen. Nach Gebrauch muß man die Datei wieder schließen:
fclose($handle);
Datei (über-)schreiben
Beim Schreiben wird als zweites Argument von fopen der Buchstabe „w“ übergeben:
63
WWW und Multimedia: Einstieg in PHP
Leider ist das Leben aber nicht so einfach: sowohl beim Lesen als auch beim Schreiben von
Dateien kann viel schief gehen. Existiert die Datei, aus der ich lesen will, überhaupt? Darf ich
in die Datei, in die ich schreiben will überhaupt schreiben? Um diese Fragen zu beantworten
gibt es Funktionen is_readable, is_writable und die Rückgabewerte der verschiedenen
schon gezeigten File-Funktionen. So liefert fwrite entweder die Anzahl der geschriebenen
Bytes oder FALSE als Status-Code zurück:
Bevor Sie beginnen mit PHP Dateien zu (über-)schreiben, zu löschen oder zu verschieben ein
Warnhinweis: Es wird ernst. Hier gibt es keinen Papierkorb. Wenn Ihr PHP-Programm eine
Datei löscht, dann ist diese Datei sofort und unwiederbringlich weg.
64
Uni Salzburg, SS 2008
Die im Alltag übliche Bezeichnung „Flash“ wird für unterschiedliche Dinge angewandt:
1. Das Programm „Adobe Flash“, also die Authoring-Umgebung mit der Flash-
Applikationen erstellt werden.
4. Das Plugin, das zusätzlich zum Webbrowser installiert sein muß, um das Abspielen von
Flash-Applikationen im Webbrowser zu ermöglichen.
5.3.1 Vektorgrafik
Flash war und ist das am weitesten verbreitete vektorbasierte Bild-Format im Web. Eine swf-
Datei, die nur Vektor-Grafiken (keine importierten Bitmaps, Audio- oder Video-Daten) ent-
hält, ist von der Datenmenge her sehr klein. Vektorgrafik heißt auch, dass die in Flash ge-
zeichneten Bilder skalierbar sind – also in verschiedenen Größen ohne Qualitätsverlust ver-
wendbar ist.
Abbildung 32: Beispiel Flash: Stern als Standbild, Stern als einfach Animation
65
WWW und Multimedia: Flash oder nicht Flash?
Ein Beispiel zur Veranschaulichung der geringen Datenmengen im Vergleich zu gif und jpg:
Abbildung 32 zeigt einen fünfzackigen Stern, einfärbig gelb mit schwarzer Kontur, einmal als
Standbild, einmal als einfache Animation mit sich drehendem Stern:
Standbild Animation
200 x 200 Pixel 1. 729 Byte 3. 830 Byte 138 Byte 410 Byte
600 x 600 Pixel 5. 466 Byte 15. 780 Byte 138 Byte 410 Byte
Abbildung 33: Dateigrößen der swf-Dateien in Abbildung 32 im Vergleich zu gif und jpg
Beachten Sie, dass dieselbe swf-Datei für 200x200 und für 600x600 Pixel verwendet wurde!
Die swf-Datei ist ohne Mehrdaten skalierbar.
Abbildung 34 veranschaulicht die Möglichkeit der Skalierung ohne Qualitätsverlust. Sie zeigt
ein Flash-Movie im Vergleich zu einem gif. Beide Bilder wurden von 200x200 auf 600x600, also
auf die 3-fache Höhe und Breite, bzw. 9-fache Fläche skaliert:
Alternative SVG
SVG („scalable vector graphics“), ein XML-basiertes, vom w3c entwickeltes und empfohlenes
Format, ist ebenfalls – wie der Name sagt – skalierbar.
Das SVG-Plugin, das zur Darstellung notwendig ist, ist jedoch wenig verbreitet. SVG hatte
eine Zeit lang die Unterstützung von Adobe, um es als Konkurrenz zu Flash zu etablieren. Seit
Adobe Flash aufgekauft hat ist das hinfällig.
9
Auf Englisch manchmal als „swiff“ ausgesprochen
66
Uni Salzburg, SS 2008
5.3.2 Animation
Mit Flash lassen sich einfache Filme erstellen und sehr datensparend abspeichern. Neben der
klassischen „Bild für Bild“-Animation gibt es in Flash zwei Arten der Unterstützung für die
Erstellung einer Animation: den Bewegungstween und den Formtween.
10
Abbildung 35: (historisches ) Beispiel für eine „Bild-für-Bild“-Animation
Um aus einzelnen Bildern ein animiertes Gif zusammen zu stellen, können Sie verschiedene
Grafikprogramme verwenden, u. a. Animation Shop, Adobe Fireworks. Das Ergebnis ist jeweils
eine einzige Gif-Datei.
Animierte gifs werden von einem größeren Teil der Browser im Internet korrekt dargestellt als
Flash-Animationen. Aber: Sie haben meist eine größere Dateigröße. Bei der Entscheidung
zwischen Animiertem gif und Flash müssen Sie diese beiden Argumente gegeneinander abwä-
gen.
5.3.3 Interaktion
Das Web ist an und für sich schon eine interaktive Technologie: die NutzerIn ist eben nicht
nur LeserIn der Seite, sie kann Links anklicken (oder auf eine andere Art aktivieren) um zu
navigieren, sie kann Formulare ausfüllen und einsenden. Links sind von Anfang an, Webformu-
lare seit HTML Version 2.0 (1995) Teil des HTML-Standards.
10
Im Jahre 1995 stellte die Firma Netscape zwei Technologien für Animation vor: Server Push
und Client Pull. Die hier gezeigte Animation war das erste Beispiel. Beide Technologien wer-
den übrigens von aktuellen Browser-Versionen nicht mehr unterstützt, sie wurden von ani-
mierten gifs verdrängt.
67
WWW und Multimedia: Flash oder nicht Flash?
Barrierefreiheit = Accessability
Eine negative Eigenschaft von interaktiven Webseiten kann die verminderte Barrierefreiheit
(Accessability) sein: Diese fortgeschrittene Interaktion ist nur mit grafischen Webbrowsern
möglich, nicht aber mit textbasierten, solchen mit besonders kleinem Display, solchen die die
Seite nicht grafisch sondern auditiv darstellen (vorlesen) oder als Braille-Schrift ausgeben.
Interaktion bedeutet also für viele UserInnen eine interessantere Website, und für einige Use-
rInnen eine nicht mehr lesbare, nicht mehr zugängliche Website.
Alternative Javascript
Interaktive Webseiten können Sie auch mit CSS und Javascript gestalten.
Flash hat im Vergleich zu Javascript weniger Kompatibilitäts-Probleme: es gibt nur ein Flash-
Plugin, es wird von der Firma Adobe herausgegeben und funktioniert in allen Browsern, auf
den Plattformen Windows, Mac OS und Linux gleich. Alte Flash-Filme funktionieren bei der
Betrachtung mit einem neuen Flash-Plugin immer.
Die Entscheidung zwischen Javascript und Flash für eine interaktive Website ist also eine Ent-
scheidung zwischen proprietärer Technologie und Stabilität auf der einen Seite, und einer
standardisierten, aber potentiell instabileren Technologie auf der anderen Seite.
68
Uni Salzburg, SS 2008
Mit einem einfachen Link zu einer Audio- oder Video-Datei kann diese Datei zum Download
und zum Abspielen angeboten werden. Das funktioniert meist sehr gut, es gibt dabei kaum
etwas zu gestalten.
Mit den HTML-Tags <EMBED> oder <OBJECT>, können Dateien jedes Formats direkt in ein
HTML-Dokument eingebunden werden. Die Darstellung übernimmt dann ein Browser-Plugin.
Da auf den verschiedenen Computern im Web verschiedene Plugins installiert sind, ist es
nicht möglich vorherzusagen wie die Darstellung genau erfolgen wird. Diese Methode ist also
fehleranfälliger (bei fehlendem Plugin) und bietet trotzdem kaum mehr Gestaltungs-
möglichkeiten als ein Link.
Mit dem Format SMIL, das vor allem von Real Player unterstützt wird, können Audio- und Vi-
deo-Dateien (synchronisiert) abgespielt werden. Direkt in einer Webseite kann SMIL aber
nicht dargestellt werden.
Die bisher angeführten Fähigkeiten von Flash sollten Sie nicht falsch verstehen. Flash ist für
gewisse Aufgabenstellungen sehr gut oder am Besten von allen aktuellen Technologien ge-
eignet. Das heißt nicht, dass Flash für jede Aufgabenstellung geeignet ist.
Sie müssen bei jedem Projekt einzeln entscheiden (und argumentieren können), ob ein Ein-
satz von Flash sinnvoll oder störend wäre.
69
WWW und Multimedia: Zeichnen in Flash
Bedenklich ist der Einsatz von Flash insbesondere bei Informationsseiten und bei Seiten mit
hohem Anspruch an Barrierefreiheit. Alle Flash-Seiten haben das Problem, dass Sie in Such-
maschinen nicht gefunden bzw. nicht einzelne Seiten annavigiert werden können.
Argumente für den Einsatz von Flash sind die oben angeführten Fähigkeiten.
In manchen Fällen mag es sinnvoll sein, eine Flash-Version und eine Flash-lose Version einer
Website zu entwickeln. Aber Achtung: dieser Ansatz bedeutet die doppelte Arbeit in der Ent-
wicklung, und wieder doppelte Arbeit in der Wartung der Site. Es besteht die Gefahr, dass die
„zweite Version“ nie fertig entwickelt wird und/oder nicht gewartet wird. Das ist dann
schlimmer, als nur eine Version zu haben.
Werkzeuge
Bühne
Eigentschaften Hinterbühne
Die Bühne ist Ihr erster Orientierungspunkt. Auf der Bühne zeichnen Sie. Anders als in ande-
ren Programmen können Sie in Flash auch „neben“ der Bühne zeichnen. Ein Beispiel für einen
sinnvollen Einsatz: ein Auto soll „durch das Bild fahren“. Sie zeichnen es also neben der Büh-
ne, und erstellen dann die Animation die das Auto durch die Bühne bewegt.
Wie in den meisten Grafik-Programmen finden Sie am linken Rand des Programms die Werk-
zeug-Leiste. Aber Achtung: Die Werkzeuge funktionieren etwas anders als in anderen Grafik-
programmen.
Im unteren Teil des Fensters können Sie die Eigenschaften des jeweils auf der Bühne mar-
kierten Objekts verändern. Das Eigenschafts-Fenster funktioniert also wie im Programm
70
Uni Salzburg, SS 2008
Dreamweaver. Je nachdem welches Objekt markiert ist, sieht das Eigenschafts-Fenster auch
unterschiedlich aus.
Am rechten Rand des Programms können verschiedene Fenster eingeblendet werden. Über
das Menü „Fenster“ können Sie Fenster einblenden und ausblenden. Wenn Sie eine gute Zu-
sammenstellung von Fenstern gefunden haben, können Sie diese Zusammenstellung mit dem
Menüpunkt FENSTER Æ BEDIENFELDSATZ SPEICHERN unter einem Namen abspeichern.
Dieser Teil der GUI ist komplex. Zuerst werden Sie nur die Ebenen verwenden; sie funktionie-
ren ähnlich wie in anderen Grafik-Programmen. Die Zeitleiste verwenden Sie zur Erstellung
von Animationen und für verschiedene Zustände von interaktiven Applikationen.
Die Menüs von Flash entsprechen den üblichen Konventionen. Besonderes Augenmerk sollten
Sie dem Menü MODIFIZIEREN schenken. Im Zweifelsfall finden Sie hier alles was Sie brauchen
und nicht finden können.
Kommen wir nun zur Vorstellung des speziellen Zeichen-Modells von Flash. Für eine detaillier-
tere Beschreibung der verschiedenen Werkzeuge verwenden Sie bitte die Flash-Hilfe.
Beim Erstellen des Kreises passen Füllung und Kontur ineinander. Im Verlauf der weiteren
Arbeit können Sie beide trennen. Dabei werden Sie bemerken, dass Flash sich nicht wie ande-
re vektororientierte Programme verhält: Wenn Sie die Füllung auf die Kontur legen, und dann
noch einmal verschieben, dann wird die Kontur „abgebissen“ wie Abbildung 40 zeigt.
71
WWW und Multimedia: Zeichnen in Flash
Abbildung 40: Die Füllung hat einen Teil der Kontur gelöscht
Dieses Verhalten von Flash können Sie gezielt für die Gestaltung einsetzen. Wenn Sie dieses
Zeichnungsmodell nicht verwenden wollen, können Sie auf das Objektzeichnungsmodell um-
schalten. Dann werden beim Zeichnen z. B. eines Kreises die Füllung und die Kontur automa-
tisch gruppiert. Die dabei entstandene Gruppe erkennt man an der blauen Box, die angezeigt
wird, sobald die Gruppe selektiert wird. Von einer Gruppe wird nichts „abgebissen“, das in
Abbildung 40 gezeigte Phänomen tritt nicht auf.
Abbildung 41: der rechte Kreis wurde mit dem Objektzeichnungsmodell gezeichnet
Kontur bearbeiten
Mit dem Auswahlwerkzeug (Tastaturkürzel: V) können Sie die Kontur verformen wie in
Abbildung 42 gezeigt.
72
Uni Salzburg, SS 2008
Die Unterscheidung zwischen Kontur und Füllung zieht sich durch die
gesamte Werkzeugleiste: Es gibt ein Werkzeug um eine Kontur zu
Zeichnen (das Freihandwerkzeug, Tastaturkürzel Y) und eines um
eine Füllung zu zeichnen (das Pinselwerkzeug, Tastaturkürzel B)
Mit dem Tintenfasswerkzeug (Tastaturkürzel S) können Sie um eine Füllung eine neue Kontur
legen. Mit dem Farbeimerwerkzeug (Tastaturkürzel K) können Sie in eine Kontur eine Füllung
einfüllen, wie in Abbildung 45 gezeigt.
73
WWW und Multimedia: Zeichnen in Flash
Diese Umwandlung hat auch zur Folge, dass andere Arten der Verformung möglich sind. In
Abbildung 46 sehen Sie auch den Effekt des Auswahlwerkzeuges auf die Kontur und die Fül-
lung, die aus der Kontur entstand. Einmal wird die Linie verbogen, einmal wird die Begren-
zung der Fläche verformt.
Hilfe
Abschließend noch einmal der Hinweis auf die Flash Hilfe, und auf die vielen Bücher, die die
Handhabung von Flash im Detail erklären. Aber es gilt natürlich: Wirklich erlernen können Sie
das Zeichnen mit Flash nur durch die praktische Arbeit mit dem Tool.
Eingabegeräte
Falls Sie ein Zeichenbrett - insbesondere ein druckempfindliches Zeichenbrett - besitzen,
können Sie dieses für die Arbeit mit Flash verwenden.
Was Sie auf jeden Fall verwenden können und sollten ist die Tastatur: Die
Verwendung der Tastaturkürzel zum Wechseln des Werkzeuges beschleunigt
die Arbeit mit Flash enorm, da Sie den Maus-Zeiger dadurch auf der Bühne
belassen, und schneller Zeichnen können. Links sehen Sie die Tastaturkürzel
aller Werkzeuge.
5.4.3 Flash-Symbole
Ein wichtiges Ziel beim Erstellen eines Flash-Films ist es, die swf-Datei so klein wie möglich
zu halten. Eine größere swf-Datei bedeutet längere Wartezeit für die BenutzerInnen.
Die Art mit der Sie bisher gezeichnet haben erzeugt „Originale“, und Originale tragen erheb-
lich zur Dateigröße der swf-Datei bei. Abbildung 47 zeigt ein Beispiel für einen Flash-Film der
18 sehr ähnliche Originale enthält.
74
Uni Salzburg, SS 2008
Die swf-Datei dieses Beispiels ist 1.148 Bytes groß. (Mit einem Stern war sie übrigens 108
Bytes groß).
Symbole
Flash bietet eine Alternative an, die Platz spart: Der Stern wird in ein „Symbol“ verwandelt.
Dieses Symbol kann nun wiederholt im Film verwendet werden, braucht aber wesentlich we-
niger Speicherplatz. In diesem Beispiel: 347 Byte statt 1.148 Byte. Wird ein Symbol öfter wie-
der verwendet, verstärkt sich der Effekt, Abbildung 48 zeigt die Mess-Ergebnisse für 18 und
54 Wiederholungen eines Originals bzw. eines Symbols.
11
Konkret: bei Verwendung von MovieClip-Symbolen
75
WWW und Multimedia: Zeichnen in Flash
Bei der Arbeit in Flash können Sie Originale und Symbole einfach unterscheiden: Wenn Sie ein
Original selektieren wird es „gepunktet“ dargestellt. Wenn Sie ein Symbol auswählen, er-
scheint ein Kasten rund um das Symbol. und der „Registrierungs-Punkt“ des Symbols wird als
keines Plus angezeigt (meist mit einem Kreis darum, dem „Transformation-Punkt“). Siehe
Abbildung 50.
Instanzen
Von einem Symbol kann es mehrere Kopien auf der Bühne geben, diese nennt man dann In-
stanzen des Symbols. Die Instanzen können sich vom Symbol unterscheiden: sie können eine
andere Größe haben, sie können gedreht und/oder gespiegelt sein, sie können umgefärbt
bzw. transparent bzw. heller oder dunkler sein.
Verwenden Sie zum Verändern einer Instanz das Werkzeug „Frei transformieren“ (Tasta-
turkürzel Q) und das Eigenschafts-Fenster.
Instanznamen
Die einzelnen Instanzen können einen Namen erhalten. Dies geschieht im Eigenschafts-
Fenster, wie links in Abbildung 51 gezeigt. Rechts in der Abbildung 51 sehen Sie einen Aus-
schnitt aus dem Fenster FILM-EXPLORER. Hier sieht man, dass sich auf der Bühne vier Instan-
zen der Symbols Smilie befinden, die vier Instanzen haben verschiedene Namen: maria_mc,
hansi_mc, peter_mc und susi_mc.
76
Uni Salzburg, SS 2008
Alle Symbole, die in einem Flash-Film enthalten sind, finden Sie in der Bibliothek. Die Biblio-
thek ist ein Fenster, das Sie mit dem Tastaturkürzel STRG-L oder mit F11 anzeigen können.
Options-Menü
der Bibliothek
Im Bibliotheks-Fenster sollten Sie mindestens: Ein Symbol umbenennen können, die Eigen-
schaften eines Symbols ändern können, und (mit dem Optionsmenü) herausfinden können,
welche Symbole gar nicht im Film verwendet werden.
Symbol bearbeiten
Mit einem Doppelklick auf ein Symbol in der Bibliothek können Sie das Symbol bearbeiten.
Achtung: Das ist nicht das Gleiche wie eine Instanz auf der Bühne zu bearbeiten. Ob Sie gera-
de die Instanzen auf der Bühne bearbeiten oder ein bestimmtes Symbol bearbeiten, erkennen
Sie an der Bearbeitungsleiste oberhalb der Ebenen:
Abbildung 53: Bearbeiten des Dokuments vs. Bearbeiten des Symbols „Stern“
Das linke Bild in Abbildung 53 zeigt die Bearbeitung der Haupt-Zeitleiste. Das rechte Bild
zeigt die Bearbeitung des Symbols „Stern“ aus der Bibliothek. Mit derselben Bearbeitungs-
leiste können Sie auch zurück zum Bearbeiten des Dokuments wechseln, entweder mit dem
„Zurück“-Pfeil oder indem Sie auf „Szene 1“ klicken.
Wenn Sie das Symbol verändern, verändern Sie damit auch alle Instanzen des Symbols wie
Abbildung 54 zeigt: werden dem „SmilieMC“ in der Bibliothek Haare gezeichnet, dann wach-
sen allen „SmilieMC“-Instanzen auf der Bühne auch Haare.
77
WWW und Multimedia: Zeichnen in Flash
Die Bibliothek können Sie auch zum Austausch von Daten zwischen verschiedenen fla-Dateien
verwenden: Sie können zwei fla -Dateien im Flash-Editor öffnen und zwischen den beiden
Bibliotheken wechseln wie in Abbildung 55 gezeigt.
Bibliothek aus-
wählen
Bibliothek vonplayers.fla
Nun können Sie aus der „fremden“ Bibliothek ein Symbol auf die Bühne ziehen. Es wird dabei
automatisch in die Bibliothek Ihrer fla-Datei übernommen.
Eine Besonderheit tritt auf, wenn das Symbol aus der anderen Bibliothek den gleichen Namen
hat wie ein Symbol der eigenen Bibliothek. Es kann jeden Namen in der Bibliothek nur einmal
geben. Flash zeigt den in Abbildung 56 gezeigten Dialog an, um dieses Dilemma zu lösen.
Abbildung 56: Dialog zum Bibliothekskonflikt – Symbol mit gleichem Namen wird eingefügt
Wenn Sie das vorhandene Element ersetzten, bedeutet das, dass alle Instanzen des Symbols
ersetzt werden. Wenn Sie es nicht ersetzen wird das Symbol aus der anderen Bibliothek nicht
eingefügt.
78
Uni Salzburg, SS 2008
Wenn Sie also an einem größeren Projekt - vielleicht mit mehreren Personen - arbeiten, dann
sollten Sie bereits zu Beginn die Namen der wichtigen Symbole festlegen. Dieser Vereinbarung
über die Symbol-Namen und die Symbol-Hierarchie kommt die gleiche Bedeutung zu wie der
Vereinbarung über Dateinamen und Ordner in einem HTML-Projekt.
Flash unterteilt die Zeit in einzelne Bilder (auf Englisch: Frames). Für den gesamten Flash-
Film wird einmal die Bildrate (Bilder pro Sekunde / Frames per second) festgelegt, der Stan-
dardwert ist 12 Bps. In einem Flash-Film mit 12 Bps gibt es keine weitere Unterteilung der
Zeit, es kann also in diesem Film keine Animation geben, bei der 25 verschiedene Bilder in
einer Sekunde angezeigt werden.
Die Zeitleiste ist das Werkzeug mit dem Sie Animationen erstellen.
In Abbildung 57 sehen Sie in der linken Hälfte den Zustand der Zeitleiste in einem neuen
Flash-Dokument, die Zeitleiste enthält nur ein Bild. In der rechten Hälfte sehen Sie die Zeit-
leiste einer kleinen Animation.
Abspielkopf
Am oberen Rand der Zeitleiste sind die Bilder numeriert, hier von 1 bis 10. Ein roter senk-
rechter Strich repräsentiert den Abspielkopf, der von links nach rechts von Bild zu Bild läuft.
Sie können den Abspielkopf durch einen Klick auf ein bestimmtes Bild setzen, die Bühne zeigt
dann den Zustand zu diesem Zeitpunkt, in diesem Bild an.
Schlüsselbild
In der Zeitleiste müssen Sie zwei Arten von Bildern unterscheiden: ein Schlüsselbild (markiert
durch einen Kreis) kann eine Veränderung enthalten, ein normales Bild (ohne Kreis) bringt
79
WWW und Multimedia: Animation in Flash
keine Veränderung gegenüber dem vorhergehenden Bild. Wie Sie in Abbildung 57 auch sehen
können, kann jede Ebene eine andere Folge von Bildern und Schlüsselbildern enthalten.
Voraussetzung für die Arbeit mit der Zeitleiste ist, dass Sie die Bedeutung der Anzeige in der
Zeitleiste lesen können.
Abbildung 58: Beispiele für Schlüsselbilder, leere Schlüsselbilder und normale Bilder
Das erste Bild in Abbildung 58 ist grau und enthält einen schwarzen Kreis. So wird ein Schlüs-
selbild mit Inhalt dargestellt. Bild 2 ist weiß und enthält einen weißen Kreis, es ist ein leeres
Schlüsselbild. Das heißt: der Inhalt, der in Bild 1 dargestellt wurde, verschwindet hier. Bild 3
ist ein leeres, normales Bild, es gibt also keine Veränderung zu Bild 2 (nix bleibt nix). Bild 4
ist ebenfalls ein leeres, normales Bild, da es aber das letzte normale Bild vor einem Schlüs-
selbild ist, wird hier ein weißes Rechteck dargestellt (angezeigt wird immer noch nix).
Bild 5 ist wieder ein Schlüsselbild mit Inhalt, hier wird also ein neuer Inhalt dargestellt. Bild 6
ist ein normales Bild, der Inhalt von Bild 5 wird also weiter angezeigt. Bild 7 ist ein leeres
Schlüsselbild, der Inhalt verschwindet also. Danach gibt es keine Veränderung mehr bis zum
Ende des Films bei Bild 10.
Wenn Sie nun wissen wollen, welche Inhalte jeweils dargestellt werden, müssen Sie den Ab-
spielkopf entsprechend setzen, und eventuell noch Ebenen ein- und ausblenden um herauszu-
finden, welche Elemente sich auf welcher Ebene befinden.
Abbildung 59: Das Ende der Zeit – in zwei Ebenen der Zeitleiste
Am „Ende der Zeit“ verschwinden alle Elemente auf Ebenen, die keine Bilder mehr enthalten.
In Abbildung 59 ist im Bild Nr. 20 also der Inhalt von Ebene 1 und Ebene 2 schon verschwun-
den, nur Ebene 3 ist noch sichtbar.
80
Uni Salzburg, SS 2008
Die Zeitleiste ist die Grundlage für die verschiedenen Arten der Animation in Flash.
Die Bild-für-Bild Animation entspricht im Arbeitsaufwand und in den Möglichkeiten dem Dau-
menkino: Sie zeichnen jedes Bild einzeln.
Unterstützung beim Zeichnen bietet die Darstellung mit Zwiebelschalen. Dabei werden wie in
Abbildung 61 gezeigt die Bilder vor und nach dem aktuellen Bild auch dargestellt, aber etwas
abgeschwächt.
Aktivieren der
Darstellung
Abbildung 61: Erstellung einer Bild-für-Bild Animation mit Hilfe der Zwiebelschalen-Darstellung
81
WWW und Multimedia: Animation in Flash
Die Einzelbilder für die Bild-für-Bild Animation können z.B. aus einem Video entnommen sein,
wie im Projekt „Bujaka“ von Herrmann, Hohnheiser und Scherr (MMA2005), das im Abbildung
62 gezeigt.
Im klassischen Trickfilm gab es eine Arbeitsteilung: Der Chef zeichnet einige wichtige Key-
frames. Die Hilfszeichner zeichnen die Bilder dazwischen (auf Englisch: „in between“). Diese
Leute nannte man „Inbetweener“. Diesen Job übernimmt jetzt Flash für Sie. Die automatisch
erstellen Bilder nennt man immer noch „Tween“.
5.5.3 Bewegungstween
Der Bewegungstween dient nicht nur der Bewegung, er kann auch für die Veränderung von
Größe, Drehung, Verzerrung, Alpha (Grad der Transparenz), Farbton eines Symbols eingesetzt
werden.
Abbildung 63 zeigt einen Bewegungstween, der wirklich für Bewegung eingesetzt wird. Auf
der Abbildung sind die drei Positionen des Symbols gleichzeitig angezeigt: ganz links für
Bild 1, das erste Schlüsselbild. Ganz rechts für Bild 15, das zweite Schlüsselbild. Die Position
bei Bild 8 wird durch den Tween automatisch berechnet.
Abbildung 63:Bewegungstween
Zur Erstellung eines Bewegungstweens brauchen Sie eine Ebene die nur ein Symbol enthält,
mit zwei Schlüsselbildern. Zwischen diesen beiden Schlüsselbildern kann dann auf zwei Arten
82
Uni Salzburg, SS 2008
ein Tween erstellt werden, wie in Abbildung 64: Entweder durch Rechts-Klick in die Zeitleiste
oder im Eigenschaften-Fenster.
Ob die Erstellung des Tweens gelungen ist, können Sie an der Zeitleiste und im Eigenschafts-
fenster erkennen, wie in Abbildung 65 gezeigt.
Wie anfangs erwähnt kann der Bewegungstween auch für die Veränderung von Alpha (Grad
der Transparenz), Farbton, Größe, Drehung und Verzerrung eines Symbols eingesetzt werden,
wie in Abbildung 66.
83
WWW und Multimedia: Animation in Flash
Perspektive
Da in Abbildung 66 das Symbol dunkler wird, an Größe zunimmt, und sich im Sichtfeld nach
unten bewegt, entsteht der Eindruck einer perspektivischen Bewegung, der rote Kreis scheint
näher zu kommen. Da Flash nicht wirklich dreidimensional modelliert, muß man die Tricks der
Darstellung von 3d in 2d anwenden.
Kamera
Dazu gehört auch der Einsatz von verschiedenen „Kameraperspektiven“. Wird ein Hinter-
grundbild vergrößert, entsteht der Eindruck eines Zooms. Wird ein Hintergrundbild bewegt,
entsteht der Eindruck einer Kamerafahrt. Sie müssen also die Wirkung einer Kamera nachbau-
en, es gibt in Flash kein Kamera-Objekt.
Wenn Sie eine Folge von Schlüsselbildern erstellen, und dazwischen jeweils Bewegungs-
tweens, dann erhalten Sie eine flüssige Bewegung entlang gerader Strecken, wie in der linken
Hälfte von Abbildung 67 gezeigt. Wenn die Bewegung nicht entlang gerader Strecken, sondern
entlang einer Kurve erfolgen soll benützt man einen Pfad, wie in der rechten Hälfte von
Abbildung 67 gezeigt.
Abbildung 67: Bewegungstween mit mehreren Schlüsselbilder, Bew.Tween entlang eines Pfades
84
Uni Salzburg, SS 2008
Für eine Pfadanimation müssen Sie oberhalb der Ebene mit dem Ball eine „Pfadebene“ anle-
gen (rechte Maustaste). Die Pfadebene darf nur eine Kontur enthalten, keine Füllung und
kein Symbol, diese Kontur ist dann der Pfad. Das Symbol im Start-Schlüsselbild und End-
Schlüsselbild müssen mit dem Pfad verbunden werden, wie in Abbildung 68 gezeigt.
Das Symbol mit der Maus an seinem Registrierungspunkt nehmen, und zum Pfad ziehen. Der
Registrierungspunkt springt automatisch auf den Pfad, man kann dann das Symbol nur noch
entlang des Pfades bewegen.
Drehung
Mit einem Bewegungstween können Sie ein Symbol auch drehen. Verwenden sie das Werkzeug
„frei transformieren“ um den „Transformationspunkt“ (ein kleiner Kreis) zu positionieren. Er
befindet sich über dem Registrierungspunkt des Symbols, wenn er noch nicht verschoben
wurde. In Abbildung 69 wurde der Transformierungspunkt außerhalb des Symbols positioniert.
Im Eigenschaftsfenster können Sie die Drehung genau spezifizieren, falls die automatische
Einstellung nicht funktioniert.
Geschwindigkeit
Die Geschwindigkeit der Bewegung können Sie durch Setzen von Zwischen-Schlüsselbildern
steuern. Die Geschwindigkeit ergibt sich als Verhältnis zwischen zurückgelegtem Pfadab-
schnitt und verflossener Zeit.
85
WWW und Multimedia: Animation in Flash
Die Animationsmöglichkeiten in Flash — verglichen Maya oder Aftereffects — sind sehr einge-
schränkt, aber im Vergleich zu animierten Gifs ein großer Fortschritt.
86
Uni Salzburg, SS 2008
• Dass die URL eines PHP-Programms eine öffentliche Schnittstelle ist: fremde Men-
schen werden mit böse Absicht verschiedene Parameter ausprobieren! Fremde Men-
schen werden in guter Absicht unerwartete Parameter eingeben um neue, nicht be-
dachte Funktionen zu erzielen.
• Dass Actionscript die Syntax von Javascript verwendet, aber zusätzlich Klassen und In-
terfaces (ab AS3) anbietet. Dass die verschiedenen Versionen von Actionscript sehr
unterschiedlich sind, und sich „alter“ und „moderner“ Code nicht kombinieren läßt.
87
WWW und Multimedia: Animation in Flash
Gruppe Flash
• Dass ein MovieClip eine eigene Zeitleiste hat, die im selben Takt wie die Hauptzeitlei-
ste läuft, aber von dieser unabhängig ist.
• Dass Sie den Actionscript-Code in Flash an Bildern und Button- und MovieClip-
Instanzen befestigen könne (aber nicht unbedingt sollen).
• Buttons erstellen mit denen Sie bestimmte MovieClips anhalten und starten können.
Gruppe PHP
• In einem PHP-Programm Daten von einem Web-Formular entgegen nehmen und prü-
fen bevor sie weiter verarbeitet werden.
• Ein Webformular so gestalten, dass „richtige“ Eingaben erhalten bleiben wenn Feh-
lermeldungen angezeigt werden
• Mit PHP CSS, XML, Bilder und Variablen für Flash erzeugen
88
Uni Salzburg, SS 2008
6.2.1 MovieClips
Ein MovieClip ist ein Symbol mit einer eigenen Zeitleiste, also ein kleiner „Film-im-Film“. In
der Bibliothek wird neben dem Vorschaubild des MovieClips ein Play-Button dargestellt, mit
dem man diesen Film ablaufen lassen kann.
Es ist üblich 12 den MovieClips in der Bibliothek einen Namen zu geben, der auf MC endet, im
Beispiel in Abbildung 71 sind das AlgeMC, FischMC und OktopusMC.
Sie können ein Grafiksymbol im nachhinein in ein MovieClip umwandeln, mittels eines Rechts-
Klicks auf die Zeile des Symbols in der Bibliothek.
Das betrifft aber nur neue Instanzen, die sie erstellen. Alle Instanzen die sich schon auf der
Bühne befinden müssen Sie händisch auf MovieClip umstellen (im Eigenschafts-Fenster)
Die Wirkung der Hauptzeitleiste und der Zeitleiste im MovieClips kann man kombinieren. Dies
sei am Beispiel eines Fisches erläutert, der von links nach rechts schwimmt, und dabei mit
den Flossen schlägt. Die „grobe“ Bewegung findet auf der Hauptzeitleiste statt, wie in
Abbildung 72 gezeigt: Im Zeitraum von 60 Bildern bewegt sich der Fisch 500 Pixel weit.
89
WWW und Multimedia: MovieClips und Buttons
Abbildung 72: Bewegung der MovieClip Instanz auf der Hauptbühne (Hauptzeitleiste)
Die Bewegung der Flossen findet in der Zeitleiste des MovieClips statt, wie in Abbildung 73
gezeigt. Diese Zeitleiste enthält 12 Bilder.
Während des 60 Bilder langen Tweens auf der Hauptzeitleiste werden die 12 Bilder des Mo-
vieClips 60 / 12 = fünf mal wiederholt. Abbildung 74 versucht das darzustellen.
Da in diesem Fall die Rechnung genau aufgeht (5 mal 12 = 60) sieht die Bewegung bei jedem
Durchlauf genau gleich aus. Geht die Rechnung nicht auf (z.B. 11 Frames im MovieClip), dann
sieht die Bewegung erst nach vielen Durchläufen wieder gleich aus.
12
Um genau zu sein: es ist üblich eine Namens-Konvention zu verwenden. Wie die Konvention
aussieht ist von Team zu Team verschieden. Wichtig ist, daß alle Leute in einem Projekt sich
daran halten.
90
Uni Salzburg, SS 2008
− Was sich über die Bühne bewegt, ist ein MovieClip (nicht zwei oder drei)
− Bewegung eines Objekts unabhängig machen von Veränderung eines Objekts: die „in-
nere“ Zeitleiste des MovieClips wird für innere Bewegungen verwendet wie blinzeln,
mit den Flossen schlagen, Beine bewegen. Die „äussere“ Zeitleiste wird für die Bewe-
gung quer über die Bühne verwendet.
Wie in Kapitel 5.4.5 beschreiben können Sie Symbole – also auch MovieClips – von einer .fla
Datei in eine andere Übernehmen. In einem Projekt könnte das so verwendet werden:
1. Es soll ein Spiel in Flash programmiert werden. Die Programmiererin und der De-
signer vereinbaren welche Spielfiguren es geben wird, welche MovieClips dafür
nötig sind, wie die genauen Namen in der Bibliothek lauten werden und wie groß
die MovieClips sein werden. z.B. MausMC (50x50px), KatzeMC (100x50px), KasMC
(10x10px).
2. Die Programmiererin erstellt das Spiel mit Dummies – sehr groben Versionen der
MovieClips.
3. Der Designer zeichnet die Figuren in Illustrator und exportiert sie für Flash. Dabei
vergibt er die richtigen Namen für die Bibliothek.
4. Die Programmiererinnen kopiert die fertigen MovieClips ins Spiel, dabei werden
die Dummies überschrieben.
6.2.2 Buttons
Bisher waren alle Ihre Flash-Werk nur „Filme“. Nach dem Start liefen sie jedes Mal
gleich von Anfang bis zum Ende ab. Mit Buttons können Sie ihren Film jetzt inter-
aktiv machen: die UserIn kann durch anklicken von Buttons den Ablauf des Filmes
beeinflussen – stoppen, starten, Alternativen auswählen.
Die korrekte Übersetzung des englischen Begriffes „Button“ wäre „Schaltfläche“. Dieser
Begriff entspricht zwar der DIN-Norm, ist aber nicht sehr gebräuchlich. Deswegen wird in
diesem Skriptum der gängigere Betriff „Button“ verwendet.
Ein Button in Flash braucht nicht so auszusehen wie ein Button der Betriebssystem-Oberfläche
(wie in Abbildung 75 gezeigt). Das Aussehen von Buttons in Flash ist völlig frei gestaltbar.
91
WWW und Multimedia: MovieClips und Buttons
Buttons in Flash
Ein Button ist eine Art Mini-MovieClip mit nur vier Frames mit den Namen Auf, Darüber,
Drücken und Aktiv. Der Frame Auf wird dargestellt, wenn die Maus sich nicht über dem
Button befindet. Ist die Maus über dem Button wird der Frame Darüber dargestellt. Wird
dabei der Maus-Button gedrückt wird Drücken dargestellt.
Wenn man also die Maus über die Schatzkiste in Abbildung 76 bewegt, dann öffnet sie sich.
Größe
Die Größe des Buttons ist frei festlegbar. Sie können also einen kleinen 50 mal 20 Pixel But-
ton ebenso erstellen, wie einen Button der die gesamte Bühne überdeckt. Schwierigkeiten
macht das nur, wenn mehrere Buttons den gleichen Raum auf der Bühne beanspruchen. Es
kann immer nur ein Button „die Maus bemerken“, wie in Abbildung 77 gezeigt.
Abbildung 77: Drei Buttons mit Überlappung, nur eine ist jeweils aktiv
Im mittleren Bild ist die Maus an einer Position an der sich der runde und der quadratische
Button überlappen. Der quadratische Button ist weiter vorne, deswegen „bemerkt“ nur er
die Maus, und geht in den Darüber Zustand.
Aktiver Bereich
Der Frame Aktiv entscheidet darüber, in welchem Bereich der Button auf die Maus reagiert.
In Abbildung 76 ist dieser aktive Bereich gleich dem sichtbaren Button. Das muß aber nicht so
sein. In Abbildung 78 ist der aktive Bereich sehr klein: nur das Schloss der Schatzkiste. Hier
öffnet sich die Schatzkiste also nur, wenn man auf das Schloss klickt.
92
Uni Salzburg, SS 2008
Abbildung 78: Aktiver Bereich eines Buttons, der sich vom sichtbaren Bereich unterscheidet
Abbildung 79 zeigt eine Mischung aus verschiedenen Ansichten des Flash Editors und des Flash
Players (So werden Sie das nie am Bildschirm sehen). In der linken Hälfte der Abbildung se-
hen Sie einen Ausschnitt aus dem Film Explorer (Tastenkürzel [ALT]-[F3]) des Flash Editors.
Hier sehen Sie einen Überblick über die Buttons und Textfelder des Flash-Films. In der rech-
ten Hälft der Abbildung sehen Sie einerseits den ganzen Film im Flash Player, und als kleinen
Ausschnitt darüber gelegt einen Teil der Bühne aus dem Flash-Editor.
Im Film-Explorer können Sie sehen, dass sich vier Instanzen des Buttons mit dem Namen
KnopfBtn auf der Bühne befinden, die Instanzen tragen die Namen a_btn, b_btn, c_btn
und d_btn. Ein blauer Pfeil in der Abbildung weist von a_btn zu der Darstellung von a_btn
auf der Bühne. Wie sie sehen können ist der Button rechteckig, und scheint einen gelben
Kreis und den Buchstaben A zu beinhalten.
93
WWW und Multimedia: Einstieg in Actionscript
Ebenfalls im Film-Explorer können Sie vier Textfelder erkennen. Ein blauer Pfeil verweist
vom Textfeld mit dem Buchstaben B auf die Darstellung dieses Textfeldes auf der Bühne.
Was für die UserIn also wie vier Schalter mit Beschriftung aussieht besteht aus viermal dem-
selben Button und vier verschiedenen Beschriftungen. Der Buchstabe A gehörte auch nicht
wirklich zu a_btn, sondern befindet sich auch in einem separaten Textfeld.
6.3.1 Entwicklungsumgebung
Für EinsteigerInnen die das direkte Eintippen des Codes scheuen gibt es Unterstützung durch
die Flash Umgebung: Verhaltensweisen, Werkzeugleiste für Aktionen, Automatische Code-
formatierung, Tooltipps. Diese Hilfsmittel werden hier in einem ersten Schritt vorgestellt.
Fenster VERHALTEN
1) Auf der Bühne wurde der Button mit dem Instanznamen weiter_btn ausgewählt. Im
VERHALTEN -Fenster wird das in der Kopfzeile angezeigt.
2) Mit dem Plus-Zeichen in der linken oberen Ecke des VERHALTEN-Fensters wurde die
Aktion ANSTEUERN UND ABSPIELEN BEI BILD eingefügt. Dadurch entstand die Zeile im
Fenster.
3) Mit einem Klick auf die linke Hälfte der Zeile wurde das Ereignis festgelegt, bei dem
die Aktion ausgeführt wird.
94
Uni Salzburg, SS 2008
Fenster AKTIONEN
Abbildung 80: Fenster VERHALTEN erzeugt auch Actionscript, siehe Fenster AKTIONEN
Betrachten Sie die Abbildung 80 genau: Woran können Sie erkennen wo der Code positioniert
ist? Welches Ereignis den Code auslöst? Welcher Befehl ausgeführt wird?
95
WWW und Multimedia: Einstieg in Actionscript
Werk-
zeugleiste
Popup-
Menü
Optionen
Ansichts-
Code
Navigator
Skript-
weiter_btn
Tooltipps
Wenn Sie Code direkt in das Code-Fenster eintippen erhalten Sie noch Unterstützung durch
Tooltipps, wie in Abbildung 82 gezeigt: Mit einem Dropdown-Menü bietet Flash Ergänzungen
zum Code an (unterer Teil der Abbildung), mit einem kleinern Popup Informationen zum aus-
gewählten Befehl (oberer Teil der Abbildung).
Achtung: der #include Befehl ist ungewöhnlich: am Ende der Zeile darf kein Semikolon/
Strichpunkt stehen!
#include "mehrcode.as"
96
Uni Salzburg, SS 2008
6.3.2 Hilfe
Das Flash-Fenster HILFE können Sie mit dem Tastenkürzel [F1] öffnen. Wenn der Cursor sich
im AKTIONEN-Fenster befand, wird in der Flash-Hilfe automatisch eine passende Seite zum
aktuellen Befehl angezeigt. In Abbildung 83 sehen Sie die Seite in der Flash-Hilfe zum Thema
on().
Versions-
Hinweise
Pseudo-Code.
Parameter
Links zu weite-
ren Seiten in
der Flash-Hilfe
Beispiele
Das Lesen der Flash-Hilfe braucht einige Übung. Es wird hier sehr viel Programmier-
Fachvokabular verwendet, dass man sich erst aneignen muß. Besonders gefährlich am An-
fang: Unter der Überschrift Verwendung findet man „Pseudo-Code“, das ist eine Mischung
aus echtem Computerprogramm und Teilen, die man erst ersetzen muß. Diesen Code kann
man also nicht direkt ins AKTIONEN-Fenster kopieren! Fertige, kopierbare Beispiele finden Sie
am Ende der Hilfe, unter der Überschrift Beispiel.
on(mausereignis) {
// Anweisungen hier
// einfügen
}
Das kursiv gestellte Wort mausereignis ist nicht wörtlich gemeint, hier muß man erst den
Namen eines Mausereignisses einfügen. Welche Mausereignisse es gibt ist unter der Über-
schrift Parameter nachzulesen, ein Mausereignis wäre zum Beispiel release.
97
WWW und Multimedia: Einstieg in Actionscript
Zeilen die mit zwei Schrägstrichen // beginnen sind Kommentare, kein Actionscript-Code. An
dieser Stelle muß man statt der Kommentar-Zeile einen oder mehrere Befehle einfügen. Ein
korrektes Actionscript-Programm mit dem on()-Befehl könnte also so aussehen:
on(release) {
play();
}
All diese Hilfsmittel erleichtern das Eintippen des Codes, ersetzen aber nicht das Verständnis!
Wenn Sie programmieren wollen, müssen Sie den Code verstehen – bis zum letzten Punkt und
Komma. Denn jeder Punkt und jedes Komma hat eine Bedeutung.
Die Frage „Wo ist der Code“ bezieht sich hier nicht auf das VERHALTEN- oder das AKTIONEN-
Fenster. Unabhängig davon auf welche Art Sie den Code erstellen: der Code ist immer ent-
weder einem bestimmten Bild einer Zeitleiste, oder einer bestimmten Instanz eines Symbols
(nur MovieClip oder Button) zugeordnet, wie in Abbildung 84 gezeigt.
Abbildung 84: Actionscript auf Bildern der Zeitleiste oder auf Instanzen auf der Bühne
Ist Actionscript-Code auf einem Bild der Zeitleiste gespeichert, dann wird dieses Faktum als
kleiner Buchstabe „a“ in der Zeitleiste dargestellt. Ob an einer (Button- oder MovieClip-)
Instanz auf der Bühne Actionscript-Code gespeichert ist kann man nicht auf den ersten Blick
erkennen.
Abbildung 85: Der Skriptnavigator In Abbildung 85 ist derzeit das erste Bild auf der
Ebene zwei ausgewählt, hier kann gerade Code
eingetippt werden. Insgesamt ist an zwei verschiedenen Stellen Code gespeichert: auf dem
13. Bild der Hauptzeitleiste in Ebene 2. Und auf dem Button mit dem Instanz-Namen wei-
ter_btn, der sich auf der Hauptzeitleiste befindet.
98
Uni Salzburg, SS 2008
6.3.4 Fehlersuche
Auch für die tollsten Programmier-Profis gilt: die meiste Zeit verbringen sie mit der Fehler-
suche. Das Erfinden und Eintippen des Programmcodes geht sehr schnell, die Fehlersuche
hingegen braucht Zeit. Auch wenn man in einem Tag ein geniales Programm erschaffen hat
das ein wichtiges Problem löst und vielen Leuten Freude bereiten wird: Die meiste Zeit dieses
Tages hat man mit den Programmfehlern verbracht.
Deswegen braucht man fürs Programmieren eine hohe Frustrationstoleranz. Wenn das Pro-
gramm dann endlich funktioniert, von vielen Leuten verwendet wird, wunderbare Arbeit lei-
stet – dann bin ich als Programmiererin schon mit dem nächsten Projekt, und den nächsten
Fehlern beschäftigt.
Kleine Schritte
Beim Schreiben von Programmen geht man in vielen kleinen Schritten vor: ein paar Zeilen
programmieren, das Programm testen, ein paar Zeilen programmieren, wieder testen. Durch
diese Vorgangsweise schafft man es oft fehlerfreie Programme zu schreiben. Und schleicht
sich doch ein Fehler ein, so findet man ihn schnell – er kann ja nur im letzten Schritt dazu
gekommen sein, man weiß also genau in welchen Programmzeilen er sich versteckt.
Fehlermeldung lesen
Wenn ein Fehler auftritt sollte man alle Informationen die Flash zur Verfügung stellt nutzen.
Abbildung 86 zeigt eine Fehlermeldung des Actionscript Interpreters.
Man liest diese Fehlermeldungen sorgfältig von Oben nach Unten. Bei der in Abbildung 86
gezeigten Fehlermeldung befindet sich die wichtigste Information am Ende der ersten Zeile:
'{' erwartet
Im Programm fehlt also eine öffnende geschwungen Klammer. Wo fehlt sie? In Szene 1, auf
Ebene 1, in Bild 1, in der zweiten Zeile des Actionscript Programmes. Nun können Sie den
Film-Explorer verwenden um ganz gezielt das Problem anzusteuern:
99
WWW und Multimedia: Einstieg in Actionscript
Abbildung 87: Gezieltes Ansteuern des Fehlers mit dem Film Explorer
Falls im Ausgabe-Fenster mehrere Fehler angezeigt werden sollten Sie immer den ersten Feh-
ler beheben, und das Programm erneut testen – oft sind die weiteren Fehler so genannte
„Folgefehler“, die sich nur aus der Verwirrung nach dem ersten Fehler ergeben.
Programmzeilen auskommentieren
Wenn Sie vermuten, dass eine Programmzeile falsch ist, oder sie die Programmzeile vorüber-
gehen nicht brauchen, dann können Sie Kommentarzeichen davor setzen:
// x = 4;
Jetzt ist die Zeile „auskommentiert“, sie wird also nicht ausgeführt. Wenn man die Zeile
später doch wieder braucht, kann man die beiden Schrägstriche wegnehmen, und die Zeile
wird wieder wirksam.
Das Action-Fenster bietet zwei Symbole zum Setzen und Entfernen von Kommentaren.
Trace Meldungen
Wenn Programme länger und komplexer werden treten andere Arten von Fehler auf: die
Schreibeweise des Programms paßt, aber die Logik stimmt nicht, es passieren nicht die richti-
gen Dinge in der richtigen Reihenfolge.
on(release) {
play();
trace("Film gestartet");
}
Der Text der beim Befehl trace in Klammern und Anführungszeichen angegeben ist, wird im
Ausgabefenster angezeigt. So haben Sie beim Testen des Programms einen Überblick an wel-
cher Stelle in Ihrem Programm der Actionscript-Interpreter gerade arbeitet.
100
Uni Salzburg, SS 2008
Die hier gezeigten Befehle sollen ausgeführt werden wenn die UserIn auf einen Button drückt.
Dazu muß auf der Button-Instanz folgender Code angebracht werden:
on ( release ) {
// hier
// der
// Befehl
}
Dann wird der Befehl ausgeführt wenn über dem Button die Maustaste gedrückt und anschlie-
ßend wieder losgelassen wird (release). Statt release können auch andere Events verwen-
det werden, z.B. press (wenn die Maustaste gedrückt wird) oder mouseover (wenn die Maus
über den Button bewegt wird).
Nach dem on-Befehl innerhalb der geschwungenen Klammern können mehrere Be-
fehle stehen. Das funktioniert immer wenn sie in Actionscript die geschwungenen
Klammern {} sehen. Zwischen diesen Klammern können Sie einen Befehl oder
mehrere Befehle schreiben. Das nennt man einen Code-Block.
Die Gestaltung des Buttons bleibt dabei völlig frei, Fehler! Verweisquelle konnte nicht ge-
funden werden. zeigt ein mögliches Beispiel wie eine entsprechende Button-Instanz aussehen
kann.
Wie bei einem Link in HTML muß man auch bei einem Link in Flash zuerst wissen wo der Link
hin gehen soll: dazu braucht man die genaue URL der Webseite. Am einfachsten entnimmt
man die URL mit „copy“ aus der Adress Anzeige eines Webbrowsers. Dann selektiert man die
Instanz des Buttons, und fügt dann wie in Fehler! Verweisquelle konnte nicht gefunden
werden. gezeigt das Verhalten hinzu.
101
WWW und Multimedia: Einstieg in Actionscript
Neben der URL könnte man auch ein Ziel-Fenster bzw. Ziel-Frame für den Link angeben, die
Angabe entspricht bei einem HTML-Link dem Attribut target. Mit der Standard-Einstellung
_self wird die Webseite im aktuellen Frame und Fenster angezeigt.
Sie können die URL im Nachhinein ändern, indem Sie im Verhalten-Fenster auf die Zeile dop-
pelklicken.
Im Aktionen-Fenster können Sie den Code betrachten der durch das Verhalten erzeugt wurde,
siehe Abbildung 90.
Abbildung 90: Actionscript Code der durch das Verhalten erstellt wurde
102
Uni Salzburg, SS 2008
Der entsprechende Actionscript-Code sieht für alle Puzzle-Teile genau gleich aus:
on (press) {
this.startDrag();
}
on (release) {
this.stopDrag();
}
Eine Überprüfung, ob alle Teile am richtigen Ort gelandet sind, können Sie noch nicht pro-
grammieren, dafür brauchen sie Verzweigungen und Variablen.
on (release) {
loadMovie("1.swf", display_mc);
}
on (release) {
unloadMovie(display_mc);
}
103
WWW und Multimedia: Einstieg in Actionscript
Abbildung 93 zeigt den Film und die beiden Punkte an denen er stoppt.
Abbildung 93: Filme wird angehalten, und über Buttons wieder gestartet
− stop();
− play();
Der Befehl stop() hält die Zeitleiste dort an, wo der Abspielkopf gerade steht. Der
Befehl play() startet die Zeitleiste wieder, der Abspielkopf beginnt wieder sich zu
bewegen.
Den stop()Befehl können Sie direkt auf ein Bild in der Hauptzeitleiste schreiben.
Wenn der Abspielkopf zu diesem Bild kommt wird er angehalten. In Abbildung 94
sehen Sie wie die Zeitleiste und das Aktionen-Fenster den Befehl darstellen.
Der play()Befehl muß auf den Button geschrieben werden, und wird (wie in den vorherge-
henden Beispielen) beim Loslassen des Buttons ausgeführt: on (release), siehe Abbildung
95.
104
Uni Salzburg, SS 2008
Der Film stoppt also von selbst und startet erst wieder, falls die UserIn klickt.
Abbildung 97 zeigt die Zeitleiste des Films und die beiden Frames an denen er stoppt.
105
WWW und Multimedia: Einstieg in Actionscript
Bei Frame 10 stoppt der Film. Hier werden die beiden Buttons angezeigt, mit denen die Use-
rIn entscheiden kann wie der Film weiter gehen soll. Das schlechte Ende des Films ist in den
Frames 11 bis 33 gespeichert, der entsprechende Button enthält also nur einen play Befehl.
on ( release ) {
gotoAndPlay(34);
}
Das gute Ende des Films ist in den Frames 34 bis 40 gespeichert, hier ist also ein Sprung zu 34
notwendig. Dieser Sprung wird durch den Befehl gotoAndPlay(34) bewirkt.
Im Laufe der Entwicklung eines Flash-Films können sich die Frames noch verschieben – z.B.
weil man das schlechte Ende ausführlicher gestalten will, und es mehr Frames braucht. Da-
mit würde sich das gute Ende von 34 auf z.B. 54 verschieben, und entsprechend müßte man
den Code verändern.
Diese Arbeit kann man vermeiden, indem man den wichtigen Frames einen Namen gibt. In
Abbildung 97 trägt der Frame 34 den Namen Happy. Diesen Namen kann man im Actionscript-
Programm verwenden, und zwar in (geraden, doppelten) Anführungszeichen:
on ( release ) {
gotoAndPlay("Happy");
}
Werden nun Frames vor 34 eingefügt, dann funktioniert das Programm trotzdem noch.
Strings
An diesem Beispiel kann man sehen, dass in Programmiersprachen Zahlen und Texte verschie-
den behandelt werden. Das Fachwort für ein Stück Text in einer Programmiersprache ist ein
String. Oder auf Deutsch manchmal: eine Zeichenkette. Während man Zahlen einfach hin-
schreiben kann, muß man den Text im Code in Anführungszeichen setzen:
gotoAndPlay(34);
gotoAndPlay("Happy");
gotoAndPlay('Happy');
gotoAndPlay("Happy");
Andere Anführungszeichen kann man mit copy-and-paste in das Flash Aktionen-Fenster hinein-
bringen, sie funktionieren aber nicht!
gotoAndPlay(`Happy´); // FALSCH !
gotoAndPlay(“Happy”); // FALSCH !
gotoAndPlay(»Happy«); // FALSCH !
106
Uni Salzburg, SS 2008
Flußdiagram
Den gesamten Ablauf des Filmes könnte man in einem
Intro Flußdiagramm wie folgt darstellen:
Spielfigur steuern
Eine Spielfigur, die durch ein MovieClip dargestellt wird, wird gesteuert.
Wichtig ist, dass die Spielfigur durch ein einzelnes – wenn auch komplexe aufgebautes – Mo-
vieClip dargestellt wird. Vermeiden Sie es eine Spielfigur als zwei oder mehrere separate
MovieClips darzustellen – das macht das Bewegen der Figur sehr viel schwieriger!
Abbildung 99 < Zeitleiste des MovieClips. Die Zeitleiste ist in Abschnitte zu je 10 Frames ein-
geteilt, jeder Abschnitt entspricht einer bestimmten Handlung, die die Spielfigur durchführen
kann. Der erste Frame im Abschnitt ist entsprechend benannt:
Frame 1 heißt Steh, von Frame 1 bis 9 steht die Figur also nur rum. Frame 10 heißt Wink,
von 10 bis 19 winkt die Figur mit dem Arm. Von 20 bis 29 tritt sie mit dem Bein (Kick), von
30 bis 39 macht sie eine Kniebeuge (Kniebeug), von 40 bis 49 wackelt sie mit dem Kopf
(Kopf), von 50 bis 59 dreht sie sich einmal seitlich und wieder zurück in Frontalansicht
(dreh).
107
WWW und Multimedia: Webformulare und Parameter
Befindet sich eine Instanz dieses MovieClips/dieser Spielfigur auf der Bühne, so kann diese
Instanz mit Actionscript gesteuert werden. Die Instanz braucht dazu einen Instanznamen, in
diesem Fall figur_mc:
on (release) {
figur_mc.gotoAndPlay("dreh");
}
Wenn sich eine zweite Spielfigur auf der Bühne befindet, dann kann diese über Ihren Instanz-
namen angesprochen werden: andereFigur_mc.gotoAndPlay("dreh");
108
Uni Salzburg, SS 2008
Mit den HTML-Tags <form>, <input />, <textarea>, <option>, <select> werden Formulare ge-
baut. Hier ein einfaches Beispiel, (in der Code-Ansicht von Dreamweaver):
Der <form>-Tag ist „unsichtbar“ und dient nur dazu, die anderen Eingabefelder zu bündeln.
Im Action-Attribut des <form>-tag wird angegeben, an welche URL die Daten zur Verarbeitung
geschickt werden. Im Browser sieht das oben gezeigte Formular so aus:
6.4.1 Eingabefelder
Innerhalb des <form>-Tag bauen Sie das Formular aus verschiedenen Eingabeelementen und
den „normalen“ HTML-Tags auf. Tabelle 2 zeigt die verschiedenen Arten von Text-
Eingabefeldern.
Textfeld:
<input type="text"
name="meintextfeld"
value="text eingeben" />
Passwort-Feld:
<input type="password"
name="meinpasswort" />
Tabelle 2: Text-Eingabefelder
Für einzelne Fragen die mit Ja oder Nein zu beantworten sind wird das Eingabe-Element
„checkbox“ verwendet, siehe Tabelle 3.
<input
109
WWW und Multimedia: Webformulare und Parameter
type="checkbox"
name="rauch" /> Raucher
Für Fragen, bei denen eine von mehreren vorgegebenen Antworten möglich sein soll gibt es
verschiedene Eingabeelemente, die in Tabelle 4 gezeigt werden.
Radiobuttons
<input type="radio" name="size" value="XL" /> XL
<input type="radio" name="size" value="L" /> L
<input type="radio" name="size" value="M" /> M
<input type="radio" name="size" value="S"
checked="checked" /> S
Menü
<select name="size2">
<option>XL</option>
<option selected>L</option>
<option>M</option>
<option>S</option>
</select>
Liste
<select name="html" size="4" multiple="multiple">
<option>im Code</option>
<option>Dreamweaver</option>
<option>GoLive</option>
<option>Frontpage</option>
</select>
Radiobuttons, die zu einer Frage gehören, müssen den selben Namen tragen. der Wert ist
unterschiedlich (im Code: Attribut name ist gleich, value unterschiedlich). Nur bei einer Liste
besteht die Möglichkeit mehrere Antworten auszuwählen. Für alle Eingabefelder gibt: falls
auch "keine Antwort" möglich sein soll müssen Sie dafür eine eigene Option einbauen.
Absende-Button
<input type="submit"
value="drück mich!" />
Zurücksetzen-Button
110
Uni Salzburg, SS 2008
<input type="reset"
value="Zurücksetzen" />
Ohne Absende-Button können die Daten nicht zur weiteren Verarbeitung übermittelt werden.
111
WWW und Multimedia: Webformulare und Parameter
Tabelle 6 zeigt noch mehr Eingabefelder, die eher selten gebraucht werden.
Datei-Upload, funktioniert nur wenn die Formular-Daten mit Methode POST und
speziellem enctype an den Webserver geschickt werden
Wählen Sie ein Bild aus:
<input type="file" name="bilddatei">
Aus diesen Eingabeelementen ist jedes Web-Formular aufgebaut. Die Problematik der Formu-
lare liegt nicht in der Kenntnis der Eingabefelder, sondern im Entwurf der Interaktionsmög-
lichkeiten.
Im Folgenden sehen Sie eine Reihe von Entwürfen eines Reservierungs-Formulars für ein Ho-
tel.
112
Uni Salzburg, SS 2008
Bei der Verwendung von Checkboxen, Radiobuttons, Menüs und Listen geben Sie genau vor,
welche Möglichkeiten die LeserIn hat. Wenn Sie beim Entwurf des Formulars eine Möglichkeit
vergessen, kann die LeserIn nichts mehr daran ändern. Deswegen ist hier besondere Sorgfalt
geboten. Eine besonders häufige Auslassung zeigt Tabelle 7.
Der linke Entwurf in Tabelle 7 läßt keine Bestellung nur einer Sorte Bier zu. Die „Mindestbe-
stellmenge“ für jede Sorte ist jeweils eine Kiste. Durch das Einfügen einer „Leer“-Option in
die Menüs wird diese Einschränkung aufgehoben.
Was passiert, wenn Sie ein Formular ausfüllen und auf den Absende-Button drücken? Meist
werden Sie an den Webserver zur weiteren Verarbeitung geschickt. Diese action wird direkt
im <form>-Tag angegeben.
<form action="http://webwelt.horus.at/html/form/echo.cgi">
113
WWW und Multimedia: Webformulare und Parameter
<form action="mailto:ich@uni-salzburg.at"
method="POST"
enctype="text/plain">
Achtung: diese Art die Daten zu senden ist sehr fehleranfällig: hierfür muß nicht nur der
Browser funktionieren, sondern auch das E-Mail Programm. Das E-Mail Programm muß richtig
konfiguriert sein. Das ist auf vielen Computern am Internet nicht der Fall, oft werden die
Daten also nicht erfolgreich versandt sondern gehen verloren.
In Abbildung 104 sehen Sie ein (leicht vereinfachtes) Bestellformular für Flugzeuge das die
Methode GET verwendet.
114
Uni Salzburg, SS 2008
Wenn die UserIn auf „Bestellung absenden“ drückt, baut der Browser aus der action und den
Namen und Werten der einzelnen Eingabefelder eine URL zusammen, die dann aufgerufen
wird wie in Abbildung 105 gezeigt.
http://localhost/php/test.php?anzahl=4&adresse=Jakob+Haringer+Str.1%0D%0A5020+Salzburg
2. ? (einem Fragezeichen )
b. = (Gleich Zeichen)
http://www.google.com/search?q=Schokolade
Sie können diese URL einfach direkt in den Browser eintippen, ohne das Eingabeformular von
Google zu verwenden. Sie können diese URL in den Lesezeichen/Favoriten Ihres Browsers
speichern oder in einem Link verwenden:
115
WWW und Multimedia: Webformulare und Parameter
Gerade bei Google wird diese Möglichkeit oft genutzt: z.B. durch die Suchfelder, die in den
Browsern eingebaut sind:
Wenn Sie eine Web-Applikation erstellen müssen Sie auch darauf gefaßt sein, dass die UserIn-
nen nicht nur die Web-Formulare verwenden sondern auch URLs konstruieren und aufrufen.
Ein lehrreiches Beispiel aus der Frühzeit des Web: es gab einst Webshops, die den Preis der
Waren als verstecktes Eingabefeld im Formular speicherten:
Das gibt der KundIn die Chance ein „Gegenangebot“ zu senden (als „pricing attack“ bekannt):
http://happyshop.com/order.php?anzahl=4&adresse=Jakob+Haringer+Str.1&preis=10
Wenn nun das Programm order.php einfach den Preis aus der URL übernimmt und auf die
Rechnung schreibt, wird der Airbus recht günstig (für die KundIn) verkauft.
POST ermöglicht damit das Einsenden von ganzen Dateien, dabei muß auch noch das Attribut
enctype des Form-Tags gesetzt werden:
<form enctype="multipart/form-data"
method="post"
action="upload.php">
13
Die Details von http werden wir an einem späteren Termin behandeln
116
Uni Salzburg, SS 2008
Der Input-Tag mit dem Typ „file“ wird vom Browser als Textfeld plus Button dargestellt. Wird
der Button gedrückt dann erscheint ein Datei-Auswahl-Dialog, wie in Abbildung 107 gezeigt.
Die Daten aus einem Web-Formular werden vom PHP-Interpreter verarbeitet, die URL-
Codierung aufgelöst und die Daten dann in mehreren superglobalen 14 Arrays zur Verfügung
gestellt:
$_REQUES Dieses Array kombiniert die Daten aus $_GET und $_COOKIE und $_POST. Besser
T die spezifischen Arrays verwenden!
Warnhinweis: In frühen PHP Versionen konnte man noch direkt die Variable $nr verwenden
um den Wert aus einem Eingabefeld <input name="nr" /> zu lesen — das funktioniert heute
nicht mehr!
14
Superglobal bedeutet, dass diese Variablen auch ohne global innerhalb von Funktionen
sichtbar sind
117
WWW und Multimedia: Webformulare und Parameter
Um die Airbus-Bestellung aus Abbildung 104 zu verarbeiten, könnte folgendes Programm ver-
wendet werden:
<?php
$anzahl = $_GET['anzahl'];
$adresse = $_GET['adresse'];
Dabei wird aber die Eingabe nicht geprüft. Eine bessere Version des Programmes prüft vorher
jede Eingabe und gibt entsprechende Fehlermeldungen aus:
<?php
$anzahl = $_GET['anzahl'];
$adresse = $_GET['adresse'];
if ( ! $ok ) {
echo("<p>Ihre Bestellung kann derzeit nicht bearbeitet werden:</p>");
echo("<ol>");
foreach( $fehler as $fehler_text ) {
echo("<li>$fehler_text</li>");
}
echo("</ol>");
echo("<p>Bitte gehen Sie zurück und bessern Sie die Bestellung aus.");
}
else {
echo("<p>Ihre Bestellung über $anzahl Flugzeuge ist eingelangt</p>");
echo("<p>Die Flugzeuge werden binnen 1 Monat an $adresse geliefert</p>");
}
?>
Diese einfachste Überprüfung in PHP funktioniert mit einem statischen HTML-Formular und
einem PHP-Programm.
html php
Das Programm gibt im Falle eines Fehlers die Nachricht aus „bitte gehen Sie einen Schritt
zurück zum Formular, und bessern Sie die Fehler aus“. Das funktioniert in jedem Browser
und ist einfach zu programmieren.
118
Uni Salzburg, SS 2008
Man kann das HTML-Formular aber statt als statische Datei auch als Output desselben PHP-
Programms erzeugen, das dann die Überprüfung vornimmt. Die Daten werden also an das
gleiche Programm zurück gesandt.
php
Wenn das Programm aufgerufen wird muß man drei Fälle unterscheiden:
− Daten liegen vor, sind aber nicht korrekt: Formular mit allen richtigen Daten und den
Fehlermeldungen anzeigen
− Daten liegen vor, alle sind korrekt: Bestellung behandeln, „Danke“ ausgeben.
Um festzustellen ob das Programm schon einmal aufgerufen wurde, fügen Sie ein unsichtbares
Feld in das Formular ein:
if( $_GET['checkme'] ) {
$allesok = true;
// Überprüfung aller Eingaben
}
if ( $allesok ) {
// fertig, danke für die Bestellung
} else {
// Formular anzeigen, eventuell
// mit Fehlermeldungen und mit
// Vorausgefüllten Feldern
}
Wenn im Formular nur noch eine Eingabe fehlt sollen alle schon ausgefüllten Felder ausgefüllt
bleiben. Dazu muß bei jedem <input> Tag das Attribut value gesetzt werden.
Besonders praktisch ist es, die Fehlermeldungen direkt neben dem betroffenen Eingabefeld
anzuzeigen
// Überprüfung
if ( strlen($tel) < 4 ) {
$allesok = false;
$error_tel = 'Telefonnummer angeben!';
119
WWW und Multimedia: Webformulare und Parameter
}
// Anzeige
<input type="text" name="tel" value="<?php echo $tel ?>" />
<?php echo $error_tel ?>
In folgendem PHP-Programm wird mit dem Befehl print_r der Wert einer Variablen inklusive
Datentyp ausgegeben.
Eine Spezialität von PHP ist die Schreibweise von Parametern mit eckigen Klammern: solche
Parameter setzt PHP in Arrays um.
Datei Upload
Die Verarbeitung von hochgeladenen Dateien ist wesentlich komplizierter: Die Dateien wer-
den vom PHP-Interpreter temporär gespeichert. Das PHP-Programm kann die Dateien dann an
einen permanenten Speicherort kopieren.
Die Details zu den Hochgeladenen Dateien sind im Array $_FILES gespeichert, in folgendem
Beispiel hatte das Eingabefeld den Namen „bild“:
$_FILES['bild']['type'] Der „Mime Type“ der Datei – falls der Browser diese In-
formation liefert. Zum Beispiel „image/gif“. Achtung:
nicht zuverlässig!
120
Uni Salzburg, SS 2008
<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
print "</pre>";
?>
Ein PHP-Programm gibt normalerweise HTML aus. Entsprechend liefert der PHP-Interpreter
einen http-Header „Content-Type: text/html“. Mit dem Befehl header() kann dies verän-
dert werden.
<html>
<head>
<link rel="stylesheet" href="style.php" />
</head>
<body>
<h1>Überschrift</h1>
<p>text text text</p>
</body>
</html>
Ein Stylesheet, das von PHP aus erzeugt wird, hat den Vorteil, dass man Variablen verwenden
kann, z.B. für die Definition von Farben, die mehrmals im Stylesheet verwendet werden sol-
len. In folgendem Beispiel wird einfach das ganze Stylesheet mit einem echo ausgegeben:
<?php
$blau = "rgb(0,0,255)";
echo "
body { padding: 3em; }
h1 { color: $blau; }
.box {
background-color: $blau;
}
";
?>
121
WWW und Multimedia: Webformulare und Parameter
<html>
<head>
<style>
body {
margin-left: 120px;
background-image: url(drawbackground.php);
background-repeat: repeat-y;
}
</style>
</head>
<body>
<h1>Zufalls-Hintergrund</h1>
<p>Das verwendete Hintergrundbild wurde von PHP erzeugt:</p>
<p><img src="drawbackground.php" />
</body>
</html>
Welches Bildformat verwendet wird (jpg, gif, png, …) wird wieder über den http-Header Con-
tent-Type angekündigt. Die Befehle zur Bild-Erzeugung in Manipulation sind unter dem Stich-
wort „Image Funktions“ in der PHP-Doku zu finden.
imagefill($im, 0, 0, $background_color);
$y=0;
while( $y < 100 ) {
$x = rand(0,$max);
imageline($im, 0, $y, $x, $y, $drawing_color);
$y=$y+2;
}
count=25856&date=2.Mai+2008&time=10:15
Unter dem Stichwort „URL Funktionen“ finden Sie in der PHP-Doku die Funktion
http_build_query() die hier weiterhilft.
122
Uni Salzburg, SS 2008
<bilder>
<bild imageurl="img/DSC_3461.jpg" />
<bild imageurl="img/DSC_3462.jpg" />
</bilder>
<?php
header("Content-Type: application/xml");
$bilder = glob("*.jpg");
echo("<bilder>\n");
foreach( $bilder as $bild ) {
echo("<bild imgurl='$bild' />\n");
}
echo("</bilder>\n");
?>
<?php
// hier passieren wichtige Dinge ...
header("Location: status.php");
exit; /* fertig, nichts weiter ausgeben! */
?>
123
WWW und Multimedia: Webformulare und Parameter
• Wie man mit fillStyle, beginFill, endFill Teile einer Zeichnung mit Farbe füllt
• Wie man mit Variablen und Funktionen Programmteile abstrahiert und wieder ver-
wendet
• Wie man mit einer while-Schleife viel Arbeit mit wenig Code macht.
124
Uni Salzburg, SS 2008
7.2 AJAX
AJAX ist die englische Abkürzung für „Asynchrones Javascript und XML“. In die-
sem Kapitel lernen Sie was das genau bedeutet, und dass sich hinter dem X zum
Schluß auch andere Format verbergen können
Der Begriff AJAX wurde von Jesse James Garrett zuerst verwendet 15. Ein Beispiel für die Ver-
wendung von AJAX ist das in Abbildung 108 gezeigte Eingabefeld: schon während des Eintip-
pens eines Suchwortes wird eine Anfrage an den Webserver geschickt. Dieser antwortet mit
einer Liste von vorgeschlagenen Namen. Diese Liste wird mit Javascript (unter Verwendung
der DOM) in einer <div> unterhalb des Eingabefelds angezeigt:
Abbildung 108: Vorschläge für die Eingabe werden über AJAX geladen
Mit AJAX werden also mehr HTTP-Anfragen gesendet. Es ändert sich aber gar nichts an der
einzelnen HTTP-Anfrage selbst.
Die HTTP-Anfragen werden asynchron abgesetzt. D.h. das Javascript-Programm wartet nicht
auf die Antwort des Servers. Statt dessen wird beim Senden der Anfrage eine Funktion ange-
geben, die aufgerufen werden soll, sobald die Antwort vorliegt.
Für die LeserIn der Webseite bedeutet das: sie Weite mit Formular Client Server
wird angefordert
erhält sehr schnell eine Reaktion auf ihre Klicks.
Formular wird ange-
In der Illustration rechts sehen Sie wie zwei zeigt
15
http://www.adaptivepath.com/publications/essays/archives/000385.php
125
WWW und Multimedia: PHP und E-Mail
Im ersten AJAX Beispiel wird der Output eines PHP-Counters in eine HTML-Seite eingebunden.
Das gibt noch keine besonderen Effekte für die LeserIn, sondern macht nur den Einbau des
Counters in eine bestehende Webseite einfacher.
<html>
<head>
<title>AJAX counter</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("p#counter_zeile").show();
$("#counter_zahl").load("counter_ajax.php");
});
</script>
<style>
p#counter_zeile { display: none; }
</style>
</head>
<body>
<h1>Das ist eine statische Webseite</h1>
$("#counter_zahl").load("counter_ajax.php");
Das Element mit der Id counter_zahl wird ausgewählt. Mit dem Load-Befehl wird eine http-
Anfrage an die angegebene URL abgesetzt. Wenn der Output des PHP-Programm beim Browser
ankommt, wird er in das entsprechende Element eingefügt.
mail(
"bjelli@horus.at",
"Just another SPAM",
"Das ist der Text in der E-Mail"
);
Dazu passend ein Trick, wie man viel Text in einen langen String schreiben kann:
126
Uni Salzburg, SS 2008
$text <<<Ende
Lieber Newsletter-Kunde!
wir freuen uns, dass Sie unseren
Newsletter zum Thema $thema
abonniert haben.
Ende;
mail("bjelli@horus.at", "Just another Newsletter", $text);
Wie die Mail vom PHP-Interpreter versandt wird in der PHP- Konfiguration festgelegt. Die
Konfigurations-Datei hat den Namen php.ini. Wenn man PHP auf dem eigenen Computer
betreibt, kann man den SMTP-Server des Providers eintragen um die Ausgehende Mail über
diesen Server zu versenden:
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[mail function]
SMTP = mail.provider.at
sendmail_from = someuser@sbg.ac.at
Der Befehl phpinfo() gibt die ganze Konfiguration von PHP aus. Hier kann man auch die
Mail-Konfiguration nachlesen:
127
WWW und Multimedia: Die Flash Drawing API
Jede MovieClip-Instanz kann als Zeichen-Blatt fungieren. Das MovieClip merkt sich welcher
Stift verwendet werden soll (lineStyle) und wohin der Stift zuletzt bewegt wurde. Hier ein
Beispiel mit der MovieClip-Instanz mc:
Das erste Argument von lineStyle gibt die Breite der Linie an. Das zweite Argument ist die
Farb-Angabe, sie funktioniert wie in HTML: rot, grün, und blau-Anteil in Hexadezimal-
Schreibweise. Die Farbangabe beginnt immer mit 0x. Das dritte Argument ist der Alpha-Wert,
100 ist der höchste mögliche Wert und steht für undurchsichtig.
Mit moveTo und lineTo kann man Linien auf das MovieClip zeichnen:
mc.moveTo( 0, 0 );
mc.lineTo( 300, 100 );
mc.lineTo( 100, 300 );
mc.lineTo( 200, 0 );
Achtung: das Koordinatensystem von Flash beginnt links oben, die x-Achse geht nach rechts,
die (positive) Y-Achse nach unten!
Kurven
Abbildung 111: Kurve, die mit curveTo gezeichnet wurde (und Kontrollpunkt)
Mit dem Befehl curveTo kann man Kurven zeichnen. Dabei wird ein Zielpunkt und ein so ge-
nannter „Kontroll-Punkt“ angegeben.
128
Uni Salzburg, SS 2008
Abbildung 111 zeigt die Kurve und zusätzlich zwei Linien von Startpunkt- und Endpunkt zum
Kontrollpunkt. Diese Linien sind Tangenten an die Kurve und bestimmen so die genaue Form
der Kurve. (Das Fachwort für diese Art von Kurve ist „quadratische Bézierkurve“)
Füllfarbe
Die mit lineTo und curveTo gezeichneten Formen können mit Farbe gefüllt werden. Mit be-
ginFill wird Farbe + Alpha festgelegt.
Übung 1) Schreiben Sie ein Programm, das 10 Pixel innerhalb des Bühnenrandes einen Rah-
men zeichnet. Verwenden Sie dabei die Eigenschaften width und height des Stage-Objekts.
129
WWW und Multimedia: Die Flash Drawing API
Übung 2) Schreiben Sie ein Programm, das ein großes X quer über die Bühne malt, von Eck-
punkt zu Eckpunkt. Verwenden Sie dabei die Eigenschaften width und height des Stage-
Objekts.
Übung 3) Schreiben Sie ein Programm das mit (mehreren?) curveTo–Aufrufen ungefähr einen
Halbkreis zeichnet.
Übung 4) Schreiben Sie ein Programm das den Anfangsbuchstaben Ihres Vornames mit Action-
script zeichnet.
7.4.2 Funktionen
Wie sie gesehen haben, ist die Zeichen-Fähigkeit von Flash sehr eingeschränkt: Es gibt Metho-
den um Linien und Kurven zu zeichnen, mehr nicht. Praktisch wäre doch auch ein Befehl zum
Zeichnen eines Rechtecks! Wenn Sie so einen Befehl brauchen, können Sie ihn selbst als
Funktion definieren.
Abbildung 113: Drei Rechtecke auf der Flash Bühne mit Koordinaten
Rechteck 0/0 bis 150/100 Rechteck 200/0 bis 300/100 Rechteck 350/0 bis 500/100
moveTo(0,0); moveTo(200,0); moveTo(350,0);
moveTo(150,0); moveTo(300,0); moveTo(500,0);
moveTo(150,100); moveTo(300,100); moveTo(500,100);
moveTo(0,100); moveTo(200,100); moveTo(350,100);
moveTo(0,0); moveTo(200,0); moveTo(350,0);
Die Struktur des Codes ist immer gleich, nur die konkreten Zahlen unterscheiden sich. Ein
bißchen abstrakter betrachtet ist der Code immer gleich: wenn x1/y1 die Koordinaten des
linken oberen Eckpunktes sind, und x2/y2 die Koordinaten des rechten unteren Eckpunktes,
dann sieht der Code so aus:
moveTo(x1, y1);
lineTo(x2, y1);
lineTo(x2, y2);
lineTo(x1, y2);
lineTo(x1, y1);
130
Uni Salzburg, SS 2008
Diesen abstrakten Code kann man in eine Funktion schreiben. Den Namen der Funktion (hier
rect) können Sie selbst festlegen:
Die Variablen x1, y1, x2, y2, die in der Klammer nach dem Funktionsnamen geschrieben wer-
den, werden Argumente der Funktion genannt. Wenn man eine Funktion benutzen will, muß
man wissen welche Argumente sie erhält.
Wenn die Funktion mit konkreten Zahlen aufgerufen wird, werden diese Werte in die Argu-
mente x1, y1, x2, y2 geschrieben und der Code ausgeführt:
Wird die Funktion nur definiert, aber nie aufgerufen, dann hat Sie keine Auswirkungen auf das
Programm.
Übung 5) Schreiben Sie eine Funktion, die den Anfangsbuchstaben Ihres Vornamens zeichnet.
Die Position des Buchstabens auf der Bühne soll über die Funktions-Argumente gesteuert wer-
den, ähnlich wie bei der rect-Funktion. Benutzen Sie die Funktion um den Anfangsbuchsta-
ben 5mal auf die Bühne zu zeichnen.
Übung 6) Schreiben Sie eine Funktion, die einen Stern zeichnet. Die Position des Sterns auf
der Bühne soll über die Funktions-Argumente gesteuert werden, ähnlich wie bei der rect-
Funktion. Benutzen Sie Ihre Stern-Funktion um 5 Sterne auf die Bühne zu zeichnen.
Übung 7) Schreiben Sie eine Funktion, die mit Hilfe von mehreren Aufrufen der curveTo
Funktion ungefähr einen Kreis zeichnet. Die Position des Kreises auf der Bühne soll über die
Funktions-Argumente gesteuert werden, ähnlich wie bei der rect-Funktion. Benutzen Sie Ihre
Kreis-Funktion um 5 Kreise auf die Bühne zu zeichnen.
function kreuz(mc, x, y) {
mc.moveTo(x-5, y);
mc.lineTo(x+5, y);
mc.moveTo(x, y-5);
mc.lineTo(x, y+5);
}
131
WWW und Multimedia: Die Flash Drawing API
Übung 9) Was macht folgendes Programm (es verwendet die Funktion von Übung 8). Zeichnen
Sie das Ergebnis.
Beispiel 2) Der Hintergrund des Flash-Films wird mit einem Muster aus Linien be-
deckt: lauter senkrechte Linien mit 10 Pixel Abstand.
Larry Wall, der Erfinder der Programmiersprache Perl, sagte: Die erste Tugend der Program-
mierung ist Faulheit. An dieser Stelle bedeutet Faulheit: ich bin zu faul um viele Zeilen Code
zu tippen, die viele Linien zeichnen. Die Lösung: mittels einer Schleife mit wenig Code viele
Linien zeichnen. Die Variable x enthält dabei die X-Koordinate der senkrechten Linie.
Die while-Schleife reicht von Zeile 3 bis Zeile 8. Sobald der Interpreter zum ersten Mal Zei-
le 3 erreicht, überprüft er die Bedingung in der runden Klammer ( x < Stage.width ) ähnlich
wie bei einer Verzweigung mit if. Wenn die Bedingung nicht erfüllt ist, springt er sofort zu
Zeile 9.
Ist die Bedingung erfüllt, dann werden die Zeilen 5 bis 7 der Reihe nach abgearbeitet. Am
Ende, bei Zeile 8, erfolgt wieder ein Rücksprung zu Zeile 3 – falls die Bedingung (x < Sta-
ge.width ) jetzt noch erfüllt ist.
Endlos-Schleife
Achtung, wichtiger Warnhinweis: achten Sie darauf, dass die Abbruch-Bedingung der Schleife
wirklich irgend wann einmal erfüllt ist! Sonst haben Sie ein Endlos-Schleife: der Actionscript-
Interpreter ist für immer in der Schleife gefangen; nichts geht mehr. Das passiert sehr
schnell, wenn man zum Beispiel vergißt, die Variable x hochzuzählen:
var x:Number = 0;
while(x <= Stage.width) {
moveTo(x, 0);
lineTo(x, Stage.height);
}
Übung 10) Schreiben Sie ein Programm, das senkrechte Linien im Abstand von 10px über die
ganze Bühne zeichnet (Code auf Seite 132).
132
Uni Salzburg, SS 2008
Übung 11, 12, 13) Schreiben Sie drei Programme, die folgende Bilder zeichnen:
Zufallszahlen
Mit Hilfe einer Schleife kann man viele Linien ziehen, mit Hilfe von Zufallszahlen sieht dieses
Muster jedes Mal anders aus:
Zufallszahlen bringen den Moment des Unberechenbaren, Unerwarteten in die strenge, vor-
hersehbare Welt der Computerprogramme. Bei jedem Aufruf der Methode random des Math-
Objekts wird eine Zahl größer gleich Null und kleiner Eins erzeugt:
Meist braucht man keine Zahl zwischen Null und Eins, sondern eine größere Zahl. Dazu multi-
pliziert man die Zufallszahl:
133
WWW und Multimedia: Die Flash Drawing API
y = Math.random() * 400;
Falls man keine Kommerzahlen, sondern ganze Zahlen braucht, kann man mit der Funktion
int() die Zahl abrunden:
Übung 14) Schreiben Sie ein Programm, das das Muster in Abbildung 114 zeichnet.
Übung 15) Schreiben Sie ein Programm, das zufällige Linien zeichnet.
Übung 16) Was macht das folgende Programm? Zeichnen Sie das Ergebnis auf Papier, ohne
das Programm in Flash einzugeben!
step = 10;
a = 0;
while (a<400) {
mc.moveTo(a, 0);
mc.lineTo(a, 400);
a += step;
}
a = 0;
while (a<400) {
mc.moveTo(0, a);
mc.lineTo(400, a);
a += step;
}
Übung 17) Was macht das folgende Programm? Zeichnen Sie das Ergebnis auf Papier, ohne
das Programm in Flash einzugeben!
x = 0;
step = int(Math.random()*40+5);
while (x<400) {
mc.moveTo(x, 0);
mc.lineTo(400, x);
x += step;
}
Übung 18) (Achtung: mit viel Mathematik!) Was macht das folgende Programm? Finden Sie
zuerst heraus, wie sich die Variable alpha in der Schleife verhält. Erinnern Sie sich dann an
den Mathematik-Unterricht in der Schule: was machen Sinus und Cosinus? Zeichnen Sie wie
der Output aussieht. Was würde eine Veränderung der Variablen n, r, mitte_x, mitte_y be-
wirken?
n = 8;
r = 100;
mitte_x = 200;
mitte_y = 200;
alpha = 0;
// alpha im Bogenmass, von 0 bis 2*pi
x = mitte_x + Math.cos(alpha) * r;
y = mitte_y + Math.sin(alpha) * r;
this.moveTo(x, y);
while (alpha <= Math.PI * 2 && alpha <= max_alpha)
{
134
Uni Salzburg, SS 2008
alpha += Math.PI * 2 / n;
// trace("jetzt bei winkel "+alpha);
x = mitte_x + Math.cos(alpha) * r;
y = mitte_y + Math.sin(alpha) * r;
this.lineTo(x, y);
}
Übung 19) Was macht folgendes Programm. Zeichnen Sie das Ergebnis.
function kreuz(mc, x, y) {
mc.moveTo(x-5, y);
mc.lineTo(x+5, y);
mc.moveTo(x, y-5);
mc.lineTo(x, y+5);
}
x = 0;
while (x<=400) {
y = x / 2 + 50;
kreuz(mc, x, y);
x += 10;
}
Übung 20) (Fortgeschritten!) Wie könnte ein Programm aussehen, das das Bild in Abbildung
115 zeichnet? Skizzieren Sie das Programm. Am besten wäre ein Programm, das mit einer
kleinen Veränderung auch 7 mal 10 oder 700 mal 100 Kreuze zeichnen könnte.
135
WWW und Multimedia: Die Flash Drawing API
• Das das Weblog eine Art Online-Tagebuch ist, das teils für private teils für journalisti-
sche Zwecke verwendet wird.
• Wie das Speichern in einer Datenbank einige Probleme von Webapplikationen löst:
z.B. den gleichzeitiger Zugriff auf die Daten.
• Dass Permalinks ohne Fragezeichen nur aktiviert werden können wenn der Webspace
.htaccess-Dateien erlaubt und das Modul mod_rewrite aktiviert ist.
136
Uni Salzburg, SS 2008
Like many important concepts, Web 2.0 doesn't have a hard boundary, but ra-
ther, a gravitational core. You can visualize Web 2.0 as a set of principles and
practices that tie together a veritable solar system of sites that demonstrate so-
me or all of those principles, at a varying distance from that core.
Als erstes Kennzeichen von Web 2.0 führt Tim O’Reilly an, dass das Web die Plattform für
Software ist. Alte Software-Firmen wie Microsoft oder Netscape produzierten Programme, die
auf Windows oder Apple als Plattform laufen. Web 2.0 Firmen wie Google verwenden statt
dessen das Web als Basis-Plattform für Ihre Applikation:
137
WWW und Multimedia: Web 2.0
[…]
Google […] began its life as a native web application, never sold or packaged,
but delivered as a service, with customers paying, directly or indirectly, for the
use of that service. None of the trappings of the old software industry are pre-
sent. No scheduled software releases, just continuous improvement. No licen-
sing or sale, just usage. No porting to different platforms so that customers can
run the software on their own equipment, just a massively scalable collection of
commodity PCs running open source operating systems plus homegrown appli-
cations and utilities that no one outside the company ever gets to see.
Der Wert von Google liegt also laut O’Reilly zur Hälfte in den gesammelten Daten, zur Hälfte
in der Software mit denen diese Daten verwaltet und durchsucht werden.
Als zweiten Punkt führt er die Nutzung der kollektiven Intelligenz von vielen Web-UserInnen
an. Dies verdeutlicht er mit mehreren Beispielen:
The central principle behind the success of the giants born in the Web 1. 0 era
who have survived to lead the Web 2.0 era appears to be this, that they have
embraced the power of the web to harness collective intelligence:
[…]
- eBay's product is the collective activity of all its users; like the web itself, eBay
grows organically in response to user activity, and the company's role is as an
138
Uni Salzburg, SS 2008
enabler of a context in which that user activity can happen. What's more, eBay's
competitive advantage comes almost entirely from the critical mass of buyers
and sellers, which makes any new entrant offering similar services significantly
less attractive.
[…]
8.2.3 Daten
Als dritten Punkt führt O’Reilly die Bedeutung der gesammelten Daten an:
139
WWW und Multimedia: Web 2.0
Tim O’Reilly führt MapQuest als Beispiel für eine Webapplikation an, die auf „fremden Daten“
basiert: die Karten werden von MapQuest von anderen Firmen zugekauft. Er stellt diesem
Modell das Modell von Amazon gegenüber: Amazon begann zwar mit zugekauften Daten – die
Titel, Autoren, ISBN-Nummern aller Bücher stammen für die USA von der Firma R. R. Bowker.
Aber Amazon hat zu diesen Daten große Massen an zusätzlichen Daten dazu gesammelt: Von
UserInnen geschriebene Rezensionen, Verkaufsstatistiken, Wunschlisten, etc.
[…]
The race is on to own certain classes of core data: location, identity, calendaring
of public events, product identifiers and namespaces. In many cases, where the-
re is significant cost to create the data, there may be an opportunity for an Intel
Inside style play, with a single source for the data. In others, the winner will be
the company that first reaches critical mass via user aggregation, and turns that
aggregated data into a system service.
„Intel Inside style play“ heisst hier, dass eine Firma eine Monopol-Stellung erreichen kann, so
wie Intel ein de-facto Monopol auf CPUs hat.
Als viertes typisches Merkmal von Web 2.0 führt Tim O’Reilly an, dass der „Software Release
Cycle“ verschwindet. Nicht mehr das Veröffentlichen der Software alleine reicht, es geht
auch um den täglichen Betrieb der Server. Neue Software erscheint nicht mehr alle paar Mo-
nate oder Jahre in einer neuen Version, sondern kann jederzeit verändert werden:
[…], one of the defining characteristics of internet era software is that it is deli-
vered as a service, not as a product. This fact leads to a number of fundamental
changes in the business model of such a company:
2. […] The open source dictum, "release early and release often" in fact has
morphed into an even more radical position, "the perpetual beta," in which the
140
Uni Salzburg, SS 2008
Cal Henderson, the lead developer of Flickr, recently revealed that they deploy
new builds up to every half hour.
Die von O’Reilly beschriebenen Punkte 5 und 6 beschäftigen sich mit den Details der Soft-
wareentwicklung, werden hier abernicht behandelt.
Das Web 2.0 bietet (im Vergleich zum Web 1. 0) Eine anwenderfreundlichere, reichhaltigere,
interessantere Oberfläche. Eine Oberfläche, die eben so gut funktioniert wie „normale“ Ap-
plikationen (von O’Reilly ‚GUI-style application’ genannt)
[…] Several years ago, Macromedia coined the term "Rich Internet Applicati-
ons" […] to highlight the capabilities of Flash to deliver not just multimedia
content but also GUI-style application experiences.
However, the potential of the web to deliver full scale applications didn't hit the
mainstream till Google introduced Gmail, quickly followed by Google Maps,
web based applications with rich user interfaces and PC-equivalent interactivity.
The collection of technologies used by Google was christened AJAX, in a se-
minal essay by Jesse James Garrett[…].
Für Tim O’Reilly ist AJAX eine Schlüssel-Komponente von Web 2.0.
8.2.6 Tipps
Am Ende seines Artikels gibt Tim O’Reilly noch Tips, wie man erfolgreiche Web 2.0 Applika-
tionen und Firmen baut:
141
WWW und Multimedia: Web 2.0
8.2.7 Zusammenfassung
Der Begriff Web 2.0 beschreibt den Stand der Technik und der Geschäftsmodelle von Internet-
firmen in einer bestimmten Zeit: der Aufschwung-Zeit nach dem „Platzen der Internet-Blase“
um 2000.
142
Uni Salzburg, SS 2008
8.3 Weblogs
Ein Weblog (engl. Kombination aus Web und Log), oft einfach nur
Blog genannt, ist eine Webseite, die periodisch neue Einträge ent-
hält. Neue Einträge stehen an oberster Stelle, ältere folgen in um-
gekehrt chronologischer Reihenfolge.
In der Navigation
rechts gibt es Ver-
Der neueste
weise auf andere
Eintrag im Blog
Webseiten und
Blogs…
Jeder Eintrag im
Blog hat einen Titel
und enthält Datum
und Uhrzeit.
143
WWW und Multimedia: Weblogs
Das Weblog unterscheidet sich technisch nicht von anderen Webseiten – Sie können ein We-
blog mit Dreamweaver als statische HTML-Seiten erstellen. Erkennungsmerkmal des Blogs ist
die „Tagebuch“-Struktur: es werden einzelne Einträge unterschieden, diese Einträge sind
nach Datum+Uhrzeit sortiert, der neueste Eintrag findet sich ganz oben auf der Webseite.
Eine Person ist als Autor/Autorin erkennbar, sie spricht für sich selbst, und nicht in einer Rol-
le für eine Institution. Ob dem wirklich so ist, ist über das Internet nicht nachprüfbar, trotz-
dem hat der Blog die Aura des authentischen, echten im Vergleich zu den PR- und Marketing-
Texten von offiziellen (Firmen-)Homepages.
Wie oben erwähnt können Sie Ihren Blog auch ohne Hilfe einer speziellen Software erstellen.
Sie können mit Dreamweaver Ihre Einträge in eine statische Webseite machen. Blogging-
Software hilft bei der Verwaltung der Einträge, und bietet zusätzliche Features wie Kommen-
tare oder Kategorien.
144
Uni Salzburg, SS 2008
Mit so einem System kann man ganz einfach einen Reise-Blog schreiben –
ohne eigenen Computer oder Spezial-Programme.
Mit einem Laptop und einem W-LAN Zugang oder einem Handy
mit Webbrowser kann man jederzeit unterwegs Einträge im Blog
machen. Das ist zum Beispiel bei Computer-Konferenzen üblich –
eifrige BloggerInnen schreiben zu jedem Vortag den sie besuchen
sofort einen Bericht.
8.3.2 RSS
RSS ist eine alternative Darstellung für einen Weblog; nur der Inhalt wird in RSS gespeichert,
nicht aber die Darstellung. RSS ist XML mit den „Tags“ <rss>, <channel> und <item>. Die
Datei beginnt mit der Beschreibung des Channels:
<item>
<title>mma-Absolvent gewinnt Hauptpreis beim film.forum.linz</title>
<description>MMA-Absolvent Markus Huber hat beim film.forum.linz 07 mit seinem Film
"Asyl" den Hauptpreis der Kategorie future gewonnen. Asyl entstand im Rahmen
eines Diplomarbeitsprojektes und setzte sich gegen vierzehn Konkurrenten durch.
</description>
<pubDate>Wed, 2. May 2007 18:00:00 GMT</pubDate>
</item>
<item>
<title>Die (R)Evolution der Kommunikation </title>
<description>Der Werbeblogger im Web 2.0: Am Studiengang MultiMediaArt wird am 30. April
2007 das Themenfeld „Bloggen“ aufgegriffen und im Rahmen eines Vortrages von
Patrick Breitenbach um 12:30 Uhr im Audimax Urstein diskutiert.</description>
<pubDate>Tue, 17. Apr 2007 18:00:00 GMT</pubDate>
</item>
</channel>
</rss>
145
WWW und Multimedia: Weblogs
Wird so eine RSS-Datei auf einem Webserver zur Verfügung gestellt und regelmäßig aktuali-
siert, dann spricht man von einem RSS-Feed. Viele Programme können RSS-Feeds verarbeiten
und auf unterschiedliche Art darstellen.
Sowohl Firefox als auch Thunderbird kann man als RSS-Reader einsetzen. Firefox stellt den
RSS-Feed wie in Abbildung 116 gezeigt als „dynamisches Lesezeichen“ dar - ein Untermenü in
den Lesezeichen mit immer neuen Einträgen. Jeder Eintrag ist gleichzeitig ein Link auf den
Original-Blog, dort kann man also den gesamten Artikel lesen.
Thunderbird stellt den RSS-Feed als Mail-Ordner dar, die einzelnen Items als Nachrichten.
Das waren zwei Beispiele wie RSS gleich für die End-UserIn angezeigt wird.
Es gibt aber auch verschiedene Webapplikationen die RSS verarbeiten. Viele Content-
Management-Systeme können RSS-Feeds darstellen. Abbildung 118 zeigt die Darstellung des
FH-News-Feeds in einem Wordpress-Blog.
146
Uni Salzburg, SS 2008
Ein Aggregator oder „Planet“ fasst verschiedene Blogs zusammen und veröffentlicht sie er-
neut, gebündelt. Ein Beispiel dafür finden Sie auf http://home.multimediaart.at.
Fachliche Blogs, zum Beispiel zu Themen wie Webdesign, CSS, Ajax, können wichtige aktuelle
Informationsquellen sein. Neuigkeiten verbreiten sich in der Blogosphäre sehr schnell, weil
die Blogs aufeinander verweisen, und spannende Neuigkeiten besonders viele Verweise be-
kommen:
Nach dem behandelten Themen, den zu Verfügung gestellten Medien und dem angepeilten
Zielpublikum kann man versuchen Blogs zu unterscheiden. Klare Trennlinien gibt es aber
nicht:
− Persönliches Tagebuch
o einer Person, ohne Einschränkung des Themas
o anläßlich einer Weltreise, eines Auslandssemesters
o zu einem bestimmten, persönlichen Thema, z.B. einer
gerade durchlebten Krankheit, Sterbeblog
o zu einem bestimmten fachlichen Thema, z.B. PHP
o mit Empfehlungen von anderen Webseite/Blogeinträgen
(Linkblog)
− Medien-Spezifische Blogs
o Photoblogs
o Videoblogs
− Nachrichtendienst
o mit Pressemeldungen einer Firma, einer Partei, eines
Vereins
o zu einem bestimmten Thema das in klassischen Medien zu
kurz kommt, z.B. Globalisierungskritik
147
WWW und Multimedia: Weblogs
Blogs dringen dabei in Gebiete vor, die bisher professionellen JournalistInnen vorbehalten
waren. Allerdings ohne der in Presse und Funk üblichen Kontrolle durch eine Redaktion, ohne
journalistische Qualitätskriterien einhalten zu müssen, und oft — da ganz anonym — ohne für
Fehlmeldung und Verhetzung zur Rechenschaft gezogen werden zu können.
Eine beliebte Form von anonymen Blogs sind Blogs für Leute von großen Firmen, die öffentlich
aber anonym über ihre Firma lästern. Siehe zum Beispiel Minimicrosoft.
Aufgrund der Natur und Anwendung von Weblogs sind ggf. Rück-
schlüsse auf die Persönlichkeit des Bloggers möglich. Blogger soll-
ten sich der Tatsache bewusst sein, dass Weblog-Einträge stark
verbreitet und langfristig archiviert werden. (So durchsuchen Un-
ternehmen vor Einstellungen zunehmend das Internet nach Web-
seiten und Weblogs der Bewerber.)
Jan hat ein Blog-System für mehrere Leute aus dem Jahrgang mma2002 eingerichtet, in dem sie im
Zeitraum von Juni 2005 bis März 2006 persönliche Einträge aus der Praktikums- und Diplomar-
beits-Zeit machten. Am 20.März 2006 postete Stefan folgenden Blog-Eintrag:
"lustige" Geschichte
hi allerseits!
ein freund von mir hatte heute ein vorstellungsgespräch – scheinbar ist es nun
schon üblich, dass firmen die namen ihrer bewerber vorher googeln. jedenfalls
teilten sie ihm mit, dass sie ihn geoggelt (was für ein blödes wort) hätten und
dabei einige seiner projekte entdeckt hätten UND einen namensvetter entdeckt
hätten, dessen betrunkener freund in einer LA bar karaoke gesungen hat.
wer hier ein ständchen zum besten gegeben hat, wisst ihr ja :)#
na jedenfalls bin ich stark dafür, dass du(JAN) mal unsere familiennamen aus
dem blog entfernst und vielleicht auch gleich eine google indizierung unterbin-
dest…..
obwohl wer weiss: Nino´s ständermontage könnte ihm vielleicht auch einen
coolen job einbringen. und für rocky gibts sicher auch genug türsteher-jobs.
148
Uni Salzburg, SS 2008
Der Vorschlag von Stefan wurde umgesetzt, Jan entfernte die Nachnamen und E-Mail Adressen
aus dem Blog.
Dieser Fall zeigt deutlich, dass die „Öffentlichkeit“ von Blogs unterschätzt wird. Als Zielpu-
blikum für den mmadiplomarbeitsblog waren wahrscheinlich nur FreundInnen und Studienkol-
legInnen gedacht. Dass auch künftige ArbeitgeberInnen, Schwiegereltern und KreditgeberIn-
nen den Blog lesen könnten, wird erst später klar.
Im Internet wird die Informationsselbstbestimmung oft gebrochen – Bilder werden ohne das
Wissen und die Zustimmung der Betroffenen veröffentlicht. Das ist ein Thema. Blogs sind ein
anderes Thema: Bei Blogs haben die SchreiberInnen die volle Kontrolle über den publizierten
Inhalt, sie entscheiden selbst was veröffentlicht wird. Sie sollten sich dabei der möglichen
Leserschaft und der möglichen Archivierung für die Ewigkeit bewußt sein.
16
Siehe z.B. http://web.archive.org/web/*/http://www.cosy.sbg.ac.at
149
WWW und Multimedia: Flash als Audio und Video-Player
Eine in die FLA- und SWF-Datei eingebettete Sounddatei nennt man auch „Sound-Ereignis“.
Ein solches Sound-Ereignis muss, bevor es abgespielt werden kann, erst vollständig geladen
sein.
Entweder zieht man die Sounddatei direkt in die Bibliothek oder man fügt sie über DATEI ->
IMPORTIEREN -> IN BIBLIOTHEK IMPORTIEREN ein.
Abbildung 120 zeigt eine Sounddatei namens loop01.mp3, die in die Bibliothek importiert
wurde. Mittels des in der Abbildung rot markierten Play-Buttons kann man sich noch einmal
vergewissern, ob die Sounddatei wirklich abgespielt werden kann.
Diese Sounddatei wird nun beim Exportieren in die swf-Datei mit eingebunden. Dadurch ver-
größert sich jedoch die swf-Datei.
Sie können nun die Audio-Datei auf die Bühne ziehen. Auf der Bühne selbst ist Audio nicht
sichtbar, aber in der Zeitleiste. Hier sehen Sie auch wie viele Frames lang der Sound andau-
ert. In Abbildung 121 wurde ein Klingelton in das MovieClip einer Klingel importiert. Wenn das
MC abgespielt wird ertönt, auch der Klingelton.
Im Eigenschaften-Fenster können Sie die Details einstellen: Hier können Sie einen andern
Sound auswählen, den Sound wiederholen lassen, oder in Endlosschleife laufen lassen. Sie
können sogar sehr einfache Bearbeitung wie Lautstärkenveränderungen vornehmen.
150
Uni Salzburg, SS 2008
Bei Video ist Streaming eindeutig das einzig sinnvolle Verfahren – Videos sind immer zu groß
um sie einzubetten.
Video Streaming funktioniert mit Dateien im FLV-Format. Dabei wird also die swf-Datei und
die FLV-Datei auf den Webserver geladen, die swf-Datei wie üblich in die Webseite eingebaut.
Das Laden und Abspielen der FLV-Datei erledigt dann Flash.
Der erste Schritt ist also immer die Erzeugung der FLV-Datei. Manche Pro-
gramme (besonders aus dem Hause Adobe) können FLV bereits exportieren.
Falls die Datei in einem andern Video-Format vorliegt kann sie mit dem Flash
Video Encoder konvertieren. Unter Linux können Sie das Programm mencoder verwenden 17.
Für das Abspielen der Videos gibt es eine fertige FLV-Komponente. Wenn
man diese (ähnlich wie ein Symbol) auf die Bühne zieht, dann hat die Instanz
auf der Bühne nicht nur Eigenschaften sondern auch Parameter:
17
http://studge.com/creating-flash-video-in-linux/
151
WWW und Multimedia: Flash als Audio und Video-Player
Als Parameter contentPath den Pfad zur FLV-Datei eingeben. Der Parameter skin ist beson-
ders bequem: hier bietet Flash ein Fenster mit vielen fertige Skins an.
Zusammenfassend ist das Erstellen eines Players einfach und schnell erledigt.
Um die Dateigröße der swf-Datei klein zu halten kann man eine Audiodatei auch von einem
externen Speicherort streamen.
Ein Audio-Player soll mp3-Dateien abspielen, steuern und den Namen des Stücks in einem
dynamischen Textfeld anzeigt. Die mp3-Dateien müssen die Dateinamen 1.mp3, 2.mp3,
3.mp3, … haben.
Wenn die Dateinamen 1.mp3, 2.mp3,… sind, woher weiß der Player dann den Titel des Musik-
stücks? Die Antwort ist in der mp3-Datei versteckt: In der Datei können Informationen über
das Musikstück gespeichert werden, in den ID3-Tags 18. Die kann sogar der Windows Explorer
anzeigen:
18
http://id3.org/
152
Uni Salzburg, SS 2008
Flash beherrscht die Technik des Streamings. Das heißt: die mp3-Datei muss nicht vollständig
geladen werden um sie abzuspielen. Sobald ein paar Sekunden Musik aus der Datei geladen
sind, spielt Flash den Anfang ab. Das Laden und das Abspielen laufen dann gleichzeitig ab.
Trotzdem wird das Laden einer mp3-Datei (im Vergleich zu anderen Actionscript-Befehlen)
sehr lange dauern - vielleicht eine ganze Sekunde. Es wäre nicht gut, wenn das ganze Flash-
Programm während dieser Wartezeit „stehen bleiben“ würde.
Die Lösung für dieses Problem kennen Sie schon von AJAX: asynchrone Programmierung. Ein
Verarbeitungsschritt, der besonders lange dauert – hier das Starten der mp3-Datei – wird ge-
startet, aber sein Ende wird nicht abgewartet.
Erst wenn die mp3-Datei fertig geladen ist, bzw. wenn genug von der mp3-Datei geladen ist,
damit man die ID3-Tags lesen kann, wird eine bestimmte Funktion aufgerufen. Diese Funktion
wird manchmal „Callback-Funktion“ genannt.
Ein einfaches Beispiel mit einer mp3-Datei und dem Lesen des ID3-Tags:
Ein Sound-Objekt wird erzeugt. Die Ereignis-Funktion onID3 des Sound-Objekts wird definiert.
Dann wird das Laden einer mp3-Datei gestartet. Dieser Schritt kann lange dauern, deswegen
wartet der mp3-Player nicht, sondern geht weiter zum nächsten Befehl.
Erst viele Millisekunden später, wenn der Anfang der mp3-Datei geladen wurde, wird Flash die
Funktion onID3 aufrufen. Innerhalb dieser Funktion kann man auf this.id.songname und
this.id.artist zugreifen. Diese Information kann man dann in einem dynamischen Textfeld
anzeigen:
Als Variablen auf der Hauptzeitleiste braucht man für den Audioplayer neben dem Sound-
Objekt noch ein Variable (i), die anzeigt, welches Stück gerade gespielt wird (1,2,3…), und
eine Variable, die anzeigt, wie viele St