Seiten: [1]
AntwortenDrucken
Autor Thema: FavoGraph  (Gelesen 1155 mal)
Gobo
nicht zu stoppen
*
Offline Offline

Beiträge: 1217



« am: 28. Dezember 2008, 18:02:41 »
ZitierenZitat

Ich hatte über die Feiertage ein bisschen Zeit zum experimentieren, also habe ich mir Javascript und das "neue" Canvas-Element vorgenommen. Eins führt zum Anderen und am Ende kann ich FavoGraph präsentieren, ein Javascript, das das Favicon einer Website ständig dynamisch neu mit Spirographen bemalt.

Wer's selbst mal ausprobieren will, lädt sich das Skript aus dem Anhang herunter und notiert in seiner HTML Datei
Code:
<script src="favograph.js"></script>
wobei evtl natürlich der Pfad angepasst werden muss. Das Skript erzeugt selbsttätig ein Link-Element des richtigen Typs für das Favicon und startet die notwendigen Funktionen.

Wie das aber mit neuen Technologien allgemein und bei Javascript im Besonderen ist, funktioniert es nicht gleich überall. Man benötigt hier einen Browser, der nicht nur das Canvas-Element samt der Methode getContext("2d") kennt, sondern auch noch toDataURL(), um den Inhalt des Canvas per DataURL übergeben zu können. Dazu zählen unter anderem Firefox in Version 2 und 3 und Opera ab V9.2. Safari unterstützt kein toDataURL, daher leider keine Unterstützung. Der InternetExplorer kann's natürlich gar nicht, jedenfalls nicht in irgendwelchen aktuell öffentlich zu testenden Versionen. Macht aber nichts, in den nicht unterstützten Browsern sieht man eben kein FavIcon und ggf eine Fehlermeldung, ansonsten bleibt alles beim Alten.


Inspiriert wurde FavoGraph durch Defender of the favicon, dessen Autor übrigens auch 3D Tomb II geschrieben hat, einen Shooter in weniger als 4K Javascript für den Browser im Stile von Wolfenstein 3D.

Eigentlich wollte ich mir Canvas ansehen, um meine langsame Umsetzung von Langton's Ameise mal ordentlich zu beschleunigen. Langton's Ameise beschreibt einen einfachen Algorithmus, der trotz seiner Einfachheit komplexe Muster zeichnet. Eine Ameise sieht sich die Farbe des Feldes an auf dem sie steht. Hat das Feld die normale Hintergrundfarbe, dann malt die Ameise ihre eigene Farbe dorthin und dreht sich nach links. Ansonsten malt sie die Hintergrundfarbe auf ihr Feld und dreht sich nach rechts. Zum Schluss geht sie immer einen Schritt vor. Nachdem anfänglich erst ein nahezu chaotisches Muster gezeichnet wird, verfällt die Ameise nach einer gewissen Anzahl von Schritten in den Bau einer 45° geneigten "Straße". Die Zeichenfläche ist dabei als Torus zu betrachten, um der Anforderung einer unendlichen Fläche näher zu kommen und die Sache doch etwas interessanter zu gestalten. Denn es muss ja nicht nur eine Ameise in der weiten Welt herumlaufen...
Umgesetzt mit Canvas geht es schon deutlich flotter zur Sache, so dass ich sogar Spielereien einbauen konnte, wie etwa den Fade-Effekt, mit dem die Spuren der Ameisen mit der Zeit verblassen. So wirkt die Zeichnung von Langton's Ameise fast schon wie ein Screensaver Zwinkernd

Über die Ameisen bin ich dann wieder zu Spirographen gekommen. Der Code hinter dem letzten Link enthält schon alles nötige, für die ganz oben erwähnte und unten angehangene Version, die die Spirographen in das FavIcon malt. Neben der einfachen Punktzeichnung beherrscht das Skript auch Linienzeichnungen, einfarbig und mit Farbverläufen, sowohl radial als auch linear. Ausserdem habe ich ein paar Blendeffekte eingebaut, etwa das bei Langton's Ameise verwendete Fade, das die komplette Zeichenfläche mit einem fast transparent schwarzen Rechteck überzieht und auch einige andere Varianten, die die komplette Fläche wirklich mit einem deckenden Schwarz einfärben, da die transparente Version schwache Schatten hinterlässt. Die Größe des Canvas Elementes und damit auch die darin zu zeichnenden Spirographen wird immer auf die maximal verfügbare Abmessung gesetzt, auch wenn das Anzeigefenster in der Größe verändert wird.

Der Quelltext steht jedem interessierten offen, hier wird nichts obfuscated oder gar verschlüsselt. Zwinkernd

* favograph.js (10.5 KB - runtergeladen 66 Mal.)
« Letzte Änderung: 28. Dezember 2008, 18:10:49 von Gobo » Moderator informieren   Gespeichert

Wenn die Klugen immer nachgeben, geschieht nur das, was die Dummen wollen.
Laubi
nicht zu stoppen
*
Offline Offline

Beiträge: 1901


WWW
« Antworten #1 am: 18. Januar 2009, 21:35:04 »
ZitierenZitat

cool! Ich weiss zwar nicht was ich damit anfangen soll, ist aber auf jeden Fall eine nette Spielerei. (Nimm's mir nicht Übel falls es für dich mehr ist!)

Ich weiss noch als ich "Defender of the favicon" zum ersten mal gesehen habe, hab eine Weile gebraucht bis ich den "Spielscreen" gefunden habe ;-)

Canvas ist halt schon witzig und dank excanvas läuft's auch fast überall..
Moderator informieren   Gespeichert
Gobo
nicht zu stoppen
*
Offline Offline

Beiträge: 1217



« Antworten #2 am: 18. Januar 2009, 22:03:15 »
ZitierenZitat

cool! Ich weiss zwar nicht was ich damit anfangen soll, ist aber auf jeden Fall eine nette Spielerei. (Nimm's mir nicht Übel falls es für dich mehr ist!)

Aber nicht doch, genau als Spielerei war es ja auch gedacht. Ich wollte einfach etwas mit Canvas experimentieren und da ich eh schon Code für den Spirographen hatte, passte einfach eins zum anderen. Wobei die Spirographen in ordentlicher Grösse (wie bei meinem letzten Link) natürlich besser wirken.
Moderator informieren   Gespeichert

Wenn die Klugen immer nachgeben, geschieht nur das, was die Dummen wollen.
Seiten: [1]
AntwortenDrucken
CodeForum.chAndere ForenVeröffentlichungenThema: FavoGraph
Gehe zu:  

 

Partner Sites

Werbung

TinyPortal v1.0.5 beta 1© Bloc