Anzeige
Tutorialbeschreibung

PHP - Teil 20 - Flash mit PHP erstellen

PHP - Teil 20 - Flash mit PHP erstellen

Mit PHP lassen sich Flash-Anwendungen programmieren. Den Schlüssel dazu liefert die Ming-Bibliothek. Mit der lassen sich Flash-Filme im Skript erzeugen und diese unmittelbar an den Browser senden. Dadurch können dann beispielsweise auch komplexe Datenbankanwendungen bequem mit Flash-Animationen ausgestattet werden. (Denkt hier beispielsweise an dynamisch generierte Diagramme, die als Basis eine Datenbank verwenden). Aber auch existierende Flash-Filme lassen sich über das Skript laden und weiterverarbeiten.

... übrigens findest du die komplette Serie hier: PHP-Workshop-DVD - Basics & Tricks - Schnapp sie dir in unserem Shop oder in der Kreativ-Flatrate!


Bei Ming handelt es sich um eine C-Bibliothek zur Generierung von SWF-Dateien. Zwar hält sich hartnäckig das Vorurteil, dass mit Ming nur „Hilfs-Flash-Movies“ erzeugt werden können, das ist so aber nicht richtig. Denn Ming unterstützt fast alles, was man vom klassischen Flash her kennt. Dazu gehören neben der Textanzeige auch Transparenz, Streams, Morphing und ActionScript. Durch die Integration von Ming in verschiedene Programmiersprachen wie Perl, Python, Ruby und eben PHP steht nun ein probates Mittel zur serverseitigen Flash-Generierung zur Verfügung.

Die Ming-Bibliothek kann von der Seite http://www.libming.org/FrontPage heruntergeladen werden.

Bilder



 
Bei einigen Linux-Distributionen ist die Ming-Bibliothek zwar bereits enthalten; da diese aber ständig weiterentwickelt wird, sollte man stets die aktuellste Version herunterladen und installieren. Auch bei einigen Windows-Distributionen wie XAMPP oder php4win ist Ming dabei.

Bilder



 
Unter Unix wird durch die Installation die Datei libming.so erzeugt, die in das Verzeichnis /usr/lib/ verschoben wird. Dabei wird die ming.h-Bibliothek in das Verzeichnis /usr/include kopiert. Folgendes Beispiel zeigt die Anbindung der Ming-Bibliothek an PHP unter Linux:

Mkdir <phpdir>/ext/ming
Cp php ext/* <phpdir>/ext/ming
Cd <phpdir>
./buildconf
./configure –with-ming <other config option>


Unter Windows müsst ihr darauf achten, dass in der php.ini die Zeile extension = php_ming.dll vorhanden und auskommentiert ist. (Das Modul wird allerdings nur gefunden, wenn die extension_dir-Variable richtig gesetzt wurde).


Flash-Anwendungen erstellen

Prinzipiell sind bei der Erzeugung von Flash-Anwendungen immer mehrere Schritte nötig:

• An den Browser muss ein Header gesendet werden.
• Erstellen und Konfigurieren eines neuen Flash-Movie-Objekts.
• Die Flash-Objekte werden erzeugt. Das können beispielsweise Texte, Formen, Bilder sein.
• Die Objekte werden in den Film eingefügt.
• Der Film wird ausgegeben.

Damit der Flash-Film im Browser wiedergegeben werden kann, muss ein Header mitgeschickt werden. Wie bei Header-Anweisungen üblich, muss diese vor allen HTML- bzw. PHP-Ausgaben stehen. Da es sich um ein Shockwave-Objekt handelt, muss die folgende Anweisung angegeben werden:

header('Content-type: application/x-shockwave-flash');

Um einen neuen Flash-Film zu erstellen, wird die folgende Anweisung verwendet:

$m = new SWFMovie();

Diese Funktion erwartet keine Parameter. Sie liefert einen Zeiger auf das neue Flash-Objekt.

 
Überprüft zunächst anhand eines einfachen Beispiels, ob die Ming-Bibliothek überhaupt läuft. Verwenden könnt ihr dafür die folgende Syntax:

<?php 
   $s = new SWFShape();
   $f = $s->addFill(0xff, 0, 0);
   $s->setRightFill($f);
   $s->movePenTo(25,25);
   $s->drawLineTo(25,50);
   $s->drawLineTo(50,50);
   $s->drawLineTo(50,25);
   $s->drawLineTo(25,25); 
   $m = new SWFMovie();
   $m->setDimension(320, 240);
   $m->add($s);
 header('Content-type: application/x-shockwave-flash');
 $m->output();
?>

Wenn ihr diese Datei im Browser aufruft, sollte sich folgendes Bild ergeben:

Bilder



 
In diesem Beispiel wurde der Seite ein rotes Rechteck hinzugefügt. Dazu wurde mit SWFShape() eine sogenannte Form angelegt. Mit addFill() wird dieser Form eine Füllung zugewiesen. Verwendet wird dabei in diesem Fall ein Farbwert. Alternativ dazu wären auch Bilder und Farbverläufe möglich.

Über add() wird das Objekt in den Film eingefügt.

Die direkte Ausgabe des Films erfolgt mit output().

Über SWFShape() lassen sich Formen erstellen. Es gibt aber auch andere Objekte, die man generieren kann.

SWFText() – Texte
SWFTextfield() – Textfelder
SWFBitmap() – Bilder
SWFButton() – Schaltflächen
SWFSprite() – Filmsequenz
SWFMorph() – Morph-Sequenzen
SWFDisplayItem() – Anzeige-Objekte
SWFFill() – Farbfüllungen
SWFGradient() – Farbverläufe
SWFFont() – Schriftarten
SWFAction() – Aktionen

addFill() wurde bereits im vorherigen Beispiel verwendet. Darüber hinaus gibt es aber noch zahlreiche andere Funktionen. So kann man über setRightFill() eine Farbe der rechten Kante der Form bestimmen.

Über movePen() und movePenTo() kann man die aktuelle Position des Stifts (mit dem in den Film gezeichnet wird) auf den Punkt mit angegebenen Koordinaten setzen.

Um Linien zu zeichnen, gibt es verschiedene Möglichkeiten. Hier stehen die beiden Funktionen drawLine() und drawLineTo() zur Verfügung. Dabei wird jeweils eine Linie von der aktuellen Position des Stifts bis zu den angegebenen Koordinaten gezogen.

 
Die Hintergrundfarbe wird über setBackground() bestimmt. Die Farbe wird dabei mittels RGB-Werten definiert.

Will man die Höhe und Breite des Films bestimmen, greift man auf die Funktion setDimension() zurück.

Mit den jetzt vorgestellten Funktionen könnt ihr bereits eure erste kleine Flash-Anwendung schreiben. Das folgende Beispiel setzt die gezeigten Funktionen ein.

<?php
   $s = new SWFShape();
   $f = $s->addFill(0xff, 0, 0);
   $s->setRightFill($f);
   $s->movePenTo(25,25);
   $s->drawLineTo(25,100);
   $s->drawLineTo(150,100);
   $s->drawLineTo(25,25);
   $m = new SWFMovie();
   $m->setDimension(320, 240);
   $m->add($s);
   $m->setBackground(0, 0, 0xff);
 header('Content-type: application/x-shockwave-flash');
   $m->output();
?>

 
Wenn ihr dieses Skript im Browser aufruft, ergibt sich folgendes Bild:

Bilder



Es wird also auf einen blauen Hintergrund ein rotes Dreieck gezeichnet.


 

Bilder einfügen

Selbstverständlich könnt ihr auch Grafiken in eure Flash-Filme einbinden. In diesem Zusammenhang wird euch die bereits in einem anderen PHP-Tutorial vorgestellte Funktion fopen() begegnen. Denn damit man ein Bild einfügen kann, muss dieses zunächst über fopen() geöffnet werden. (Das ist zumindest die sichere Variante, damit die Bilder dann auch tatsächlich eingefügt werden können).

Zum Einfügen von Grafiken wird die Funktion SWFBitmap() verwendet. Diese Funktion erzeugt ein Objekt vom Typ SWFBitmap aus einer übergebenen Bilddatei.

Die Größe des Bildes wird über die beiden Funktionen getWidth() und getHeight() bestimmt.

Das folgende Beispiel zeigt, wie sich eine Anwendung erstellen lässt, in die ein Bild eingefügt wurde.

<?php
 $b = new SWFBitmap(fopen('logo.png', 'r'));
 $width = $b->getWidth();
 $height = $b->getHeight();
 $m = new SWFMovie();
 $m->setDimension(320, 240);
 $die = $m->add($b);
 $die->moveTo(20,30);
 header('Content-type: application/x-shockwave-flash');
 $m->output();
?>

 
Das Ergebnis sieht folgendermaßen aus:

Bilder



 
Dieses Beispiel hat gezeigt, wie einfach sich Grafiken in Flash-Filme einbinden lassen.


Fazit

Flash ist nicht jedermanns Sache. Denjenigen, die ihren Browser ohne Flash-Plugin (bzw. Add-On) betreiben möchten, ist Flash ebenso ein Dorn im Auge wie vielen Programmierern, die Flash als reines "Spielzeug" sehen. Aber sei es drum. Viele Leute (und vor allem Kunden) schätzen Flash nun mal. Als Programmierer wird man über kurz oder lang wohl mit Flash in Berührung kommen. Und wenn ein Kunde wirklich einmal von euch eine Flash-Animation verlangt, müsst ihr diesen Wunsch nicht abschmettern oder euch unbedingt Flash kaufen, sondern könnt auf Ming setzen. Denn Ming bietet tatsächlich genügend Funktionen, mit denen sich auch aufwendigere Flash-Animationen entwickeln lassen. (Wenngleich Ming natürlich früher oder später an seine Grenzen stößt).

Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 15.05.2017 - 00:38

Sehr hilfreiche Informationen. Es gibt noch viel zu lernen :-) Vielen Dank!

Alternative Portrait
-versteckt-(Autor hat Seite verlassen)
  • 07.10.2016 - 12:58

Danke für das Tutorial.

Portrait von dmtw2107
  • 16.11.2013 - 09:41

verständlich und toll erklärt danke für das tutorial

Portrait von nobody09
  • 04.09.2011 - 12:50

Hi,
sehr interessantes Tutorial :)
Ein paar fragen bleiben mir gerade:
1. Actionscript: in wiefern kann es eingebunden werden? Hilf da die SWFAction Klasse? Kann man Benutzer interaktionen dadurch umsetzen oder ist das eher umständlich mit Ming?
2. Lassen sich die "Filme" auch exportieren, also irgendwie als SWF speichern?
3. Gibt es eigentlich eine Weboberfläche zum erstellen von Flash auf Ming basis? Wäre ja mal eine nette Sache :)

Greetz

x
×
×