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()");
}
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()");
}
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);
}
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 FunktionmyGlobalFunction()
könnte wie folgt erweitert werden:
_global.myGlobalFunction = function(message)
{
trace(message);
}
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;
}
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

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