AW: Buttonscript außerhalb eines Buttons?
Alle beiden Anweisungen bewirken das selbe. Aber das erste Schnipselchen
PHP:
on(release){
//tu irgendwas
}
kannst du eben nur auf EIN MovieClip legen. Und das funktioniert dann nur für diesen speziellen Movieclip und du kannst dann auch nur dieses Movieclips steuern bzw. ansprechen. Und du musst dafür dem MC noch nicht mal einen Instanznamen vergeben.
Du kannst zwar bei Vergabe von Instanznamen dann auch Movieclips ausserhalb deines MC steuern, aber wenn du da nicht mit den Pfaden (z. B. _root.DeinMC01.DeinMCinnerhalb......) aufpasst, dann kannst du gerade bei etwas umfangreicheren Flash-Sachen echt verzweifeln.
Ich weiß, von was ich spreche. Ich habe letztes Jahr ein Custom-Tool für meinen Arbeitgeber entwickelt, mit dem man sich Inlineskates zusammenstellen bzw. "customizen" kann. In diesem Tool hatte ich die "Kleinigkeit" von knapp 25.000 Zeilen ActionScript. Und wenn du da einen Fehler machst und suchst den in -zig Movieclips, dann bekommst du irgendwann einen Vogel! Absolut nicht praktikabel! Von Erweiterungen will ich im ersten Fall gar nicht reden.
Wesentlich besser (weil global) ist dann schon diese Anweisung:
PHP:
DeinMC.onRelease = function(){
//tu irgendwas
}
So habe ich das auch in meinem Custom-Tool gemacht. Hier im zweiten Beispiel kannst du nämlich wesentlich einfacher auch auf andere Movieclips zugreifen (solange du diesen Instanznamen vergibst). Außerdem hast du alle Anweisungen zentral in einem Keyframe, was bei eventuellen Fehlern die Suche ziemlich erleichtert.
Und das ist dann eigentlich schon objektorientiertes Programmieren. Ich persönlich würde dir auf jeden Fall IMMER zur zweiten Version raten. Wie gesagt, bei kleinen Animationen ist das noch kein Problem. Aber spätestens, wenn du was komplexeres machen musst, kommst du mit der ersten Anweisung mächtig ins Schleudern!
Aber das entscheidet jeder Programmierer sowieso selbst.
Und dann kannst du dir z. B. eine globale Funktion schreiben, wenn du viele unterschiedliche Movieclips hast, die mehr oder weniger das gleiche machen sollen:
PHP:
//NICHT GETESTET - Nur als Anschauung gedacht
var aktiverMC:MovieClip;
function (bewegen){
aktiverMC._x = 100;
//du kannst hier auch wesentlich mehr reinschreiben
}
DeinMC01.onRelease = function(){
aktiverMC = DeinMC01;//legt "DeinMC01" als aktiven Movieclip fest.
bewegen();
}
DeinMC02.OnRelease = function(){
aktiverMC = DeinMC02;//legt "DeinMC02" als aktiven Movieclip fest.
bewegen();
}
Das hat den Vorteil, dass du mit relativ wenig Schreiberei viele Movieclips steuern kannst. Okay, das ist zwar jetzt nichts Weltbewegendes und auch nur zur Anschauung gedacht. Aber bei größeren Sachen kannst du in die Funktion bewegen() alles reinschreiben, was passieren soll und beim onRelease() rufst du sämtliche Anweisungen der bewegen() mit nur einer Anweisung auf.
Probier das einfach mal aus.