Kapitel 26 Vergangenheit, Gegenwart und Zukunft
Flash MX, Ellipsis und Ball
Freunde alter Flash-Versionen müssen nicht zwangsläufig auf Flash MX 2004 wechseln, um die neuen Funktionen zu nutzen. Wer bereits Flash MX 2004 einsetzt, der sollte möglichst das neueste Update einspielen und weitere Entwicklungen beobachten.
Zukunft
Für die nächste Version unter dem Codenamen 8Ball (http://www.macromedia.com/devnet/mx/flash/articles/context.html auf Englisch, http://www.macromedia.com/de/devnet/mx/flash/articles/context.html auf Deutsch) verspricht Macromedia schon jetzt weit reichende Korrekturen, die über die diesmaligen eher kosmetischen Änderungen im Update auf die Version 7.2 deutlich hinausgehen sollen. Bereits jetzt betreibt Macromedias neu organisiertes Flash-Team eine angenehm offene Informationspolitik (http://www.markme.com/flashteam/).
Doch bis die nächste Version erscheint, müssen Entwickler sich mit den verfügbaren Entwicklungsumgebungen begnügen. Dabei ist aber nicht zwingend Flash MX 2004 notwendig, um ansprechende Anwendungen zu erstellen.
26.1 Flash MX anstelle von Flash MX 2004
Macromedia hat eine Reihe von Veränderungen bei der Entwicklungsumgebung Flash MX 2004 durchgeführt und diese im gleichen Atemzug in zwei Versionen aufgeteilt. Aber auch für die Abspielumgebung hat sich Macromedia Zeit genommen und diese generalüberholt: Insbesondere die Performance des Flash Players hat sich deutlich verbessert. Diese Leistungssteigerungen des Flash Players 7 wirken sich auf alle SWF-Dateien unabhängig von der Version aus. So profitieren auch Projekte auf der Basis von Flash 6 davon. Dasselbe gilt für die Unterstützung des Mausrades, mit dem der Inhalt jedes dynamischen Textfeldes verschiebbar ist.
Mit Flash MX darf die eigentlich erst seit MX 2004 vorhandene Anweisung textfeldname.mouseWheelEnabled = false; zum Deaktivieren dieses Rollrades verwendet werden. Doch nicht alle neuen Objekte, Methoden und Eigenschaften haben automatisch eine Wirkung im Flash Player 7. Und umgekehrt ist sicher nicht jeder Entwickler bereit, gleich in Flash MX 2004 bzw. Flash MX Professional 2004 zu investieren, wenn nur ausnahmsweise Funktionen des aktuellsten Flash Players erforderlich sind.
Glücklicherweise schafft ein einfacher Trick kostenlose Abhilfe und macht so aus Flash MX ein schnörkelloses Flash MX 2004 mit gewohnter Oberfläche und gewohnter Funktionalität. Interessant ist jedoch zuerst einmal, welche Objekte, Methoden und Eigenschaften der aktuellste Flash Player beherrscht. Dabei hilft ein einfaches ActionScript in Kombination mit einem dynamischen Textfeld namens output_txt zur Ausgabe:
target = _global;
// Mache die Eigenschaften des Objektes sichtbar
ASSetPropFlags(target, null, 8, 1);
for (property in target) {
output_txt.text += property+" – "+typeof target[property] + newline;
}
Die Ergebnisse haben wir in der Tabelle zusammengefasst und dabei die verschiedenen Flash Player und Entwicklungsumgebungen verglichen. Und obwohl auch Flash-Anwendungen der Version 6 die globalen Objekte des neuesten Flash Players sehen, stehen doch nicht alle bei der Programmierung zur Verfügung. Oft haben die Objekte auch nur einen eingeschränkten Funktionsumfang. Und sollte sich ein Objekt, eine Methode oder eine Eigenschaft nicht »kampflos« in einer mit Flash MX erstellten Flash-Anwendung der Version 6 trotz Flash Player 7 verwenden lassen, dann gaukeln wir dem Flash Player zur Lösung des Problems einfach die passende Version vor, um die volle Funktionalität zu erhalten.
Tabelle 26.1
Verfügbare globale Objekte in den Entwicklungsumgebungen und Playern
Objekt und Typ
|
MX
|
Player 6
|
MX 2004
|
Player 7
|
Accessibility – object
|
x
|
x
|
x
|
x
|
Array – function
|
x
|
x
|
x
|
x
|
AsBroadcaster – function
|
x
|
x
|
x
|
x
|
ASconstructor – function
|
x
|
x
|
x
|
x
|
ASnative – function
|
x
|
x
|
x
|
x
|
ASSetNative – function
|
x
|
x
|
x
|
x
|
ASSetPropFlags – function
|
x
|
x
|
x
|
x
|
AsSetupError – function
|
–
|
–
|
x
|
x
|
Boolean – function
|
x
|
x
|
x
|
x
|
Button – function
|
x
|
x
|
x
|
x
|
Camera – function
|
x
|
x
|
x
|
x
|
clearInterval – function
|
x
|
x
|
x
|
x
|
Color – function
|
x
|
x
|
x
|
x
|
ContextMenu – function
|
–
|
–
|
x
|
x
|
ContextMenuItem – function
|
–
|
–
|
x
|
x
|
Cookie – object
|
x
|
–
|
x
|
–
|
CustomActions – object
|
x
|
–
|
x
|
–
|
Date – function
|
x
|
x
|
x
|
x
|
Error – function
|
–
|
–
|
x
|
x
|
escape – function
|
x
|
x
|
x
|
x
|
EvalError – function
|
–
|
–
|
x
|
x
|
Function – function
|
x
|
x
|
x
|
x
|
FWEndCommand – function
|
–
|
–
|
x
|
–
|
FWJavaScript – function
|
–
|
–
|
x
|
–
|
Infinity – number
|
x
|
x
|
x
|
x
|
isFinite – function
|
x
|
x
|
x
|
x
|
isNaN – function
|
x
|
x
|
x
|
x
|
Key – object
|
x
|
x
|
x
|
x
|
LoadVars – function
|
x
|
x
|
x
|
x
|
LocalConnection – function
|
x
|
x
|
x
|
x
|
Math – object
|
x
|
x
|
x
|
x
|
Microphone – function
|
x
|
x
|
x
|
x
|
MMEndCommand – function
|
–
|
–
|
x
|
–
|
MMExecute – function
|
–
|
–
|
x
|
–
|
MMSave – function
|
x
|
–
|
x
|
–
|
Mouse – object
|
x
|
x
|
x
|
x
|
MovieClip – function
|
x
|
x
|
x
|
x
|
MovieClipLoader – function
|
–
|
–
|
x
|
x
|
NaN – number
|
x
|
x
|
x
|
x
|
NetConnection – function
|
x
|
x
|
x
|
x
|
NetStream – function
|
x
|
x
|
x
|
x
|
Number – function
|
x
|
x
|
x
|
x
|
o – object
|
x
|
x
|
x
|
x
|
Object – function
|
x
|
x
|
x
|
x
|
parseFloat – function
|
x
|
x
|
x
|
x
|
parseInt – function
|
x
|
x
|
x
|
x
|
PrintJob – function
|
–
|
–
|
x
|
x
|
profile – undefined
|
–
|
–
|
x
|
x
|
ReferenceError – function
|
–
|
–
|
x
|
x
|
Selection – object
|
x
|
x
|
x
|
x
|
setInterval – function
|
x
|
x
|
x
|
x
|
SharedObject – function
|
x
|
x
|
x
|
x
|
Sound – function
|
x
|
x
|
x
|
x
|
Stage – object
|
x
|
x
|
x
|
x
|
String – function
|
x
|
x
|
x
|
x
|
SyntaxError – function
|
–
|
–
|
x
|
x
|
System – object
|
x
|
x
|
x
|
x
|
TextField – function
|
x
|
x
|
x
|
x
|
TextFormat – function
|
x
|
x
|
x
|
x
|
TextSnapshot – function
|
–
|
–
|
x
|
x
|
trace – function
|
x
|
x
|
x
|
x
|
TypeError – function
|
–
|
–
|
x
|
x
|
unescape – function
|
x
|
x
|
x
|
x
|
updateAfterEvent – function
|
x
|
x
|
x
|
x
|
URIError – function
|
–
|
–
|
x
|
x
|
Video – function
|
x
|
x
|
x
|
x
|
XML – function
|
x
|
x
|
x
|
x
|
XMLNode – function
|
x
|
x
|
x
|
x
|
XMLSocket – function
|
x
|
x
|
x
|
x
|
XMLUI – object
|
–
|
–
|
x
|
–
|
26.1.1 SWF-Dateien von Version 6 in Version 7 umwandeln
Öffnen Sie die fertige SWF-Datei in einem Hexeditor wie z.B. hed.HexEd (http://www.hed.de). Wählen Sie das vierte Byte der Datei, und setzen Sie dieses auf 07. Nun sollte die Datei trotz der Erstellung mit Flash MX wie eine für den Flash Player 7 entwickelte Anwendung arbeiten und die Flash Player 7 -Anweisungen nicht mehr verweigern. Beim Abspielen in einem Flash Player 6 verhält sich der Film trotz dieser Änderungen weiterhin wie eine Flash 6 -Anwendung und ignoriert die neuen Anweisungen ohne negative Auswirkungen.
Hier klicken, um das Bild zu Vergrößern
Abbildung 26.1
Das vierte Byte in einer SWF-Datei bestimmt die Version, mit der sie vom Flash Player verarbeitet wird: Hier handelt es sich z.B. um eine Flash Player 6-Datei.
26.1.2 Mausrad und Kontextmenü
Mausrad
Zu den nützlichsten Neuerungen zählen die bereits erwähnte Mausradunterstützung und das konfigurierbare Kontextmenü. Beiden gemeinsam ist, dass sie in den meisten Fällen nur zu einer besseren Benutzbarkeit führen und somit im Notfall entbehrlich sind. Es steht also einer Verwendung wie in einem für den Flash Player 6 entwickelten Projekt nichts entgegen, solange es sich um ein entbehrliches Feature handelt.
Der folgende Programmcode bewegt beispielsweise einen Movieclip namens kugel_mc auf oder ab, wenn der Anwender das Mausrad betätigt:
kugel_mc.onMouseWheel = function(delta) {
// Bewege abhängig vom Mausrad auf oder ab
this._y += delta;
};
Mouse.addListener(kugel_mc);
Sollten Sie diese Zeilen in Flash MX eingetragen haben, dann vergessen Sie nicht, den Flash Player 6-Film mit einem Hexeditor in eine Anwendung für den Flash Player 7 zu verwandeln.
Hier klicken, um das Bild zu Vergrößern
Abbildung 26.2
Erstmals kann der Flash Player auch das Kontextmenü für Flash-Anwendungen ab Version 7 anpassen.
Ein Kontextmenü erstellen Sie mit den Objekten ContextMenu und ContextMenuItem. ContextMenu bestimmt das Aussehen eines ganzen Menüs und kann auf Wunsch auch für einzelne Objekte wie Movieclips, Schaltflächen und Textfelder unterschiedlich definiert sein. Die jeweiligen Einträge und die damit verbundene Funktionalität bestimmen Sie mit dem ContextMenuItem-Objekt:
// Erzeuge ein Kontextmenü
var menu = new ContextMenu();
// Verstecke die Standardeinträge
menu.hideBuiltInItems();
// Erzeuge einen neuen Eintrag
var item = new ContextMenuItem();
// Bestimme Beschriftung
item.caption = "saschawolter.de";
// Bestimme Funktion
item.onSelect = function() {
getURL("http://www.saschawolter.de");
};
// Füge Eintrag dem Menü hinzu
menu.customItems.push(item);
// Verwende das Menü für die gesamte Anwendung
_root.menu = menu;
Auch hier beachten Sie bitte, dass Sie den Flash Player 6-Film mit einem Hexeditor in eine Anwendung für den Flash Player 7 verwandeln, falls diese Zeilen in Flash MX und nicht in Flash MX 2004 entstanden sind.
26.1.3 Scharfe Schriften
Obwohl dieser Text bis jetzt den Anschein erweckt, man könne auf Flash MX 2004 verzichten, solange man nur wenige der neuen Funktionen benötigt und weitestgehend für Flash 6 produziert, stimmt das so nicht. Schließlich bietet Flash MX 2004 eine Reihe massiver Verbesserungen, die für jeden Entwickler nützlich sind – egal für welche Flash-Version er sich beim Veröffentlichen letztendlich entscheidet. Beispielsweise die Aliastext-Funktion, welche die scharfe Darstellung von Text erlaubt, verbessert die Qualität eigener Projekte ungemein. Zwar beschränkt sich die Auswirkung für den Flash Player 6 auf statische Texte, aber im Flash Player 7 funktioniert das auch für dynamische Texte und Eingabefelder – hier muss es sich aber um eine Datei im echten Siebener-Format handeln.
Hier klicken, um das Bild zu Vergrößern
Abbildung 26.3
Die Darstellung kleinerer Schriften gelingt dank Aliastext-Funktion deutlich besser. Diese Funktion rastert beliebige Schriftarten ähnlich wie Pixelfonts auf, so dass diese nicht mehr geglättet und somit auch nicht mehr »matschig« erscheinen.
|