Zu den Aufzeichnungen der tutorials.de-Live-Workshops
  • Webmaster & Internet

    Webmaster & Internet
  • Flash-Tutorials

    von Jens B. Veröffentlicht: 16.09.09 10:52
    Seitenaufrufe: 5853 
    content/attachments/55503-zeitleiste.jpg.html Tweening für Anfänger

    Als Flash-Anfänger stößt man in der Regel als erstes auf das Tweening. Über die Jahre ist Tweening umfangreicher geworden (nicht aber komplizierter), weswegen eine neue Version meines Anfänger-Tweening-Tutorials überfällig wurde. Zusätzlich zum normalen Tweening gibt es inzwischen den Motion-Editor: ein starkes Tool, um dynamischere und bessere Tweens zu erzeugen. So kann z.B. die Geschwindigkeit des Tweens durch eine Kurve dargestellt werden und so eine weniger steif wirkende Animation erzeugt werden.

    Die Zeitleiste
    Die Zeitleiste ist der Ort, an dem all die Rahmenbedingungen für einen Tween erstellt werden.

    Hier wird der chronologische Ablauf unseres Films angezeigt. Sie ist wie eine Tabelle für Ebenen und dazugehörige Schlüsselbilder. Ich habe mal ein paar Bereiche nummeriert.
    1. Anzeige der verschiedenen Ebenen, der „Layers“. Flash ist wie ein Overhead-Projektor und jede dieser Ebenen ist eine Folie. Auf diese Ebenen kann man Elemente setzen, die dann auf die Anzeige projiziert werden – und sich je nach Ebene gegenseitig verdecken. Dinge im Hintergrund sind also in tieferen Ebenen als Dinge im Vordergrund.
    2. Hier werden die Schlüsselbilder der Ebenen angezeigt. Zu Schlüsselbildern später mehr.
    3. Anzeige der fps (Frames per Second) und der aktuellen Position in Sekunden.
    4. Ein paar Einstellungsmöglichkeiten zur leichteren Markierung mehrere Frames.
    5. Hier kann man neue Ebenen erstellen oder vorhandene Löschen. Außerdem können Ebenen zu Ordnern zusammengefasst werden.
    6. Eine Beispielebene. Beim Auge kann man sie ein- und ausblenden, bei dem Schloss kann man sie sperren.
    7. Der Raster für den neuen Motion Editor.

    von Jens B. Veröffentlicht: 10.11.08 10:54
    Seitenaufrufe: 1962 
    Vorschau Herzlich Willkommen beim zweiten Teil des LineRider-Tutorials für Tutorials.de!

    Danke für das Feedback, welches ich für den ersten Teil erhalten habe. Nach über einem Jahr kommt nun der zweite Teil. So lange? Es ist viel passiert, ich hatte nicht immer Zeit und das Projekt lag für viele Monate still. Sich danach wieder aufzuraffen, wieder reinzukommen etc. hat auch noch einige Zeit und Motivation gebraucht - letztere kam von euch, vielen Dank dafür!

    So, dann wollen wir mal unser Line-Rider Spiel fortführen. Zunächst einmal ein kleines Resumée: wir haben in Teil 1 dieses Tutorials eine komplette Zeichenengine implementiert, die gezeichneten Linien in 3 verschiedene Arrays eingespeichert und sogar eine Speichern-Funktion eingebaut. Mit der Löschenfunktion haben wir bereits eine abstrakte Form der Kollisionsabfrage kennen gelernt. Was nun noch zum kompletten LineRider-Spaß fehlt ist der "Play"-Modus, in dem wir unseren LineRider die Strecke entlangrutschen lassen.

    Also werden wir uns in diesem Tutorial damit beschäftigen. Wir werden ziemlich viel auf den mathematischen und relativ physikalischen Hintergrund eingehen; dieser Tutorial wird nicht ganz so Codelastig wie der letzte, was u.a. daran lag, dass es fast immer das Selbe für 3 Arrays war. Da haben wir hier in Teil 2 schon einmal den Vorteil, dass wir das Deko-Array komplett ignorieren können, denn dazu ist es da.

    Ihr findet den ersten Teil des Tutorials sowie deren Anhang, welchen ich als Ausgangspunkt für dieses Tutorial verwende, hier.

    Wie letztes mal gibt es auch diesmal einen umfangreichen Anhang, mit welchem man viele Schritte evtl. besser nachvollziehen kann. Und ich möchte ein weiteres Mal darauf hinweisen: dies ist eher eine Fortbildung als eine Anleitung, wie man dieses Spiel macht. Denn für noch ein LineRider Spiel besteht kein Bedarf.

    Ich werde an manchen Stellen nicht auf alles eingehen und ich werde auch nicht jeden kleinen Fehler der Engine ausmerzen. Eine solche Engine ist so komplex, dass das den Rahmen eines Tutorials sprengen würde - und es wäre einfach nicht wirklich interessant zu lesen. Nein, die kleinen Fehler überlasse ich euch. Dieser Teil wird viel theoretischer als der letzte - wenn ihr erst einmal den Background habt könnt ihr die Engine sicherlich noch beliebig erweitern.
    von Jens B. Veröffentlicht: 23.10.07 10:59
    Seitenaufrufe: 941 
    Vorschau Es hat einige Zeit gedauert, nachdem ich mich zu einem neuen Tutorial aufraffen konnte. Diesesmal geht es wieder um ein Spiel, allerdings bei weitem nicht so simpel wie beim letzten (also dem Weltraumshooter). Ich werde im folgenden nicht zeigen, wie man mit Flash umgeht. Ich werde nicht jede einzelne Codezeile erklären. Dieses Tutorial wendet sich ganz klar an fortgeschrittene Benutzer; wenn man so will an jene, welche sich durch mein älteres Weltraumshooter-Tutorial hindurchgearbeitet haben. Ich werde keine Grundlagenfunktionen erklären geschweige denn wie man das Design aufbaut o.ä.

    Ich werde im Folgenden darauf eingehen, wie man u.a. Kollisionsabfragen komplizierterer Objekte auch in größeren Arealen realisiert, werde eine kleine Physik-Engine realisieren und den ein oder anderen Kniff im Umgang mit Flash aufzeigen. Im Großen und Ganzen wird hier also eine extended edition meines ersten Tutorials geboten, man wird hiernach selbstständiger an kompliziertere Probleme heran gehen.

    Seht dieses Tutorial also eher als Fortbildung als als Anleitung, wie man genau dieses Spiel programmiert. Denn für letzteres besteht kein Bedarf. Ich habe die Projektdateien angehängt.

    von p-flash Veröffentlicht: 12.11.05 11:01
    Seitenaufrufe: 357 
    NEUE VERSION VERFÜGBAR! Am Ende des Tutorials.

    Einleitung:


    Dieses Tutorial soll eine Möglichkeit zeigen, wie man mit Flash und PHP einen einfachen Html-Editor realisieren kann. Es sind ausschließlich Kenntnisse in Flash MX 2004 und AS 2 erforderlich. Die php-Datei ist ziemlich klein, aber dennoch sehr wichtig. Ich habe versucht den php-Code so ausführlich wie möglich zu erklären, damit dieser auch ohne Vorkenntnisse verständlich ist.

    Vorschau


    Die Klasse <HtmlEditor>:

    Die Klasse HtmlEditor bietet lediglich eine Methode zum hinzufügen von Tags in ein Textfeld ein.
    von Jens B. Veröffentlicht: 23.08.05 11:05
    Seitenaufrufe: 7549 
    Vorschau Dieses Tutorial wurde im Original 2005 geschrieben und im August 2010 komplett neu aufgesetzt.

    Eine komplette Homepage in Flash

    Viele, die sich eine Homepage machen möchten, möchten eine Flashhomepage. Und das aus vielen verschiedenen Gründen. In diesem Tutorial werden wir zunächst einmal ergründen, was das überhaupt heißt - und dann den Grundstein für die erste eigene Flashhomepage setzen.

    Flashhomepage

    Flashpages sind cool. Und genau das ist das Problem. Der erste Gedanke bei den meisten, nachdem sie den Entschluss zur eigenen Homepage gemacht haben: die Page soll auch gut sein. Und im Internet gibt es viele gute Flashpages in denen sich alles bewegt, in denen alles schön animiert ist. Sowas will ich auch.

    Dabei gibt es allerdings eine Reihe von Problemen: um eine wirklich gute Flashpage zu haben muss man sehr viel Zeit investieren - und es schlicht und einfach können. Der Aufwand ist gegenüber einer "normalen" Seite enorm - das muss sich schon lohnen. Lohnen muss es sich auch, auf einiges zu verzichten. So kann man Flashseiten nicht so gut ausdrucken wie normale, man kann nicht einfach auf Unterseiten verlinken, Menschen mit Sehschwächen können den Text nur dann größer Stellen, wenn der Programmierer der Seite diese Funktion eingebaut hat (normalerweise gibt es spezielle Browser dafür), die meisten Flashpages haben eine feste Größe und sind deswegen auf manchen Bildschirmen überhaupt nicht darstellbar. Außerdem hat nicht jeder User den Flashplayer installiert - und wird dieser User sich nun für meine Page dieses Plugin extra installieren?
    von Jens B. Veröffentlicht: 14.07.05 10:57
    Seitenaufrufe: 1700 
    Vorschau Dynamische Bildergalerie in Flash und PHP

    In diesem Tutorial werden wir eine dynamische Bildergalerie erstellen. Dynamisch, weil die Bilder aus externen Datenquellen eingeladen werden - nämlich aus einem "images"-Ordner. So sind die Bilder in der Galerie besonders leicht zu pflegen.

    Um das zu realisieren werden wir PHP verwenden.

    Das PHP-Script

    Wir brauchen einen PHP-Script, um die Dateinamen in dem entsprechenden Ordner auszulesen. Zusätzlich ist für uns noch die Anzahl der Bilder interessant, z.B. um zu berechnen wie viele Seiten unsere Galerie haben wird. Schauen wir uns diesen PHP-Script mal an:
    von p-flash Veröffentlicht: 21.06.05 11:08
    Seitenaufrufe: 434 
    Vorschau Dieses Tutorial zeigt wie man eine Windows ähnliche Navigation erstellen kann.

    Hier eine Vorschau:
    http://www.p-creations.com/tutorials/winNavi/winNavi.swf

    Zur Original-Ansicht

    Die Ordnerstruktur sieht folgendermaßen aus:



    Im images Ordner befindet sich der icons Ordner. In diesem kommen die Piktogramme, die später von Flash geladen werden.

    Im sections Ordner kommen die swf-Dateien der einzelnen Sections.

    Die gesamten Dateien werden in die Datei winNavi.swf geladen, welche sich im Hauptordner befindet. Der komplette Code befindet sich im ersten Frame in der Hauptzeitleiste.
    von Tobias Menzel Veröffentlicht: 10.03.05 11:09
    Seitenaufrufe: 1047 
    In diesem Tutorial wolle wir uns einen eigenen, - leidlich dynamischen - vertikalen Rollbalken basteln, mit dem wir beliebige Inhalte scrollen können.

    Wir beginnen zunächst mit den nötigen grafischen Komponenten:
    • Hintergrund für den Rollbalken
    • Anfasser (Slider)
    • Pfeile zum schrittweisen Rollen
    Unser Rollbalken wird vertikal dynamisch skalierbar sein, aber wir werden eine feste Breite vorgeben. In diesem Beispiel habe ich mich auf schlanke 10 Pixel festgelegt; selbstverständlich könnt Ihr eine eigene Größe wählen. Wichtig ist nur, dass die verschiedenen Komponenten zusammenpassen und mit ganzzahligen Werten skaliert werden.

    von Tobias Menzel Veröffentlicht: 07.02.05 11:10
    Seitenaufrufe: 1052 
    In diesem Tutorial wollen wir einen einfachen horizontalen Newsticker erstellen, der Texte beliebiger Länge ohne Unterbrechung als Laufschrift anzeigt.

    Zunächst legen wir einige MovieClips an, die unseren Lauftext darstellen. Wir beginnen mit einem MC, der lediglich ein leeres dynamisches Textfeld enthält. Die benötigten Zeichen sollten in diesem Textfeld eingebunden werden; z.B. alle Buchstaben, Zahlen, Satzzeichen sowie die deutschen Sonderzeichen ä, ö, ü, Ä, Ö, Ü und ß.
    von Tobias Menzel Veröffentlicht: 09.01.05 11:12
    Seitenaufrufe: 618 
    Hi,

    in diesem Tutorial werden wir einen MovieClip-Prototype erstellen, mit dem für jeden MovieClip individuelle ToolTips angelegt werden können.

    Wir verwenden hier (fast) ausschließlich ActionScript mit Zeichnungsmethoden - ich werde versuchen, den Code Schritt für Schritt zu erklären.

    Damit unser ToolTip mit einer eingebetteten Schrift, die auf Alphafading reagiert, angezeigt wird, legen wir in der Bibliothek zunächst eine neue Schriftart an (z.B. Verdana, 10pt, Alias-Text) und geben es unter seinem Bezeichner zum Export für ActionScript frei (Wichtig: die im Schriftart-Objekt angegebene Schriftgröße muss der später im Prototype angegebenen Schriftgröße entsprechen).
    von Veröffentlicht: 22.12.04 11:13
    Seitenaufrufe: 640 
    XML und CSS in Flash

    XML ist gar nicht so schwer wie man vielleicht denkt. Es ist eine Seitenbeschreibungssprache
    ähnlich wie HTML, bietet aber weit aus mehr Möglichkeiten. Man kann die Formatierungsvorgaben selbst definieren.

    Zu Beginn erstellen wir das XML-Dokument dafür verwenden wir einen Texteditor, der die Ausgabe als Unicode-Text unterstützt. Ich verwende als Windows nutze "WordPad".
    Öffnet "WordPad" erstellt eine neue Datei und speichert diese unter dem
    Namen: "xmltut.xml" als Unicode-Text

    Nun beginnen wir mit den ersten Zeilen XML-Code.
    von Jens B. Veröffentlicht: 04.12.04 11:13
    Seitenaufrufe: 1148 
    Vorschau Hallo und Herzlich Willkommen zu meinem zweiten Tutorial für Tutorials.de!

    In diesem Tutorial werden wir einen Adventskalender erstellen und dabei lernen, wie man Masken verwendet und Popups hervorruft. Dabei werden wir uns auf Grundlagen beschränken; dieses Tutorial richtet sich an Anfänger. Was du als Geschenk in die einzelnen Türchen machst bleibt dir überlassen. Ich habe einfach mehr oder minder bekannt Weihnachtsgedichte und –lieder eingebaut.
    von Tobias Menzel Veröffentlicht: 17.11.04 11:14
    Seitenaufrufe: 713 
    Da doch immer wieder Fragen nach diesen Themen aufkommen, hier ein Tutorial für eine simple Menünavigation mit dynamisch nachladbaren Inhalten und externem Preloader.

    Zunächst erstellen wir uns die nötigen Steuerelemente: Buttons für das Menü, einen leeren Container, der die Inhalte aufnimmt und den Preloader, der den Fortschritt mit einem Balken anzeigt.

    Unser Button benötigt im Prinzip nur eine Fläche, die angeklickt werden kann und eine einzige Memberfunktion. Damit es aber zumindest ein wenig nach etwas aussieht, habe ich dem Button zwei Schlüsselbilder (für MouseOut und MouseOver) verpasst. Auf einer weiteren Ebene fügen wir ein dynamisches Textfeld für die Beschriftung ein, dem wir den Instanznamen "btext" geben.
    von Tobias Menzel Veröffentlicht: 06.11.04 11:15
    Seitenaufrufe: 972 
    Dieses Tutorial erklärt die Erstellung eines einfachen Formmailers mit Flash und PHP

    Zunächst erstellen wir einen MovieClip (mailform), in dem wir unser Formular unterbringen. Ich habe hier für jede Gruppe von Objekten eine eigene Ebene angelegt:

    -> Überschriften (title)
    -> Eingabefelder (fields)
    -> Schaltflächen (buttons)
    -> Anzeigefenster (display)

    -> sowie eine Ebene für das Script (code)
    von Tobias Menzel Veröffentlicht: 20.10.04 11:16
    Seitenaufrufe: 382 
    Dieses Tutorial zeigt, wie man in Flash Pegelmeter simulieren kann.

    Wir erstellen zunächst drei MovieCLips für die LEDs in Grün, Gelb und Rot. Hierbei verwenden wir ein Formtweening, um die Helligkeit nach und nach zu verringern. Wir fügen ein stop() im ersten und im letzen Schlüsselbild ein, damit die Animation nicht sofort abspielt.



    Als nächstes erstellen wir einen MovieClip für das komplette Pegelmeter (meter) , der 7 dieser LEDs enthält (man kann natürlich mehr als sieben verwenden, wenn man den Code entsprechend anpasst).

    Den LEDs geben wir durchnummerierte Instanznamen (m1, m2, ... m7).
    von DJ Twin Veröffentlicht: 04.10.04 11:17
    Seitenaufrufe: 807 
    Im folgenden Tutorial erstellen wir eine Tabelle, die mit externen Daten gefüttert wird.

    1) Wir erstellen einen neuen MovieClip [strg + F8] mit dem Name "scrollfeld".

    2) Wir ziehen die Komponente "ScrollPane" in unseren erstellten MovieClip, geben ihr den Instanznamen "liste" und skalieren ihn in die gewünschte Größe.

    3) Zurück auf die Hauptbühne; Nun ziehen wir den erstellten MovieClip von der Bibliothek auf die Bühne und geben ihm den Instanznamen "scroll_mc".

    4) Damit wir in der Tabelle unsere gewünschte Schriftart verwenden können, laden wir diese in die Bibliothek. Wir klicken in der Bibliothek rechts oben auf das Symbol und wählen "Neue Schriftart" und geben die gewünschten Parameter ein (Ich habe für das Tutorial die Schriftart "Arial" verwendet und sie auch so benannt).

    5) Als nächstes gehen wir in die Bild-Aktionen mit [F9] (Das Schlüsselbild muss ausgewählt sein!)

    6) Mit dem Befehl "loadVariables" laden wir die externen Daten in den Film
    von ExMD Veröffentlicht: 24.09.04 11:18
    Seitenaufrufe: 367 
    Vorwort:
    Viele kennen bestimmt das Problem, denn ich bin selbst schon unzählige Male in diversen Foren darauf gestoßen und hab mich lange damit rumgeschlagen, bis ich ne Lösung fand:

    Man importiert eine Grafik in ein Flashdokument, um diese als Hintergrund zu benutzen. Diese Grafik hat die gleichen Ausmaße wie das Flashdokument selbst (z.B. 100 x 100 Pixel).
    Hat man seine Animation fertiggestellt und spielt sie in einem externen Player ab, kommt dann die Überraschung... Die als Hintergrund benutzte Grafik zeigt Pixelfehler. Meistens leichte Verzerrungen zur Seite (s. Abb. 2 in der angehängten Zipdatei).

    Seltsamerweise tritt dies nur im Flashplayer selbst auf, bzw. auf Webseiten, wo die Animation eingebunden wurde.
    In Flash selbst erkennt man nichts.
    Deswegen ist davon auszugehn, dass der Player selbst einen Bug hat, den es zu umgehen gilt.
    In Version 7 des Players tritt meiner Erfahrung nach dieser Darstellungsfehler seltener bis gar nicht mehr auf. Doch leider kann man nicht davon ausgehen, dass Jedermann das aktuellste Flash-Plugin installiert hat.

    Es gibt nun diverse Vorschläge, um diesen Bug zu umgehen. Leider habe ich schlechte Erfahrungen damit gemacht, denn zum einen waren diese Tricks teilweise sehr Zeitaufwenig in der Umsetzung, zum andern klappen sie auch nicht immer (da war die Rede davon, andere Bildformate beim importieren zu benutzen, das Bild im Grafikprogramm auf 99% zu verkleinern und in Flash wieder auf 100% zu vergrößern, die Grafik als geloopten Moviclip umzuwandeln oder sie in Flash zu teilen und wieder zusammenzufügen usw. usw.)

    Dabei is die Lösung extrem simpel!

    Lösung:
    Flash hat also Probleme eine Grafik in einer Animation korrekt darzustellen, wenn diese importierte Grafik genau so groß ist wie die Animation selbst, also "press sitzt".
    Lasst bei der Grafik, bevor ihr sie in eurem Bildbearbeitungsprogramm als jpg o.ä. exportiert, einfach einen Rand von einem Pixel an jeder Seite stehen (oben, unten, rechts und links).
    Bei dem 100x100 Pixel-Beispiel wäre eure Grafik dann also 102x102 Pixel groß (die Grafik nicht das Flash-Dokument! ). (s. Abb. 3 in der angehängten Zipdatei: Hier liegt ein weißer, ein Pixel großer Rahmen um die Grafik)
    Richtet ihr sie dann mittig in Flash aus, steht sie etwas über. Das macht allerdings nichts, denn das wird durch die Dokumentgröße der Flashanimation sowieso nicht mehr zu sehen sein.

    Spielt ihr die Animation nun im Player oder Browser ab, tritt die Verzerrung nicht mehr auf!

    ACHTUNG!
    Viele machen den Fehler und vergrößern die Grafik einfach! Das ist aber nicht Sinn der Sache!
    Wenn ihr Photoshop benutzt, geht auf "Bild / Arbeitsfläche..." und gebt als Wert für Breite und Höhe jeweils 2 Pixel mehr ein!
    Es geht ja nicht darum das Bild an sich zu vergrößern, sondern nur das Dokument, bzw. die Arbeitsfläche zu erweitern.

    Das war ne Menge Text für ne sehr einfache Lösung, aber lieber zu ausführlich, als zu unverständlich...
    Ich hoffe, ich konnte einigen Verzweifelten helfen
    von Tobias Menzel Veröffentlicht: 25.08.04 11:19
    Seitenaufrufe: 942 
    Hi,

    ich habe eine kleine Anleitung zum Erstellen von animierten Schaltflächen in Flash MX erstellt.

    Dieses Tutorial zeigt, wie man mit wenigen Schritten animierte Schaltrlächen mit einem
    Partikeleffekt erstellt.
    Zunächst fertigen wir uns mit Photoshop oder einer anderen Bildbearbeitungssoftware
    die Grundelemente des Buttons an.
    Wir benötigen:

    - einen Hintergrund (es empfiehlt sich ein dunklerer Hintergrund, damit die Partikel gut sichtbar sind.

    - 3 verschiedene Variationen mit helleren Bereichen

    - ein helleres Leuchten für den „Clickeffekt“. diese Fläche sollte transparent sein und kann ein wenig über die Ränder des Buttons hinausstrahlen
    von Jens B. Veröffentlicht: 17.07.04 11:20
    Seitenaufrufe: 592 


    Durch das Umwandeln ins Flashpaper-Format sind leider einige Formatierungen (vorallem beim ActionScript) verrutscht. Dies sollte sich jedoch nicht als Problem darstellen, denn die einzelnen Arten vom AS (Kommentare, Befehle etc) sind ja mehrfarbig dargestellt.

    Also wenn z.B. am anfang einer AS Zeile ein blaues Wort steht und in der Zeile davor am Ende einer blauer Kommentar, gehört dieses Wort noch mit zum kommentar und nicht in die neue Zeile - das würde eine Fehlermeldung verursachen.
    von Matthias Kannengiesser Veröffentlicht: 23.05.04 11:21
    Seitenaufrufe: 220 
    Hi Folks,

    Hier mal ein kurzes und bündiges Tutorial zum Thema Einsatz des prototype-Objekts (Fallbeispiel: MovieClip.prototype) in Flash MX 2004. Was gilt es beim Einsatz zu beachten!

    Fallbeispiel (MovieClip.prototype)
    PHP-Code:
    MovieClip.prototype.wabbern = function(x_endy_endmultiplikatorratio) {    
            
    // Initialisierung
            
    if (this.sX == undefinedthis.sX 0;
            if (
    this.sY == undefinedthis.sY 0;        
                        
            
    // Berechnung
            
    this.sX this.sX*multiplikator+(x_end-this._xscale)*ratio;
            
    this.sY this.sY*multiplikator+(y_end-this._yscale)*ratio;
            
            
    // Umsetzung auf den jeweils betroffene MovieClip-Instanz
            
    this._xscale += this.sX;
            
    this._yscale += this.sY;        
    };

    // Ausführung
    this.onEnterFrame = function() {
        
    mc.wabbern(200,200,0.8,0.7);


    1. Schreibweise movieclip - ist Syntaktisch nicht korrekt. Es muss, wie folgt lauten: MovieClip. In Flash 5 und MX war dies noch egal - in MX 2004 nicht!

    PHP-Code:
    // In Flash 5 und MX (Funktionsfähige Schreibweisen)
    movieclip
    MovieClip
    Movieclip

    // In Flash MX 2004 (Funktionsfähige schreibweise)
    MovieClip 
    von Matthias Kannengiesser Veröffentlicht: 14.05.04 11:22
    Seitenaufrufe: 185 
    Hi Folks,

    Habe hier mal was für alle Datums-Objekt geschädigten - eine auf UTC (Universal Coordinated) basierte Lösung. Sowohl für Flash MX als auch Flash MX 2004 geeignet.

    PHP-Code:
    // AnalogUhr
    function initUTCUhr(posX,posY,radius,pzone,pstadt,pname,ptiefe) {
        
    // Variablen Initialisierung
        
    var radiantstart_xstart_yend_xend_y;
        var 
    zeit,std,mins,sek;
        var 
    sek_winkel,min_winkel,std_winkel;
        var 
    sek_radiant,min_radiant,std_radiant;
        var 
    sek_x,sek_y,min_x,min_y,std_x,std_y;
        
        
    // Winkel in Bogenmass
        
    function winkelBogen(winkel) {
            return 
    winkel/180*Math.PI;
        }
        
        
    // MovieClip für AnalogUhr erzeugen
        
    this.createEmptyMovieClip(pname,ptiefe);
        
        
    // Textfeld für Statdanzeige erzeugen
        
    this[pname].createTextField("anzeige_txt",ptiefe+1,posX,posY+radius,0,0);
        
    this[pname].anzeige_txt.autoSize "center";
        
    this[pname].anzeige_txt.text pstadt;
        
        
    // Ziffernblatt zeichnen    
        
    for(var i=1i<=60i++) {        
            
    radiant winkelBogen(i*6);        
            if (
    i%== 0) {            
                
    start_x Math.cos(radiant)*(radius-10);
                
    start_y Math.sin(radiant)*(radius-10);
                
    end_x Math.cos(radiant)*radius;
                
    end_y Math.sin(radiant)*radius;            
                
    this.lineStyle(20100);
                
    this.moveTo(posX+start_xposY+start_y);
                
    this.lineTo(posX+end_xposY+end_y);                
            } else {
                
    start_x Math.cos(radiant)*(radius-5);
                
    start_y Math.sin(radiant)*(radius-5);
                
    end_x Math.cos(radiant)*radius;
                
    end_y Math.sin(radiant)*radius;
                
    this.lineStyle(10100);
                
    this.moveTo(posX+start_xposY+start_y);
                
    this.lineTo(posX+end_xposY+end_y);
            }
        }
        
    this[pname].onEnterFrame = function() {
            
    // Zeiger entfernen        
            
    this.clear();        
            
    // Uhrzeit ermitteln
            
    zeit = new Date();
            
    sek zeit.getUTCSeconds();
            
    mins zeit.getUTCMinutes();
            
    std zeit.getUTCHours()+pzone;
            
    // AM/PM ermitteln
            
    if  (std >= 24) {
              
    std std 24
            }        
            if (
    std 12) {
                
    this.anzeige_txt.text pstadt " / am";
            } else {
                
    this.anzeige_txt.text pstadt " / pm";
            }
            
    // Zeigerwinkel Berechnen
            
    sek_winkel sek*6-90;
            
    min_winkel mins*6-90;
            
    std_winkel std*30+mins/60*30-90;
            
    // die winkel werden in bogenmaße umgerechnet
            
    sek_radiant winkelBogen(sek_winkel);
            
    min_radiant winkelBogen(min_winkel);
            
    std_radiant winkelBogen(std_winkel);
            
    // Zeigerpunkte via Sin/Cos berechnen
            // Sekunden
            
    sek_x posX Math.cos(sek_radiant)*radius;
            
    sek_y posY Math.sin(sek_radiant)*radius;
            
    // Minuten
            
    min_x posX Math.cos(min_radiant)*(radius*1);
            
    min_y posY Math.sin(min_radiant)*(radius*1);
            
    // Sekunden
            
    std_x posX Math.cos(std_radiant)*(radius*.75);
            
    std_y posY Math.sin(std_radiant)*(radius*.75);
            
    // Zeiger zeichnen
            // Sekunden
            
    this.lineStyle(10xff0000100);
            
    this.moveTo(posXposY);
            
    this.lineTo(sek_xsek_y);        
            
    // Minuten
            
    this.lineStyle(20100);
            
    this.moveTo(posXposY);
            
    this.lineTo(min_xmin_y);        
            
    // Stunden
            
    this.lineStyle(30100);
            
    this.moveTo(posXposY);
            
    this.lineTo(std_xstd_y);
        }     
    }

    // Städte und Zeitzonen
    var x=0,y=0;
    stadtliste = new Array("Berlin","Istanbul","New York","Moskau","Tokyo","Sydney");
    zonenliste = new Array(2,3,-5,4,9,10);

    // Uhren erzeugen
    for (var j=0stadtliste.lengthj++) {    
        
    startpos 150;
        
    x++;
        
    pX startpos 120*x;    
        if (
    j%== 0) {
            
    x=0;
            
    y++;
            
    pX startpos;
            
    pY 120*y;
        }
        
    initUTCUhr(pX,pY,50,zonenliste[j],stadtliste[j],"uhr"+j,j);    
    }

    /*
    // Uhren (UTC)
    // Berlin (+01:00)
    initUTCUhr(Stage.width/2,Stage.height/2,50,2,"Berlin","uhr",1);
    // Istanbul (+02:00)
    initUTCUhr(Stage.width/2,75,50,3,"Istanbul","uhr2",2);
    // New York (-05:00)
    initUTCUhr(Stage.width/2,325,50,-5,"New York","uhr3",3);
    // Moskau (+03:00)
    //initUTCUhr(100,100,50,3,"Moskau","uhr4",4);
    */ 
    Einzeln können die analog Uhren natürlich ebenfalls erzeugt werden:

    PHP-Code:
    // Uhren (UTC)
    // Berlin (+01:00)
    initUTCUhr(Stage.width/2,Stage.height/2,50,1,"Berlin","uhr",1);
    // Istanbul (+02:00)
    initUTCUhr(Stage.width/2,75,50,2,"Istanbul","uhr2",2);
    // New York (-05:00)
    initUTCUhr(Stage.width/2,325,50,-5,"New York","uhr3",3); 
    Hinweis
    GMT (Greenwich Mean Time) - im normalen täglichen Gebrauch können UTC und GMT gleichgesetzt werden.

    Info: Universal Time Coordinated
    Die UTC wird durch Mittelung der Zeittakte von genau 100 ausgewählten, in diversen Staaten betriebenen Atomuhren erzeugt. Die Signale dieser Atomuhren laufen beim "Internationalen Büro für die Zeit" in Paris zusammen. In Deutschland wurde die UTC durch das "Gesetz über die Zeitbestimmung" vom 25.07. 1978 eingeführt. In den Arbeitskarten und Unterlagen des Deutschen Wetterdienstes wird die UTC seit 1985 verwendet.

    MEZ, MESZ und GZ

    MEZ (Mittel Europäische Zeit) Mittlere Sonnenzeit des durch Görlitz verlaufenden 15. östlichen Meridians

    MESZ (MittelEuropäische SommerZeit) Gegenüber der mitteleuroäischen Zeit um 1 Stunde vorverlegte Uhrzeit zur besseren Ausnutzung des Tageslichtes und zur Herbeiführung von Erleichterungen im europäischen Bahnreiseverkehr während des Sommerhalbjahres.

    GZ (Gesetzliche Zeit) Durch das Zeitgesetz von 1978 wird die mitteleuropäische Zeit MEZ oder die mitteleuropäische Sommerzeit MESZ als gesetzliche Zeit festgelegt. Sie soll im amtlichen und geschäftlichen Verkehr verwendet werden. Die Bezeichnung GZ bei Zeitangaben bedeutet daher im Sommer MESZ und im Winter MEZ.

    Der Unterschied zwischen MEZ beziehungsweise MESZ und der koordinierten Weltzeitskala UTC beträgt:

    MEZ = UTC + 1h
    MESZ = UTC + 2h

    Liebe Grüsse
    Matze K.
    Seite 1 von 2 12 LetzteLetzte