Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-04-2005, 08:01   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Heidelberg
Beiträge: 16
Problem mit Pause-Button

Hi,
ich möchte einen Pause-Button in eine Soundsteuerung einbauen, der den Sound, wenn man ihn erneut drückt, wieder an der gleichen Position abspielt, an dem er pausiert wurde.

Er stoppt nun zwar den Sound, aber spielt ihn bei erneutem Drücken nicht mehr ab. Hier das Script:

PHP-Code:
btPause.onPress = function() {      
             if (
zustand 1) {          
                
loop.stop();          
                
aktPosition = (loop.position/1000);          
                
zustand 0;      
             }      else {          
                        
loop.start(aktPosition1);
                        
loop.onSoundComplete = function() {              
                             
loop.start(0,999);          
                        }
                        
zustand 1;       
                  }  
}; 
Ich weiß nicht, woran's liegt, finde eigentlich alles korrekt soweit ...
Findet jemand von euch den Fehler?
tantebootsy ist offline   Mit Zitat antworten
Alt 30-04-2005, 08:58   #2 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
aloha!
ActionScript:
  1. loop = new Sound();
  2. loop.loadSound("bg1.mp3", true);
  3. zustand = 1;//draußen mal zustand deklarieren;
  4. MC_pause.onPress = function() {
  5.     aktPosition = (loop.position/1000);//position muss unabhängig von if- abfrage abgefragt werden;
  6.     if (zustand==1) {
  7.         loop.stop();
  8.         zustand = 0;
  9.     } else {
  10.         loop.start(aktPosition, 1);
  11.         loop.onSoundComplete = function() {
  12.             loop.start(0, 999);
  13.         };
  14.         zustand = 1;
  15.     }
  16. };
fragen?-fragen!
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary

Geändert von andretti (30-04-2005 um 09:01 Uhr)
andretti ist offline   Mit Zitat antworten
Alt 30-04-2005, 09:42   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Heidelberg
Beiträge: 16
Ach, Mist, ich hatte in der if-Abfrage den Operator nicht richtig beschrieben (==). Daran lag's!
Thx a lot!
tantebootsy ist offline   Mit Zitat antworten
Alt 30-04-2005, 10:33   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Heidelberg
Beiträge: 16
Dann noch was anderes:
Ich möchte, dass der Play-Button nur aktiv ist, wenn der Sound gerade auf Pause gesetzt wurde, dies kann ich doch eigentlich mit einem onEnterFrame machen, da damit ja permanent gefragt wird, ob zustand == 1 ist, oder?

PHP-Code:
_global.zustand 1;
_root.btPlay.onEnterFrame = function() {      
     if (
zustand == 1) {
          
this.enabled false;      
     }
     else {
          
this.enabled true;      
      }
}     

btPlay.onPress = function() {      
     if (
zustand == 0) {
         
loop.start(aktPosition1);
         
loop.onSoundComplete = function() {
       
loop.start(0,999); 
         } 
     
zustand 1;      
     }
     else {
            
this.enabled false;      
     }  

Anfangs funktioniert das ja noch, aber wenn ich den Sound mit dem Play-Button wieder aus der Pause hole ist er danach immernoch aktiv, obwohl ich den Zustand auf 1 setze ...
Nur wenn ich erneut auf den Play-Button drücke ist er wieder inaktiv weil ich das beim onPress mit reingemacht habe.
tantebootsy ist offline   Mit Zitat antworten
Alt 30-04-2005, 11:28   #5 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
bei welchem player startet man nach pause mit dem play-button? das macht man doch mit dem pause/play-button?

soll der play-button auch an pause-position des songs gestartet werden? oder von anfang an?

ActionScript:
  1. loop = new Sound();
  2. loop.loadSound("bg1.mp3", true);
  3. pausezustand = false;
  4. playzustand = true;
  5. MC_play.enabled = false;
  6. MC_pause.onPress = function() {
  7.     aktPosition = (loop.position/1000);
  8.     if (!pausezustand) {
  9.         loop.stop();
  10.         pausezustand = true;
  11.         MC_play.enabled = true;
  12.         playzustand = false;
  13.     } else {
  14.         loop.start(aktPosition, 1);
  15.         loop.onSoundComplete = function() {
  16.             loop.start(0, 999);
  17.         };
  18.         pausezustand = false;
  19.         playzustand = true;
  20.     }
  21. };
  22. MC_play.onPress = function() {
  23.     if (!playzustand) {
  24.         loop.start(aktPosition, 1);
  25.         playzustand = true;
  26.         pausezustand = false;
  27.         this.enabled = false;
  28.         loop.onSoundComplete = function() {
  29.             loop.start(0, 999);
  30.         };
  31.     }
  32. };
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary

Geändert von andretti (30-04-2005 um 11:43 Uhr)
andretti ist offline   Mit Zitat antworten
Alt 01-05-2005, 13:50   #6 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Heidelberg
Beiträge: 16
Zitat:
Zitat von andretti
bei welchem player startet man nach pause mit dem play-button? das macht man doch mit dem pause/play-button?
Bei MEINEM Player! Es gibt da ja mehrere Möglichkeiten, ich habe für Pause und Play zwei getrennte Buttons. Und wenn der Sound pausiert wurde soll man ihn eben über den Pause und auch den Play-Button wieder starten können.
So ist das ...

Jedenfalls danke für deine Hilfe, habe dadurch noch ne andere Möglichkeit entdeckt, die jetzt auch funktioniert, wie ich's wollte:

ActionScript:
  1. zustand = 1;
  2.  
  3. btPause.onPress = function() {
  4.         aktPosition = (loop.position/1000);
  5.         if (zustand == 1) {
  6.                 loop.stop();
  7.                 zustand = 0;
  8.                 btPlay.enabled = true;
  9.            } else {
  10.                 loop.start(aktPosition, 1);
  11.                 zustand = 1;
  12.                 loop.onSoundComplete = function() {
  13.                         loop.start(0, 999);
  14.                 };
  15.                 btPlay.enabled = false;
  16.         }
  17. };
  18.  
  19. btPlay.onPress = function() {
  20.         if (zustand == 0) {
  21.                 loop.start(aktPosition, 1);
  22.                 zustand = 1;
  23.                 loop.onSoundComplete = function() {
  24.                         loop.start(0, 999);
  25.                 };
  26.         }
  27.         this.enabled = false;
  28. };

Was ich bei Flash nicht so ganz raffe: Wann lege ich in Flash den nun globale Variablen an. Eigentlich müsste ich "zustand" doch als globale anlegen, sonst dürfte es nicht funktionieren ... Oder lege ich globale Variablen doch nur innerhalb einer Funktion an, wenn ich sie in einer anderen benutzen will?
Auch das mit dem _root: Sauberer ist es, wenn man's angibt, aber funktionieren tut's auch ohne?

Wäre nett, wenn ich dazu noch Feddback bekommen könnte.
tantebootsy ist offline   Mit Zitat antworten
Alt 01-05-2005, 17:31   #7 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
Zitat:
Zitat von tantebootsy

ActionScript:
  1. zustand = 1;
  2.  
  3. btPause.onPress = function() {
  4.         aktPosition = (loop.position/1000);
  5.         if (zustand == 1) {
  6.                 loop.stop();
  7.                 zustand = 0;
  8.                 btPlay.enabled = true;
  9.            } else {
  10.                 loop.start(aktPosition, 1);
  11.                 zustand = 1;
  12.                 loop.onSoundComplete = function() {
  13.                         loop.start(0, 999);
  14.                 };
  15.                 btPlay.enabled = false;
  16.         }
  17. };
  18.  
  19. btPlay.onPress = function() {
  20.         if (zustand == 0) {
  21.                 loop.start(aktPosition, 1);
  22.                 zustand = 1;
  23.                 loop.onSoundComplete = function() {
  24.                         loop.start(0, 999);
  25.                 };
  26.         }
  27.         this.enabled = false;
  28. };
so wie du das geschrieben hast für den btPlay, startet dann der loop nur, wenn zustand == 0 UND an der stelle, wo bt_pause gepressed wurde;
was, wenn stop gedrückt wurde? da gibt's keinen zustand, der deklariert wurde....? oder hab ich da was übersehen? oder gibt's kein "btStop"?

ad variable:
du kannst ja nicht erst bei onPress deklarieren, ob zustand == 0 oder ==1 ist, das musste vorher machen, sonst geht ja die if-abfrage net.....

ad _root:
für mich persönlich ist damit bessere übersicht gegeben;
desweiteren wird's haarig, wenn mehrere mc's ineinander liegen oder eine andre swf in den hauptflim geladen wird;

mein tipp für mc's mit eigenem as oder hereingeladene filme:
anstelle von _root eine variable nehmen:
bsp.- ich mache einen werbe-film, den ich später in den hauptfilm lade ;

actionscript in die erste zeile des ersten frames des werbefilmes:
ActionScript:
  1. var werbefilm = this; //somit kann ich anstelle von _root immer werbefilm schreiben;
  2.  
sonst würde sich eventuell das _root im werbefilm auf einmal als _root des hauptfilmes mausern, das macht flash manchmal;
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary

Geändert von andretti (01-05-2005 um 17:37 Uhr)
andretti ist offline   Mit Zitat antworten
Alt 02-05-2005, 19:35   #8 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Heidelberg
Beiträge: 16
Zitat:
Zitat von andretti

ad variable:
du kannst ja nicht erst bei onPress deklarieren, ob zustand == 0 oder ==1 ist, das musste vorher machen, sonst geht ja die if-abfrage net.....

Nein, hast nichts übersehen, es gibt keinen Stop-Button, es passt jetzt alles wie's soll .

Das mit der globalen Variable hatte ich so gemeint, dass das anfangs geschriebene "zustand = 1" anscheinend das gleiche ist wie _global.zustand = 1.
Deshalb hatte ich mich gefragt, für was es überhaupt das _global gibt. Wohl wahrscheinlich, wenn ich eine globale Variable innerhalb einer Funktion deklarieren möchte, die auch außerhalb dieser Funktion benutzt werden soll, richtig?
Also: außerhalb von Funktionen angelegte Variablen sind immer globale Variablen innerhalb von Funktionen muss ich mit _global arbeiten, oder?
tantebootsy ist offline   Mit Zitat antworten
Alt 02-05-2005, 20:51   #9 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
Zitat:
Zitat von tantebootsy
Nein, hast nichts übersehen, es gibt keinen Stop-Button, es passt jetzt alles wie's soll .
wenn der user das lied von beginn an hören will, hat der also keinen einfluss drauf und muss warten, bis es wieder von vorne beginnt?

außer es ist net für andre user gedacht.....

aus der flash hilfe:

"_global object
Verfügbarkeit
Flash Player 6.

Verwendung
_global.bezeichner

Parameter
Keine.

Rückgaben
Ein Bezug auf das globale Objekt mit den Haupt-ActionScript-Klassen wie String, Object, Math und Array.

Beschreibung
Bezeichner; erstellt globale Variablen, Objekte oder Klassen. Beispielsweise könnten Sie eine Bibliothek erstellen, die wie das Math- oder Date-Objekt als globales ActionScript-Objekt verwendet wird. Im Gegensatz zu in der Zeitleiste oder lokal deklarierten Variablen und Funktionen sind globale Variablen und Funktionen in allen Zeitleisten und Gültigkeitsbereichen in der SWF-Datei sichtbar, sofern sie nicht durch gleichnamige Bezeichner in inneren Gültigkeitsbereichen verdeckt sind.

Beispiel
Im folgenden Beispiel wird eine Funktion der obersten Ebene, factorial(), erstellt, die in allen Zeitleisten und Gültigkeitsbereichen in einer SWF-Datei verfügbar ist:

_global.factorial = function (n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n-1);
}
}
"

ein tipp von mir:

wenn du scriptest und bei einem begriff aus dem flash net genau weißt, was des is, was des kann, dann klick in den begriff und dann auf das wörterbuch mit dem fragezeichen("Referenz") rechts oberhalb des as-feldes
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 03-05-2005, 07:05   #10 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
nochn Tipp:

oder Du drückst dann die F1-Taste wenn Du auf diesen Begriff gedrückt hast, somit springt automatisch die Hilfe auf und man kann schön lucki-lucki machen...
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 03-05-2005, 10:12   #11 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Heidelberg
Beiträge: 16
Zitat:
Zitat von andretti
wenn der user das lied von beginn an hören will, hat der also keinen einfluss drauf und muss warten, bis es wieder von vorne beginnt?
Es geht hier ja nicht um komplette Lieder sondern nur um Samples, die im Hintergrund abspielen sollen. Wenn der User Hintergrundmusik hören möchte klickt er das an und ein PopUp geht auf, siehe Beispiel (auf durchkreuzte Gitarre klicken). Wenn der User keine Musi mehr hören möchte, klickt er einfach das PopUp zu.

Zitat:
Zitat von rendner[i]
nochn Tipp:

oder Du drückst dann die F1-Taste wenn Du auf diesen Begriff gedrückt hast, somit springt automatisch die Hilfe auf und man kann schön lucki-lucki machen...
F1 hm? Na, danke für den Tipp!
Ich schaue bei Flash nicht gern in die Hilfe, ist mir oft zu fachchinesisch geschrieben, wobei ich obiges nun schon verstanden hab'. Das heißt aber nicht, dass ich nie in die Hilfe schaue!
Was mir jetzt klarer ist, ist dass globale Variablen auch in verschiedenen Zeitleisten funktionieren. Dies ginge ja nicht mit der einfachen Deklaration zustand = 1.
Thx für die Hilfe!
tantebootsy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele