IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Actionscript - ActionScript: Variablen



ActionScript: Variablen

Ein Tutorial für Anfänger die lernen möchten mit Variablen in ActionScript zu arbeiten.


Autor: Patrick Faes (dreamer)
Datum: 02-11-2004, 21:09:44
Referenzen: keine
Schwierigkeit: Anfänger
Ansichten: 10452x
Rating: 9 (1x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einführung

Wie bei jeder Programmiersprache ist es so, dass wenn Sie wirklich viel heraus holen wollen, Sie eines bestimmt brauchen: Variablen. Variablen sind Datenspeicher die (wie der Name schon sagt) Daten speichern die während der Ausführung eines Scripts gebraucht werden. Die Daten können Benutzereingaben, Daten aus einer Datenbank, ein Datum, Texte und vieles mehr sein.

Dieser Artikel möchte zeigen wie man Variablen in Flash ActionScript verwendet. Leute die Erfahrung haben mit JavaScript (nicht Java!), korrekterweise eigentlich ECMAscript, werden merken, dass sehr vieles gleich ist, jedoch gibt es einige kleine Unterschiede.

1. Die Deklarierung

Fangen wir mal an mit der Deklarierung einiger Variablen.
a;
var b;
_global.c;
Wir haben hier drei Variablen deklariert, jedoch noch keine Werte vergeben. Die einzelne Variablen wurden jedoch jeweils anders deklariert.

Die Variable a ist ein ganz normaler Variable. Wir schreiben nur den Namen der Variable (in diesem Fall der Buchstabe a, beachten Sie, dass ActionScript bei der Vergebung der Namen Schriftgrößensensitiv ist, was bedeutet, dass die Variablen a und A nicht dieselben sind).

Die Variable b wurde, durch das Schlüsselwort var, als lokale Variable definiert. Lokale Variablen können nur verwendet werden in dem Codebereich wo sie deklariert wurden. So werden lokale Variablen die den selben Namen tragen, jedoch in verschiedene Codebereiche deklariert wurden, nicht als dieselbe Variable angesehen. Dies ist sinnvol, denn so kann vermieden werden, dass Werte von Variablen aus Versehen geändert werden (sauberer Programmierstil verlangt jedoch, dass man nie zwei Variablen mit dem selben Namen verwendet).

Die dritte Variable c wurde als global definiert. Besonders erfahrene Programmierer werden sich hier die Köpfe reiben, denn wenn eine Variable nicht als lokal definiert wurde, ist es doch automatisch global, oder? Nun ja, in ActionScript nicht ganz. Wenn eine Variable nicht als lokal definiert wurde, ist es global, jedoch nur im Bild wo er definiert wurde.

Eine Flash-Animation besteht aus verschiedene Bildern (englisch: Frames). In ein Bild kann ein Script eingebaut werden und das hat dann seine Variablen. Jedoch können diese nur in diesen einem Bild verwendet werden. Wenn Sie später Zugriff haben möchten auf Variablen die in andere Bilder definiert wurden, müssen diese als global definiert haben, indem Sie das Schlüsselwort _global. verwenden.

Eine alternative Methode ist es die einzelnen Bilder (wo die Variablen definiert wurden) direkt an zu sprechen, z.B. this._parent.bild.variable. Dies wird jedoch häufiger zu Fehlern führen.

Als letztes hierzu ist nur noch zu sagen, dass man auch mehrere Variablen gleichzeitig deklarieren kann, indem man sie durch ein Komma trennt, z.B.
var a, b, c;
2. Die Namensvergebung

Eine Variable muss natürlich auch einen Namen bekommen, mit dem wir sie später ansprechen können. Bisher haben wir als Namen nur einzelne Buchstaben verwendet. Bei der Namensvergebung gibt es nur einige Regeln zu beachten:
  • ActionScript unterscheidet zwischen Groß- und Kleinschreibung, dahen ist die Variable a nicht gleich A.
  • Der Name darf nur anfangen mit einem Unterstrich ( _ ) oder einen Buchstaben, jedoch keiner Ziffer oder Lesezeichen.
  • Danach darf ein Name nur Buchstaben, Ziffern und Unterstriche enthalten.
  • Nicht erlaubt sind Umlaute, Sonderzeichen, Leerzeichen, Punkte und Kommata.
  • Es dürfen keine Schlüsselwörter als Variablenname verwendet werden. Schlüsselwörter werden durch ActionScript als Anweisungen erkannt. Beispiele sind: break, continue, case, switch, if, else, typeof usw. Schlüsselwörter aus älteren Flash-Versionen können in Flash MX schon verwendet werden, dann sind die Scripte aber nicht mehr kompatibel zu älteren Flash-Playern, sprich: Leute mit alter Software können nicht in Genuss ihrer Flash-Animationen kommen.
3. Den Variablen einen Wert geben oder ändern

Einen Wert zuweisen geht sehr einfach:
var a;
a = 3;
Nach der Deklarierung wird ein Wert zugewiesen. Eine kürzere Schreibweise wäre:
var a = 3;
Diese Kurzform nennt sich Initialisierung. Später kann man den Wert einfach ändern indem man der Variable einen neuen Wert zuteilt.
a = 43;
4. Datentypen

Bisher haben wir uns bei der Deklaration von Variablen nicht um den Datentyp des Wertes gekümmert. Der Datentyp ist die Art des Wertes. Wenn der Variablenname für den zugehörigen Wert die Antwort ist auf die Frage "Wer bist du?", so ist der Datentyp die Antwort auf "Was bist du?" oder konkreter "Von welcher Art bist du?".

ActionScript kennt folgende Datentypen:
  1. String: ist eine Zeichenkette oder allgemeiner Text und wird immer in Anführungszeichen eingeschlossen, z.B. frage = "Hast du einen Computer?";
  2. Zahl: sind sowohl Interger (ganzzahlige Werte) als auch Gleitkommazahlen (Werte mit Nachkommastellen, englisch: floating point values), z.B. var zahl = 3;
  3. Boolean: ist ein sogenannter "Wahrheitswert". Diese Variable speichert dann ob eine Bedingung wahr (true) oder falsch (false) ist, z.B. "23 > 4 = true"
  4. Array: ist eine Kette von variablen Werten, die zusammen gehören. Wir können sie einzeln ansprechen über dem Index
  5. Object: wird verwendet für OOP (Objekt-Orientiertes-Programmieren). Ein Objekt ist eine Sammlung an Funktionen und Anweisungen die zusammen einen Wert liefern. Ich werde hier nicht weiter darauf eingehen.
  6. Movieclip: erlaubt die direkte Ansprache von Filmabschnitten. Ich werde hier nicht weiter darauf eingehen.
  7. Undefined: eine Variable die noch nicht existiert, daher undefiniert ist
  8. Null: eine Variable die keinen Wert hat (nicht gleich 0!)
4.1 Strings

Bei der Deklarierung müssen Strings zwischen Anführungszeichen stehen (dabei spielt es keine Rolle ob es einfache oder doppelte sind).
a = 'eine Zeichenkette', b = "Eine Zeile";
Dabei müssen wir Anführungszeichen die im String vorkommen "ausbrechen" (englisch: to escape). Dies erreichen wir indem wir vor den Anführungszeichen einen Schrägstrich setzen, z.B.:
a = 'ein Anführungszeichen \' dass im String vorkommt';
Auch Zeilenumbrüche werden nicht automatisch erkannt, deshalb schreiben wir \n um einen Zeilenumbruch an der Stelle zu erreichen, z.B.:
zeile = "Dies ist eine Zeile \n mit einem Umbruch."
ergibt
Dies ist eine Zeile
mit einem Umbruch.
So gibt es auch noch

\\ein Schrägstrich ausbrechen
\'ein einfachen Anführungszeichen ausbrechen
\"ein doppeltes Anführungszeichen ausbrechen
\neinen Zeilemumbruch erzwingen (new line)
\tein Tabulator
\uein beliebiges Unicodezeichen1
\xein hexadezimaler Wert2
\bein Rückschritt
\rein Wagenrücklauf
\fein Seitenvorschub


Wörter können auch nach "Größe" verglichen werden. Hierfür wird des erste unterschiedliche Buchstabe genommen (z.B. d ist größer als a). Die Buchstaben bekommen einen Wert in alfabetischer Reihenfolge. Je weiter sie steht, desto größer ist ihr Wert (a = 1, b = 2, c = 3, usw.).
Nach den kleingeschriebenen Buchstaben kommen die großgeschriebenen Buchstaben, die dann auch einen größeren Wert haben.

Wenn Sie die Anzahl der Zeichen in einem String messen wollen, verwenden Sie die Eigenschaft length, z.B.:
var a = "ein Text";
var b = a.length;
4.2 Zahlen

ActionScript kann Zahlen in Variablen speichern. Diese können sowohl einen positiven als auch negativen Wert haben und können Ganzzahlen und Gleitkommazahlen (Werte mit Nachkommazahlen) sein. ActionScript kann damit sehr viele Berechnungen machen. Die Möglichkeiten sind jedoch zu groß um sie hier zu behandeln.

4.3 Boolean

Ist ein Wahrheitswert. Speichert einfach ob etwas wahr (TRUE) oder falsch (FALSE) ist. Können verwendet werden in Bedingungsanweisungen (IF), z.B.:
a = 4 > 3;
if (a) {}
4.4 Array

Ein Array ist ein Container worin mehrere Werte gespeichert werden können. Diese können auch jeweils einem anderen Datentyp angehören. Arrays werden verwendet für Daten die zusammen gehören, z.B.:
a = new Array('Name','Vorname','Adresse');
Es gibt auch eine alternative Art Arrays zu definieren.
a = ['Name','Vorname','Adresse'];
Die meist verwendete Methode ist jedoch
a = new Array();
a[0] = 4;
a[1] = 'hallo';
a["Vorname"] = 'Patrick';
Den einzelnen Elemente der Variable (die zuerst noch deklariert werden muss!) werden hier einzeln ein Wert vergeben. Dabei unterscheiden wir numerische Arrays (mit einer Indexzahl, wobei ActionScript anfängt bei Null zu zählen) und assoziative Arrays (wo die Index ein Wort ist).

Der Index nennt man auch den Key (Schlüssel) und den Inhalt den Value (Wert). Mit einer FOR-Schleife können alle Elemente durchlaufen werden.
a = new Array();
a[0] = 456;
a["Schlüssel"] = 'Wert';

for (var schluessel in a)
{
trace(schluessel);
trace(a[schluessel)];
}
Der Key wird jeweils in der lokalen Variable schluessel gespeichert. Danach können die Keys angesprochen werden durch den Variablennamen und die Werte durch den Arraynamen mit der Variablen schluessel zwischen eckigen Klammern.

Alle Variablen die in einem Script verwendet werden, werden automatisch in der Variablen arguments.

5. Automatisch Typkovertierung

ActionScript erleichtert die Arbeit eines Programmierers enorm, indem es die Variablen automatisch typiert. Wenn eine Variable z.B. erst eine Zahl ist und dann einen neuen, alfanumerischen Wert bekommt, wird die Variable automatisch in ein String konvertiert.

Obwohl das für dem Programmierer sehr komfortabel ist, kann es manchmal dennoch nützlich sein um eine Variable explizit zu deklarieren, sodass eine Variable immer z.B. ein Array bleibt. Das geht mit folgenden Funktionen (die Variablennamen kommen zwischen den Klammern).
String(a);
Number(b,c);
Boolean(d);
6. Verschiedene Datentypen vergleichen

Man kann auch Variablen von verschiedene Typen miteinander vergleichen. Im diesem Beispiel ist die Variable a eine Zahl und b ein String, jedoch haben beide den Wert 2.
a = 2;
b = '2';
var c = a == b;
trace(c);
Die Variable c wird hier TRUE ergeben. Wenn Sie jedoch auch testen möchten ob a und b vom selben Typ sind, verwenden Sie diesem Code:
a = 2;
b = '2';
var c = a === b;
trace(c);
Umgekehrt gibt es noch !==.

7. Variablen laden

Bisher haben wir nur Variablen in einem Script definiert. Es ist jedoch möglich, dass die Daten aus einer Datenbank stammen oder vom User eingegeben werden. Dazu gibt es zwei Möglichkeiten:
  1. die Variablen werden vom User eingegeben
  2. die Variablen werden vom Server geladen
7.1 Variablen vom User

Während ein Script läuft, kann der User z.B. Buttons klicken oder Textfelder ausfüllen. Die Werte können dann an ActionScript weitergeleitet werden.

Erstellen Sie erst mal ein dynamisches Textfeld und nennen es "Vorname". Dann erstellen Sie einfach einen Button. Selektieren Sie den Button und schreiben Sie im Aktionenfenster
a;
on (press)
{
a = Vorname.text;
}
Zuerst wurde die Variable a schon definiert und danach wird mit dem Ereignis Händler on press (auf Klick) die Anweisung ausgeführt, wobei die Variable a den Textwert von "Vorname".

Anmerkung: wenn die vom User eingegebene Daten durch ActionScript interpretiert werden sollen (z.B. für eine Rechenmaschine), dann verwenden Sie die Funktion eval().

7.2 Variablen vom Server laden

Natürlich können beim Laden nicht alle Variablen sofort geladen werden, weil z.B. noch bestimmt werden muss welcher User sich anmeldet (für ein Login). Deshalb kann ActionScript auch noch Variablen nachladen vom Server und dies ohne, dass die Flash-Anwendung angehalten und neu geladen werden muss.

Die Variablen können von statische Textdateien geladen werden oder dynamisch generiert werden (z.B. aus Datenbanken). Mit dem Objekt LoadVars() sendet ActionScript eine Anfrage an den Server. Dafür kann ActionScript auch Parameter (Variablen) am Server ermitteln. Der Server sendet die Variablen in folgendem Format:

vorname=patrick&nachname=faes&hobby=fussball+spielen

Wer schon mal mit dynamische Serversprachen (wie z.B. PHP, ASP, JSP, CGI usw.) bekannt sein. Die Variablen stehen immer als "Name=Wert" und die verschiedenen Variablen werden von Ampersands ( & ) getrennt. Leerzeichen werden ersetzt durch ein plus ( + ). Für Sonderzeichen kann Unicode verwendet werden (für eine Auflistung, sehen Sie bitte auf SelfHTML). ActionScript wandelt die Leerstellen automatisch um. Nachher können die Variablen in ActionScript ganz normal mit dem Namen angesprochen werden.

Anmerkung: ActionScript hat keine eingebaute Methode um Arrays zu laden. Deshalb müssen diese im folgenden Format geschrieben werden:

ein_array = wert1|wert2|wert3

Dies ist ein String und wird umgewandelt in einem Array mit folgendem Code:
das_array = this.ein_array.split("|");
Doch wie laden wir diese jetzt. Dazu verwenden wir folgenden Beispielcode:
stop(); //hält den Film an
suche = new LoadVars();    //ein neues Objekt definieren
suche.vorname = "Patrick";    //eine Suchanfrage bauen
suche.sendAndLoad('details.php', suche);  //versendet die Suchanfrage
suche.onLoad = function(success)
{
   if(success)
     {
       play();
     }
   else
     {
       trace("Daten konnten nicht geladen werden.");
     }
}
Zuerst halten wir den Film an. Dies machen wir aus dem Grund dass ein Flash-Film weiter läuft während die Variablen geladen werden. Dann kann es aber vorkommen, dass ActionScript die Variablen schon verwenden muss, obwohl diese noch nicht (vollständig) geladen wurden. Nachdem die Variablen geladen wurden, wird der Film weiter abgespielt.

Wir definieren danach ein neues Objekt mit dem Namen "suche". Dieser bekommt ein Unterobjekt "vorname", das mit den Wert "Patrick" belegt wird. Mit der Funktion sendAndLoad() wird die Anfrage an einem PHP-Script ermittelt, in diesem Falle "details.php". Als zweiter Parameter hat die Funktion das Objekt "suche".Das PHP-Script soll die Daten dann verarbeiten, z.B. in eine Datenbankabfrage. Dabei kann PHP die Daten ansprechen als z.B. $vorname (= Patrick). Das Resultat sollte dann im oben schon erklärten Format zurückgeliefert werden.

Der Flash-Film sollte weiterlaufen wenn die Variablen komplett geladen sind. Dazu dient die Eigenschaft onLoad (Achtung: in JavaScript ist das ein Ereignishändler) des Objekts LoadVars(). Dabei wird eine Funktion ausgeführt die das Schlüsselwort success (Erfolg, Booleantyp) als Parameter bekommt. Wenn die den Wert TRUE (wahr) hat, dann wird mit der Funktion play() der Film weitergespielt. Ansonsten wird mit der Funktion trace() eine Fehlermeldung zurückgegeben.

Variablen Anfangswerte geben per HTML

Wenn Sie die Flash-Animation per HTML in eine Webseite einbinden, dann können Sie per HTML den Variablen schon Anfangswerte geben (dieser Code kann auch z.B. von PHP zusammen geschnitten werden). Um Kompatibel zu älteren Versionen von Flash zu bleiben, müssen die Variablen allerdings ganze dreimal drin geschrieben werden.
<object src="film.swf?name=wert">
<param name="FlashVars" value="name=wert"></param>
<embed src="film.swf?name=value"></embed>
</object>
Die neuesten Browser binden den Film ein mit dem Parameter "FlashVars". Die Variablen stehen dabei im oben schon angesprochen Format. Für ältere Versionen von Internet Explorer müssen die Variablen in der Objekt-Quelle (OBJECT SRC)hinter dem Fragezeichen stehen (wie man es von GET-Variablen her kennt). Für ältere Versionen von Netscape Navigator machen Sie das gleiche, aber dann im <EMBED>-Tag.

Die Browser können bis zu 64KB an Daten aufnehmen mit dieser Methode, jedoch wäre es vielleicht besser die Daten nachher separat zu laden, da ansonsten der Quellcode relativ groß ist.



Referenzen:
  • Unicode ist ein standarisierter Code für das Auselesen von Zeichen, da diese eigentlich alle Ziffern sind und für den Menschen also unlesbar: mehr dazu.
  • Im Hexadezimalsystem werden Zahlen in einem Stellenwertsystem mit der Basis 16 (also einem 16er-System) dargestellt: mehr dazu.


dreamer
Expert
Beitrag vom:
24-08-2005, 23:59:18

Variablen die per FlashVars (siehe Punkt 6) ermittelt werden, sind in ActionScript als _root-Variable verfügbar.

Aus

<param name="FlashVars" value="Name=Wert">

wird also

var MeinVar = _root.Name;

-----------------------------------------------------


dreamer
Expert
Beitrag vom:
11-11-2004, 01:19:56

Variablen dynamisch generieren

Mit der Funktion set() können Variablen dynamisch im Script generiert werden.

Der Syntax:

set ( Name , Wert ) ;

Beispiel:

set('a',3);
trace(a);

-----------------------------------------------------


dreamer
Expert
Beitrag vom:
07-11-2004, 10:51:05

Variablen in andere movieClips

Man kann auch Variablen in andere movieClips ansprechen. Dazu schreiben Sie den Namen des Movieclips und dahinter ein Punkt und den Variablenname.

Beispiel: clip3.Wert

Aber man muss nicht absolut adressieren, es geht auch relativ.

Beispiel: _parent.Wert

_parent nimmt einfach den überliegenden Movieclip. _root dagegen nimmt den Movieclip der ganz oben in der Hierarchie steht.

Auch Kombinationen sind möglich, z.B.:

_root.Teil1.Unter3.Wert

-----------------------------------------------------


dreamer
Expert
Beitrag vom:
04-11-2004, 16:30:46

Funktion als Variablenwert

ActionScript hat die schon recht merkwürdige Möglichkeit eine Funktion als Variablenwert zu vergeben. Dies macht man, wenn die Variable eine noch zu errechnenden Wert bekommen muss, z.B.:

var Preis = function () {Summe = Menge * Einheitspreis; return Summe;}

-----------------------------------------------------


dreamer
Expert
Beitrag vom:
03-11-2004, 23:36:28

Dummy Variablen

Um Variablen von serverseitige Scriptsprachen zu bekommen, werden die Variablen meist in einer Schleife zusammen geschnitten. Dabei kann es jedoch vorkommen dass am Ende ein Ampersand ( &-Zeichen) zuviel steht. Dann hat ActionScript eine undefinierte Variable. Dies kann umgangen werden durch eine sogenannte Dummy Variable, was eigentlich nichts weiteres ist als ein Überflüssiger Variable der am Ende hinzugefügt wird, z.B. a=a .

-----------------------------------------------------


dreamer
Expert
Beitrag vom:
02-11-2004, 21:36:39

Noch eine Anmerkung bezüglich Variablen vom Server nachladen

Um Flash die Erkennung der Variablen zu erleichtern, kann man es Flash mitteilen um welchen Datentyp es sich handelt:

PHP:
header("Content-type: application/x-www-form-urlencoded");

ASP:
Response.ContentType = "application/x-www-form-urlencoded";

-----------------------------------------------------


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04511
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06248
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0