play/pause button

hallo,

hab in einem anderen thema dazu schon folgenden code gefunden:

PHP:
stop();
  
  this.onPress = function() {
  	if (_root.isplaying) {
  		_root.stop();
  		this.gotoAndStop(2);
  	} else {
  		_root.play();
  		this.gotoAndStop(1);
  	}
  	_root.isplaying = !_root.isplaying;
  }

meine idee, diesen code einzubinden hat nicht ganz geklappt:

ich habe einen leeren movieclip erzeugt und in dessen zeitleiste im ersten frame den "pause" und im zweiten den "play" button. Den Code jeweils auf die beiden Frames.

Nun werden im hauptfilm nur leider nicht mehr die Rollover-effekte der Buttons angezeigt und der Film reagiert nicht auf den Klick. Es ändern sich lediglich die Buttons.
Diese sind mit einem einfachen:
PHP:
on (release) {
	stop();
}
oder eben "play (); versehen.
Wie soll ich den Code ändern, damit er auf den richtigen Film und nicht auf die Zeitleiste des leeren Movieclips reagiert?
Oder geh ich die Sache ganz falsch an?
Wie krieg ich die Button-effekte wieder her?


lg
mona
 
Hi,

Dieser Code legt das Mausereignis auf das Objekt, auf dessen Zeitleiste er steht (in diesem Fall nicht auf einen der Buttons, sondern auf den MC, der die Buttons enthält).

Du musst den Code auf den entsprechenden Button legen (verwende keine Schaltflächenobjekte - mit denen handelst Du Dir sowieso nur Probleme ein -, sondern MovieClips für die Buttons).

Zudem musst Du den Code auf der Buttoninstanz
Code:
on (release) {
    stop();
}
löschen, da Du das andere Mausereignis ansonsten überschreibst.

Ausserdem ist es ungünstig, Zeitleisten mit dynamischen Scripten zu kombinieren. Packe die beiden Buttons lieber auf den selben Frame und blende jeweils einen über seine ._visib le-Eigenschaft aus, wenn nur einer zur Zeit zu sehen sein soll.

Gruß
.
 
Danke für die schnelle Antwort. Leider klappt es noch nicht. Es öffente sich nun ein Warnfenster mit folgendem Inhalt:

Code:
Scene=Scene 1, Layer=play, Frame=1: Line 3: Statement must appear within on/onClipEvent handler
       this.onPress = function() { 

Scene=Scene 1, Layer=play, Frame=1: Line 14: Statement must appear within on/onClipEvent handler
     _visible

Kann ich die _visible Eigenschaft einfach unter das Actionscript hängen? Der Button bleibt nähmlich sichtbar. Wie muss ich den Code ändern, denn schließlich soll er nun nicht ins 2te Bild springen?

lG
Mona
 
Zuletzt bearbeitet:
Hi,

meine Aussage
Du musst den Code auf den entsprechenden Button legen
war etwas missverständlich: Diesen Code musst Du auf die Zeitleiste des Buttons legen (daher kannst Du für den Button auch keine Schaltfläche verwenden, sondern solltest einen MovieClip nehmen).

Auf Objektinstanzen kann nur Code notiert werden, der mit on(Ereignis) oder onClipEvent(Ereignis) beginnt.

Den zweiten Teil Deines letzten Postings habe ich nicht verstanden - bitte poste die entsprechende Datei und teile mir mit, was wo wann und an welcher Stelle passieren soll.

Gruß
.
 
Der Code liegt auf der Zeitleiste der Movieclip-Buttons. Ich glaube, dass ich den 2ten Button falsch positioniert habe. Den habe ich nun auf eine andere Ebene gelegt (da die beiden Buttons ja in einem frame liegen sollen). Ist das so richtig?

Die _visible Eigenschaft funktioniert auch nicht.

Wenn ich mir den Code richitg zusammen reime, sagt der doch, dass in Bild 2 gesprungen werden soll. Wenn die beiden Buttons nun in einem Bild liegen, müsste ich da doch was änder oder?

Ich möchte, dass der play/pause button funktioniert und ich mit ihm die Diashow steuern kann.

Hier ist die Datei. http://www.mona-fee.de/galerie_iceland.fla

Danke für deine Bemühungen.

lg
mona
 
Hi,

1. Du hast folgenden Code auf eine Objektinstanz (Schaltfläche s_break) gelegt:
Code:
stop(); 
   
  this.onPress = function() { 
      if (_root.isplaying) { 
          _root.stop(); 
          this.gotoAndStop(2); 
      } else { 
          _root.play(); 
          this.gotoAndStop(1); 
      } 
      _root.isplaying = !_root.isplaying; 
  }
Ich hatte Dir vorhin gesagt, dass derartiger Code nicht auf Instanzen liegen darf.

2. Du hast folgenden Code auf eine Zeitleiste (erster Frame von s-break-MC) gelegt:
Code:
  onClipEvent (load) = function() { 
      if (_root.isplaying) { 
          _root.stop(); 
          this.gotoAndStop(2); 
      } else { 
          _root.play(); 
          this.gotoAndStop(1); 
      } 
      _root.isplaying = !_root.isplaying; 
  }
Eventcode dieser Art darf dagegen nicht auf Zeitleisten, sondern nur auf Objektinstanzen gelegt werden.

3. Zudem macht Dein Code keinen Sinn, da Du mit "this" die Instanz von "s-break-MC" ansprichst, die nur über einen Frame verfügt.

4. Bitte erkläre, was Dein Vorhaben ist (sprich: wie sich diese Slideshow verhalten soll), dann könnten wir Dir Tipps geben, wie Du die Sache richtig angehst - Deine bisherige Herangehensweise ist auch aus anderen Gründen suboptimal.

5. _visible ist kein Befehl und auch keine Funktion, sondern eine Eigenschaft. Wie Du Eigenschaften einsetzt, erfährst Du aus dem Handbuch (in diesem Fall unter MovieClip._visible-Eigenschaft nachschlagen).

6. Ich habe den Eindruck, dass es Dir für Dein Vorhaben an vielen nötigen Grundlagen fehlt - Code zusammenzusuchen und ihn wahlweise an verschiedene Stellen zu setzen, ohne zu wissen, was man eigentlich macht, wird in den seltensten Fällen zum Erfolg führen. Andererseits macht es auch keinen Sinn, wenn wir Dir die komplette Komponente fertig liefern oder Dir jede Codezeile (ohne Lerneffekt) vorkauen. Mein Tipp daher an Dich: Beschäftige Dich zunächst mit den (für fast alles nötigen) Actionscript- und Flashgrundlagen:
  • Objektmodell

  • Ereignismodell

  • Variablen, Instanzen, Objektpfade

  • Unterschied der verschiedenen Objekttypen (MCs, Schaltflächen, Grafiken)

  • Methoden und Eigenschaften

Gruß
.
 
Oje. Ich möchte garnicht lernen Flash perfekt zu beherrschen, nur meine Homepage nach meinen Vorstellungen zusammen basteln. Mit einer Anleitung, wie ich diesen Button erstellen kann, wäre mir komplett geholfen.

Die Slideshow ist ein einfacher Film ohne Effekte, der mit diesem Button eben angehalten und wieder weiterlaufen soll.

Am leichtesten wäre es für mich, wenn ich für diesen Button einen eigenen swf-film erstelle, den ich dann auf Stufe 2 packe. Dann wäre ich mit 3 Aktionen für einen play-, stop- und replaybutton, die sich auf die Slideshow.swf auf Stufe 1 beziehen, gut bedient.
Ist sicher nicht der eleganteste Weg, aber so könnte ich den film auf stufe 2 einfach zwischen den frames hin- und herspringen lassen und hätte so den Effekt eines play/pause buttons. (So weiß ich wenigstens wie das geht und du brauchst dich nicht mit ewiglangen Anleitungen für mich zubemühen;) ) Gibt es solche Codes für Aktionen die sich auf einen Film einer anderen Stufe beziehen?

lg
mona
 
Zuletzt bearbeitet:
Zurück