Hallo,
dieses Verhalten liegt in der Logik der Schaltfläche bzw. des MovieClip-als-Schaltfläche begründet: wenn man ein RollOver auslöst, eine Animation abspielt und anschließend den Button/MC klickt, wird Otto Normalverbraucher auch irgendwann wieder die Maus loslassen, und zwar auf dem Button/MC. Und dann tritt automatisch wieder ein RollOver auf, d.h. in Deinem Fall, die Animation spielt wieder.
- Erstelle einen MovieClip (Instanzname "b") mit drei Frames, Bildbezeichnungen unnötig bzw beliebig, falls Du lieber zu Markernamen anstatt Framenummern navigieren möchtest
- Frame 1: Normalzustand
- Frame 2: Rolloverzustand, enthält einen weiteren MovieClip ("a") mit der Rollover-Animation
- Frame 3: geklickter Zustand
- Bildskript in _root:
b.stop();
b.onRollOver = function() {
this.gotoAndStop(2);
this.onEnterFrame = function() {
this.a.play();
if (this.a._currentframe == this.a._totalframes) {
this.a.gotoAndStop(1);
this.onPress = function() {
trace("blabla");
this.gotoAndStop(3);
};
this.onRelease = function() {
delete this.onPress;
};
delete this.onEnterFrame;
}
};
};
b.onRollOut = b.onReleaseOutside=function () {
delete this.onPress;
this.gotoAndStop(1);
};
Zuerst wird "b" gestoppt. Bei Rollover geht er in Frame 2 und führt dort die Animation in "a" aus. Gleichzeitig muß permanent kontrolliert werden, ob bereits der letzte Frame der Animation gezeigt wird. Falls ja, kehrt die Animation zurück in den ersten
Frame (alternativ kann sie auch im letzten Frame gestoppt werden mit this.a.stop()). Erst jetzt weisen wir "b" die benötigten onPress etc Ereignisse zu. Bei rollover und releaseoutside wird das onPress wieder gelöscht. Damit stellen wir sicher, daß
der Anwender erst nach Ablauf der Animation mit Mausklick etwas ausführen kann.
Viel Spaß