Kontakt aufnehmen

Flash / ActionScript: Funktionen

Mithilfe von selbst definierten Funktionen kann man häufig zu verwendende Scriptpassagen auslagern und von jeder beliebigen Stelle - vorausgesetzt, die Funktion ist bereits definiert - aufrufen. Auf diese Weise wird Übersichtlichkeit des Scripts und dessen Effizient merklich erhöht. Im objektorientierten Zusammenhang kommen Funktionen noch stärker zum Tragen, was im entsprechenden Kapitel weiter erläutert wird.

Parameterlose Funktionen definieren und aufrufen

Die Definition einer Funktion kann im Großen und Ganzen auf zwei unterschiedliche Art und Weisen erfolgen, je nachdem, welchen Gültigkeitsbereich sie füllen sollen. Hierbei unterscheidet man zwei Arten von Funktionen: die Zeitleistenfunktionen und die globalen Funktionen.
Zeitleistenfunktionen sind nur in derjenigen Zeitleiste eines Movieclips, in der sie definiert wurden, sicht- und zugreifbar. Unter Angabe eines entsprechenden Zielpfades (siehe Kapitel Hierarchie eines Flash films) können sie natürlich auch aus einer anderen Zeitleiste des Flash films heraus aufgerufen werden.
Eine Zeitleistenfunktion wird stets mit dem Schlüsselwort function eingeleitet, welchem ein im Prinzip freiwählbarer Bezeichner folgt. Dies muss natürlich den Regeln für selbstvergebene Bezeichner entsprechen. Geschweifte Klammern grenzen den Anweisungsblock der Funktion, welcher auch leer sein kann, ein. Ein Beispiel für eine Zeitleistenfunktion:

function myFunction()
{
  trace("Ich bin die Zeitleistenfunktion myFunction()");
}

Beim Aufruf der Funktion müssen deren Bezeichner und die beiden runden Klammern sowie, falls der Aufruf außerhalb der Zeitleiste, in der sie definiert wurde, erfolgen soll, der entsprechende Zielpfad notiert werden. Ein Aufruf der Funktion myFunction innerhalb der Zeitleiste, in der sie definiert ist, müsste dann so aussehen:

myFunction();

Mithilfe des Schlüsselworts _global kann man den Gültigkeitsbereich einer Funktion global, d.h. auf den gesamten Film, ausweiten, so dass diese nicht mehr unter Angabe eines entsprechenden Zielpfades außerhalb der Zeitleiste, in der sie definiert wurde, aufgerufen werden muss. Diesem Schlüsselwort folgt verbunden mit dem Punktoperator (.) der selbst vergebene Funktionsbezeichner, welcher natürlich wieder den Regeln für selbst vergebene Bezeichner unterliegt. Anschließend muss = function() und der Anweisungsblock der Funktion - wiederum begrenzt durch zwei geschweifte Klammern - notiert werden. Ein zu obigem analoges Beispiel:

_global.myGlobalFunction = function() 
{
  trace("Ich bin die globale Funktion myFunction()");
}

Globale Funktionen werden stets auf die gleiche Art und Weise - nämlich durch Notation ihres Bezeichners gefolgt von den beiden runden Klammern - aufgerufen. Bei diesem Beispiel sehe das so aus:

myGlobalFunction();

Funktionen können grundsätzlich in der Zeitleiste unterschiedlicher Filmelemente, wie beispielsweise Movieclips oder Schaltflächen, definiert werden.

Parameter an Funktionen übergeben

Möchte man einen oder mehrere Parameter an eine Funktion übergeben, so müssen diese zunächst in der Signatur der Funktion definiert werden. Dazu notiert man einfach die funktionsinternen Bezeichner, welche die übergebenen Werte speichern sollen, innerhalb der runden Klammern hinter dem Funktionsbezeichner.
Das im vorigen Abschnitt angeführte Beispiel einer Zeitleistenfunktion könnte so auf folgende Weise erweitert werden:

function myFunction(message)
{
  trace(message);
}

Beim Aufruf dieser Funktion muss für den Parameter message ein Wert übergeben werde. Diesen notiert man wiederum zwischen den runden Klammern in der Aufrufanweisung. Da ActionScript nicht typisiert ist, kann der Datentyp dabei variieren. Um die gleiche Ausgabe wie im Beispiel des vorher gehenden Abschnitts zu erzielen, wäre folgender Funktionsaufruf (aus gleicher Zeitleiste) mit Stringwert für den Parameter notwendig:

myFunction("Ich bin die Zeitleistenfunktion myFunction()");

Möchte man globalen Funktionen Parameterwerte übergeben, so muss man wiederum deren interne Bezeichner in der Funktionssignatur festlegen. Das gegebene Beispiel der globalen Funktion myGlobalFunction() könnte wie folgt erweitert werden:

_global.myGlobalFunction = function(message) 
{
  trace(message);
}

Beim Funktionsaufruf könnte dann wiederum der wie oben auszugebende String übergeben werden:

myGlobalFunction("Ich bin die Zeitleistenfunktion myFunction()");

Die Anzahl der übergebenen Werte für Parameter und jener, der in der Signatur der Funktion festgelegten Bezeichner für die Parameter, sollten, auch wenn dies nicht zwingend erforderlich ist, übereinstimmen, um einen guten Programmierstil zu gewährleisten.

Rückgabewerte von Funktionen

Eine Funktion zeichnet bekanntlich die Eigenschaft aus, das Ergebnis ihrer Aufgabe zurückgeben zu können. Dieses ist bei den im bisherigen Verlauf gezeigten Funktionen nicht der Fall, so dass man bei diesen eigentlich von Methoden sprechen müsste.
In ActionScript ist die Rückgabe eines Ausdrucks durch eine Funktion, ähnlich wie in anderen Programmiersprachen auch, mithilfe der Anweisung return möglich. Diese erwartet optional einen Parameter, welcher ein beliebiger Ausdruck sein kann. Stößt der Interpreter bei der Ausführung einer Funktion auf die Anweisung return, bricht er sofort deren Ausführung ab und gibt ggf. den als Parameter notierten ausgewerteten Ausdruck an die Aufrufstelle der Funktion zurück. Dort wird die Ausführung des Scripts fortgesetzt, so dass dieser dann beispielsweise als Wert einer Variablen zugewiesen werden kann. Ein Beispiel:

var myString;

myString = concatWords("Action", "Script");
trace(myString);

//Funktionen
//Zeitleistenfunktion concatWords()

function concatWords(myWord1, myWord2)
{
  return myWord1 + myWord2;
}

Der Zeitleistenfunktion concatWords() werden zwei Strings als Parameter übergeben, welche diese dann mithilfe des Additionsoperators (+) zu einem String verkettet und dessen Wert an die Aufrufstellte der Funktion zurückgibt. Dort wird er der Variablen myString zugewiesen und anschließend im Ausgabefenster ausgegeben.
Da ActionScript nicht typisiert ist, muss der zurückgegebene Wert keinem vorher definierten Datentyp entsprechen. Da return nicht zwangsläufig einen Ausdruck als Parameter, kann die Anweisung auch allein innerhalb einer Funktion notiert werden, was bewirkt, dass die Funktion lediglich abgebrochen und mit der Ausführung des Scripts an der Aufrufstelle fortgesetzt wird. Es wird also keinerlei Wert in diesem Fall zurückgegeben.
Natürlich ist durch analoges Vorgehen auch die Rückgabe von Werten für globale Funktionen möglich.

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Weiterlesen: ⯈ Event Handling

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern