Know-how für Kreative

Inhaltsverzeichnis
1 Erste Schritte
2 Versionen
3 Einführung in die Programmierung
4 Die Entwicklungsumgebung
5 Regeln
6 Anweisungen und Aktionen
7 Werte und Datentypen
8 Ausdrücke und Operatoren
9 Funktionen
10 Kontrollstrukturen
11 Dokumenten-Objektmodell und Gültigkeitsbereich (Scope)
12 Ereignisse
13 Objekterstellung
14 Vererbung
15 Movieclips
16 ActionScript 2.0
17 Komponenten
18 Codedesign und Konzeption
19 Flashdetection
20 Aussergewoehnliche Benutzerfuehrung
21 D mit Flash
22 Macromedia Central
23 HTML
24 JavaScript, ActiveX und Java
25 Flash undokumentiert
26 Vergangenheit, Gegenwart und Zukunft
27 Kurzreferenz
28 Buchtipps
29 Links
30 Die CD-ROM zum Buch
Index
Download: - ZIP, ca. 9,8 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Design / <openbook> / ActionScript | vor >>
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/) Objektorientierung und Codedesign mit Flash MX 2004
ActionScript 1 und 2 672 S., mit CD, Referenzkarte, 44,90 Euro Galileo Design ISBN 3-89842-221-6 |
| Kapitel 7 Werte und Datentypen
|  | 7.1 Variablen
|  |  | 7.1.1 Gültigkeitsbereich (engl. Scope)
|  |  | 7.1.2 Eigenschaften
|  |  | 7.1.3 Konstanten
|  |  | 7.1.4 Variablen mit set deklarieren
|  |  | 7.1.5 Variablen mit dem Zuweisungsoperator deklarieren
|  |  | 7.1.6 Lokale Variablen mit var deklarieren
|  |  | 7.1.7 Globale Variablen mit _global deklarieren
|  |  | 7.1.8 Variablen löschen
|  |  | 7.1.9 Den Typ einer Variablen ermitteln
|  | 7.2 Datentypen
|  |  | 7.2.1 Wahrheitswert (boolean)
|  |  | 7.2.2 Zahl (number)
|  |  | 7.2.3 Zeichenketten (string)
|  |  | 7.2.4 Null
|  |  | 7.2.5 Undefiniert (undefined)
|  |  | 7.2.6 Komplexe Datentypen (Objekte)
|  | 7.3 Typumwandlung
|  |  | 7.3.1 parseInt
|  |  | 7.3.2 parseFloat
|  |  | 7.3.3 Boolean (Funktion)
|  |  | 7.3.4 Number (Funktion)
|  |  | 7.3.5 String (Funktion)
|  |  | 7.3.6 Array (Funktion)
|  |  | 7.3.7 Object (Funktion)
|  | 7.4 Typisierung
|  |  | 7.4.1 Typen festlegen
|  |  | 7.4.2 Typisierung und Codehinweise
|  |  | 7.4.3 Laufzeit versus Kompilierung
## 7.2 Datentypen Hier klicken, um das Bild zu Vergrößern Abbildung 7.1 Primitive Datentypen beinhalten einen Wert, komplexe Datentypen zeigen auf eine Sammlung von weiteren Datentypen. Die Daten in einer Anwendung dürfen unterschiedlichen Typs sein. Die Zutaten eines Rezeptes werden ja auch nicht ausschließlich in Gramm, sondern ebenfalls in anderen Einheiten wie Liter gemessen. ##### Kategorien In Flash sind die Datentypen etwas abstrakter und lassen sich in zwei Kategorien unterteilen:
| Primitive Datentypen (auch einfache Datentypen, Standard-Datentypen oder Grund-Datentypen genannt)
| Komplexe Datentypen (auch zusammengesetzte Datentypen oder Referenz-Datentypen genannt)
##### primitive Datentypen Die primitiven Datentypen beinhalten immer einen konkreten Wert der folgenden Typen:
| Wahrheitswert (boolean): Dieser Datentyp gibt an, ob etwas wahr oder falsch bzw. an oder aus ist.
| Zahl (number): Dieser Datentyp steht in ActionScript sowohl für Ganzzahlen als auch für Gleitkommazahlen.
| Zeichenketten (string): Dieser Datentyp steht in ActionScript für Texte. Die zugehörigen Werte werden immer in Anführungszeichen eingeschlossen.
| Null: Dieser Datentyp kann mit null nur einen einzigen Wert annehmen.
| Undefiniert (undefined): Dieser Datentyp kann mit undefined nur einen einzigen Wert annehmen.
>     // Boolescher Wert
>     maennlich = true;
>     // Zahl
>     alter = 29;
>     // Zeichenkette
>     name = "Sascha";
##### komplexe Datentypen Die komplexen Datentypen sind eine Sammlung weiterer Eigenschaften (darum zusammengesetzte Datentypen) und beinhalten selber keinen Wert, sondern nur einen Zeiger auf die weiteren Daten (darum Referenz-Datentypen), die wiederum von einem beliebigen Typ sein dürfen. Flash unterscheidet hier standardmäßig zwischen den folgenden Typen:
| Movieclip (movieclip)
| Objekt (object)
| Funktion (function)
Dabei darf jeder dieser komplexen Datentypen wieder sämtliche primitive Datentypen wie beispielsweise Zeichenketten und Zahlen und komplexe Datentypen wie Movieclips, Objekte und Funktionen beinhalten – in diesem Fall spricht man bei diesen Wertebehältern nicht mehr von Variablen, sondern von Eigenschaften.
    // Movieclip
    _root.createEmptyMovieClip("mcBall", 1);
    mcBall._x = 100;
    mcBall._y = 200;
    // Objekt
    autor = new Object();
    autor.maennlich = true;
    autor.alter = 29;
    autor.name = "Sascha";
    // Funktion
    function ermittleMinuten(tage) {
       return (tage*24*60);
    }
##### Datentyp ermitteln Den Datentyp ermitteln Sie entweder innerhalb des Testmodus (Steuerung • Film testen) mit dem Menübefehl Fehlersuche • Variablen auflisten, mit dem Debugger (Steuerung • Fehlersuche) oder über den typeof-Operator: meineVariable = 123; trace(typeof meineVariable); ### 7.2.1 Wahrheitswert (boolean) Boolesche Werte benötigen Sie immer dann, wenn Daten nur zwei Zustände annehmen können. Umgangssprachlich spricht man bei diesen beiden Zuständen gerne auch von ein und aus oder wahr und falsch (darum auch Wahrheitswerte). Diese beiden Zustände werden durch die Konstanten false und true repräsentiert.
    // Variablen vom Typ boolean
    bezahlt = false;
    // Eigenschaft einer Movieclip-Instanz vom Typ boolean
    meinMoviClip._visible = true;
Mathematisch entsprechen die beiden Konstanten false und true den Werten 0 für false und 1 für true. Sie dürfen diese beiden Zahlen auch direkt verwenden. Bei einem strikten Vergleich (siehe »Operatoren« ab Seite 212) kann es dann aber zu Problemen kommen, da der Typ unterschiedlich ist (einmal boolean und einmal number). In der Regel ist das jedoch unerheblich, da Flash automatisch eine passende Typkonvertierung vornimmt. ##### Boolean-Objekt Als Alternative zum primitiven Datentyp boolean bietet ActionScript ein Boolean-Objekt, das als komplexer Datentyp dient (siehe Kapitel 13.5, »Objekte«). ### 7.2.2 Zahl (number) ##### Punkt statt Komma! Für Zahlen bietet Flash im Gegensatz zu vielen anderen Programmiersprachen mit number nur einen primitiven Datentyp an. Dieser Datentyp umfasst sowohl Ganzzahlen (engl. Integer) als auch Gleitkommazahlen (engl. Float). Bitte beachten Sie, dass Gleitkommazahlen als Dezimaltrennzeichen im Gegensatz zum deutschsprachigen Komma einen angelsächsischen Dezimalpunkt verwenden!
    // Ganzzahlen
    alter = 29;
    kontostand = -1000;
    // Gleitkommazahlen
    gewicht = 71.5;
    temperatur = -10.5;
Der Zahl-Datentyp verhält sich weitestgehend wie das doppelt genaue 64-Bit-Format IEEE 754 (IEEE-Standard für binäre Gleitkommazahlen-Arithmetik). Dies bedeutet, dass jede Zahl in Flash insgesamt 15 Ziffern haben kann. Das wiederum hat keine Bedeutung bezüglich der Größe, sondern nur bezüglich der Genauigkeit. Denn beispielsweise die Zahl 1e15 (dies bedeutet 1000000000000000) besitzt zwar nur eine Ziffer und ist dennoch größer als 999999999999999. Zahlen mit mehr als 15 Ziffern müssen gerundet werden. ##### Unterschiedliche Formate für Zahlen Flash bietet uns nur einen primitiven Datentyp für Zahlen an. Dieser Datentyp verwaltet Werte im IEEE 754-Format mit insgesamt 64 Bit. An einigen anderen Stellen verarbeitet Flash hingegen andere Zahlenformate – meist wird das aber vor uns verborgen, da diese ausschließlich intern abläuft. Beispielsweise vordefinierte Eigenschaften wie _alpha (Transparenz eines Movieclips) scheinen intern ein 16-Bit-Format zu verwenden. Dieses wird jedoch nach außen in Prozent umgerechnet. D.h., 100 entspricht dem internen Wert 255. Wieder andere Stellen in Flash benutzen 31 Bit plus Vorzeichen. Dazu zählt die Tiefe eines Movieclips. Diese kann immer nur als Ganzzahl zwischen 2147483647 und -2147483647 liegen. ##### größte darstellbare Zahl Die größte darstellbare Zahl in Flash ist 179769313486231 * 10308 – also eine Zahl mit insgesamt 309 Stellen vor dem Komma. Jede größere Zahl wird entweder abgerundet oder als Unendlichkeit interpretiert. Übrigens entspricht in ActionScript die Zahl 21024 der Unendlichkeit. Für die niedrigste negative Zahl gilt analog dasselbe. ##### kleinste darstellbare Zahl Die kleinste darstellbare Zahl ist 494065645841247 * 10-324 . Falls ich mich nicht verzählt habe, ist das eine Zahl mit insgesamt 348 Nachkommastellen. Jede kleinere Zahl wird entweder aufgerundet oder als 0 angezeigt. Für die kleinste negative Zahl gilt auch hier analog dasselbe.

Tabelle 7.2 Wertebereich von Zahlen

| Höchste Zahl (positiv) | Niedrigste Zahl (negativ)
Größte Zahl | 179769313486231 * 10308 | -179769313486231 * 10308
Kleinste Zahl | 494065645841247 * 10-324 | -494065645841247 * 10-324
##### Automatisches Runden von Zahlen Beachten Sie, dass ActionScript aufgrund der internen Darstellung Zahlen häufig runden muss. Dies entspricht nicht immer den gelernten Regeln aus der Schule und kann deshalb vom erwarteten Ergebnis abweichen. Der Grund dafür ist wie bereits erwähnt die interne Speicherung. ##### Unendlichkeit Für die Unendlichkeit bietet ActionScript mit Infinity ein vordefiniertes Schlüsselwort an. -Infinity entspricht der negativen Unendlichkeit. Unendliche Werte deuten meist auf einen Berechnungsfehler hin. Die Division durch null ergibt z.B. unendlich:
    // Infinity
    trace(1/0);
    // -Infinity
    trace(-1/0);
    trace(Math.log(0));
##### Not a Number Die Division durch null ergibt aber nur dann unendlich bzw. negativ unendlich, wenn nicht null durch null geteilt wird. In diesem Fall ist das Ergebnis NaN für »Not a Number« (keine Zahl):
    // NaN
    trace(0/0);
##### Scheinbar gleiche Zahlen sind ungleich Es kommt immer wieder vor, dass scheinbar gleiche Berechnungen zu ungleichen Zahlen führen. Dies liegt oft daran, dass bereits die Berechnungen eigentlich keine korrekte Zahl, sondern NaN liefern (NaN ist zwar vom Typ her eine Zahl, aber eigentlich beschreibt es ja eine Zahl, die keine ist). Und da zwei Zahlen, die eigentlich keine Zahlen sind, auch nicht zwangsläufig gleich sein müssen, ergibt der Vergleich in diesem Fall immer, dass die beiden Zahlen ungleich sind: a = 0/0; b = 0/0; trace(a == b);// Ergibt false Andere Berechnungen und Typumwandlungen führen ebenfalls zu »keiner Zahl«:
    // Berechnung
    trace(Infinity/Infinity);
    trace(Math.acos(2));
    // Typumwandlung
    trace(Number("Hallo"));
##### Wert endlich Ob ein Wert endlich ist, überprüfen Sie mit der Funktion isFinite. Ob es sich um keine Zahl handelt, ermittelt die Funktion isNaN.

Tabelle 7.3 Globale Variablen des Datentyps Zahl (engl. Number)

Bezeichner | Beschreibung
Infinity | Positive Unendlichkeit (entspricht Number.POSITIVE_INFINITY).
-Infinity | NegativeUnendlichkeit (entspricht Number.NEGATIVE_INFINITY).
NaN | Keine Zahl (engl. not a number).
##### Schreibweise Zahlen dürfen grundsätzlich nicht nur als Dezimalzahlen aus den Ziffern 0 bis 9 bestehend angegeben werden. Auch die hexadezimale Schreibweise mit 16 Ziffern (0 bis 9 und a bis f) sowie die oktale Schreibweise mit acht Ziffern (0 bis 7) sind erlaubt. Oktalzahlen beginnen immer mit einer führenden Null, Hexadezimalzahlen starten mit 0x (beachten Sie bitte, dass Hexadezimalzahlen in HTML-Dokumenten oft mit # beginnen):
    // Dezimalzahlen
    zahl = 123;
    zahl = 123.4;
    // Oktalzahlen
    zahl = 01; // entspricht Dezimal 1
    zahl = 011; // entspricht Dezimal 9
    // Hexadezimalzahlen
    zahl = 0xFF; // entspricht Dezimal 255;
    zahl = 0xFF00FF; // beliebte Schreibweise für Farbwerte
Sollten Sie Zahlen zu anderen Basen als 8 (Oktal), 10 (Dezimal) oder 16 (Hexadezimal) benötigen, dann verwenden Sie die Funktion parseInt (siehe Seite 186). ##### Zehnerpotenzen ActionScript stellt die Zehnerpotenzen von sehr kleinen bzw. sehr großen Zahlen (beispielsweise immer dann, wenn mehr als 15 Ziffern zur Darstellung vor dem Komma notwendig wären) mit einem e dar. Dieses e darf auch bei der Eingabe eingesetzt werden. Die Verwendung von 1e5 entspricht zum Beispiel der Zahl 100000, die auch als 1 * 105 mit einer Zehnerpotenz geschrieben werden kann. ##### Number-Objekt Als Alternative zum primitiven Datentyp number bietet Flash auch ein Number-Objekt, das als komplexer Datentyp dient. ### 7.2.3 Zeichenketten (string) Zeichenketten beinhalten eine Kette beliebiger Zeichen, die nicht an Berechnungen teilhaben sollen. Dabei basiert die interne Darstellung auf der Unicode-Variante UTF-16. Ein Nachname ist eine Zeichenkette. Postleitzahlen und Telefonnummern sind ebenfalls Zeichenketten, da mit ihnen keine Berechnungen durchgeführt werden. Dabei ist es unerheblich, dass sie oft ausschließlich aus Zahlen bestehen. Um eine Zeichenkette zu definieren, wird sie in Anführungszeichen gebettet: variableDieEineZeichenketteBeinhaltet = "Zeichenkette"; Anstatt der doppelten Anführungszeichen sind bei den meisten Programmiersprachen wie auch in ActionScript Hochkommata erlaubt: variableDieEineZeichenketteBeinhaltet = 'Zeichenkette'; Innerhalb einer Zeichenkette darf das jeweilige Anführungszeichen dann aber nicht direkt, sondern nur mit Hilfe einer durch den Rückwärtsschrägstrich \ eingeleiteten Escape-Sequenz verwendet werden. Der Rückwärtsschrägstrich wird wiederum durch \\ dargestellt:
    // erlaubte Zeichenketten
    zeichenkette = "text";
    zeichenkette = 'text';
    zeichenkette = "text anführungszeichen ' ";
    zeichenkette = "text anführungszeichen " ';
    zeichenkette = "text anführungszeichen \" ";
    zeichenkette = 'text anführungszeichen \' ';
    // nicht erlaubte Zeichenketten
    zeichenkette = "text anführungszeichen " ";
    zeichenkette = 'text anführungszeichen ' ';
##### Zeilenumbruch Von größer Bedeutung für mehrzeilige Texte ist der Zeilenumbruch, der auf vielfältige Art und Weise beschrieben werden darf:
    // Zeilenumbruch
    trace("erste Zeile\rzweite Zeile");
    // Zeilenumbruch (Oktal)
    trace("erste Zeile\015zweite Zeile");
    // Zeilenumbruch (Hexadezimal)
    trace("erste Zeile\x0dzweite Zeile");
    // Zeilenumbruch (UTF-16)
    trace("erste Zeile\u000dzweite Zeile");
##### newline Für den Zeilenumbruch bietet ActionScript darüber hinaus noch eine Konstante namens newline an:
    // Zeilenumbruch mit einer Konstante
    trace("erste Zeile"+newline+"zweite Zeile");
Die Auto-Format-Option des ActionScript-Editors verwandelt Oktal-, Hexadezimal- und Unicode-Angaben soweit möglich in die passenden Steuerzeichen, so dass bei ihrem Einsatz beispielsweise aus \u000d die Escape-Sequenz \r wird. ##### Zeilenumbruch Je nach Flash-Version verwendet ActionScript intern \n (ASCII 10) oder \r (ASCII 13) für den Zeilenumbruch. Seit Flash MX wird normalerweise \r eingesetzt.

Tabelle 7.4 Escape-Sequenzen

Escape-Sequenz | Zeichen
\b | Rückschritt (Backspace, ASCII 8)
\f | Seitenvorschub (Form Feed, ASCII 12)
\n | Zeilenvorschub (Line Feed, ASCII 10)
\r | Wagenrücklauf (Carriage Return, ASCII 13)
\t | Tabulator (Tab, ASCII 9)
\" | Doppeltes Anführungszeichen
\’ | Einfaches Anführungszeichen
\\ | Rückwärtsschrägstrich
\000 bis \377 | Ein oktaler Byte-Wert
\x00 bis \xFF | Ein hexadezimaler Byte-Wert
\u0000 bis \uFFFF | Ein 16-Bit-Unicode-Zeichen in Hexadezimalschreibweise
##### String-Objekt Als Alternative zum primitiven Datentyp string bietet Flash auch ein String-Objekt, dass als komplexer Datentyp dient (siehe Seite 189). Die zahlreichen Methoden und Eigenschaften des String-Objektes stehen für den primitiven Datentyp ebenfalls zur Verfügung. ### 7.2.4 Null Der Datentyp null mit dem einen Wert null wird immer dann eingesetzt, wenn explizit ausgedrückt werden soll, dass ein Wert bei Funktionsaufrufen fehlt bzw. eine Referenz nicht vorhanden ist. Der Wert null unterscheidet sich von der Zahl 0 und einer leeren Zeichenkette, so dass ein Vergleich das Ergebnis falsch (engl. false) ergibt. Die strikte Gleichheit (===) verhindert, dass null verglichen mit undefined das Ergebnis true ergibt, da in diesem Fall auch der unterschiedliche Typ berücksichtigt wird.

Tabelle 7.5 Vergleiche bei null und undefined

Vergleich | Ergebnis bei null und undefined | Beispiel mit null | Beispiel mit undefined
Zahl 0 | false | trace(null == 0); | trace(undefined == 0);
leere Zeichenkette "" | false | trace(null == ""); | trace(undefined == "");
null | true | trace(null == null); | trace(null == undefined);
undefined | true | trace(null == undefined); | trace(undefined == undefined);
### 7.2.5 Undefiniert (undefined) Der Datentyp undefined ist dem Typ null sehr ähnlich und besitzt ebenfalls mit undefined nur einen Wert. Werte sind immer dann undefiniert, wenn Sie noch nicht gesetzt wurden. D. h. wenn einer Variable noch kein Wert zugewiesen wurde. Um den Inhalt einer Variablen zu löschen, ohne die Variable selbst zu entfernen, sollte null und nicht undefined zugewiesen werden. Das Verhalten von undefined und null ist bei Vergleichen identisch (siehe Tabelle »Vergleiche bei null und undefined«). Nur bei der Typkonvertierung in eine Zeichenkette ergeben sich Unterschiede zueinander und zu ECMAScript.

Tabelle 7.6 Typkonvertierung bei null und undefined

Typ | String | Number | Boolean
null | "null" | 0 | false
undefined | Bis inkl. Flash 6 "", seit Flash 7 wie bei ECMAScript "undefined" | Bis inkl. Flash 6 0, seit Flash 7 wie bei ECMAScript NaN | false
### 7.2.6 Komplexe Datentypen (Objekte) Grundsätzlich handelt es sich bei allen nicht primitiven Datentypen in Flash um Objekte. Oder um noch genauer zu sein, um Vorkommen (engl. Instance) eines Prototyps. Zwar unterscheidet der typeof-Operator hier nur zwischen den Typen object, function und movieclip, doch es gibt eine große Anzahl weiterer Möglichkeiten, die sich hinter dem Datentyp object verbergen. Dazu zählen die Kernobjekte (engl. Coreobjects) aus ECMAScript und Flash-spezifische Erweiterungen. Außerdem steht es dem Entwickler frei, weitere Objekte zu entwerfen.

Tabelle 7.7 Kernobjekte in Flash und ECMAScript

Objekt | Bemerkung
das globale Objekt | seit Flash 6 (undokumentiert)
Object | seit Flash 5
Array | seit Flash 5
Boolean | seit Flash 5
Date | seit Flash 5
Error | seit Flash 7
Function | seit Flash 6
Math | seit Flash 4 (jedoch erst seit Flash 5 programmierbar)
Number | seit Flash 5
RegExp | nicht vorhanden
String | seit Flash 5

Tabelle 7.8 Anwendungsspezifische Objekte in Flash (integrierte Klassen)

Objekt | Bemerkung
Accessibility | seit Flash 6
Button | seit Flash 6 (grafisch bereits seit Flash 1)
Camera | seit Flash 6
Capabilities | seit Flash 6
Color | seit Flash 5
ContextMenu | seit Flash 7
Cookie | seit Flash 5 (undokumentiert)
CustomActions | seit Flash 6
Key | seit Flash 5
LoadVars | seit Flash 6
LocalConnection | seit Flash 6
Microphone | seit Flash 6
Mouse | seit Flash 5
MovieClip | seit Flash 3
MovieClipLoader | seit Flash 7
NetConnection | seit Flash 6
NetStream | seit Flash 6
PrintJob | seit Flash 7
Selection | seit Flash 5
SharedObject | seit Flash 6
Sound | seit Flash 5 (akustisch bereits seit Flash 1)
Stage | seit Flash 6
System | seit Flash 6
TextField | seit Flash 6
TextFormat | seit Flash 6
TextSnapshot | seit Flash 6 (jedoch erst seit Flash MX 2004 programmierbar)
Video | seit Flash 6
XML | seit Flash 5
XMLNode | seit Flash 5 (undokumentiert)
XMLSocket | seit Flash 5
<< zurück | <top> | vor >>
Zum Katalog
ActionScript 1 und 2 bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| Einstieg in ActionScript
| Einstieg in Flash 8
| Flash 8 und PHP
| Flash 8-Tutorials
| Dreamweaver 8
| Webseiten programmieren und gestalten
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Design]
Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de