Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-09-2005, 11:19   #1 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
vorhandene intervalle erkennen?

hi,

folgende funktion:
ActionScript:
  1. function makePause() {
  2.     function weiter() {
  3.         play();
  4.         clearInterval(this.stopInt);
  5.     }
  6.     this.stop();
  7.     this.stopInt = setInterval(weiter, stopTime);
  8. }

diese funktion rufe ich gelegentlich in der zeitleiste auf.
an manchen stellen wird diese funktion auch schon aufgerufen, während das interval dieser funktion noch nicht gelöscht ist.

das führt offensichtlich zu dem problem, daß zweimal ein "stopInt"interval generiert wird, wovon nur eins nach der angegebenen zeit gelöscht wird.

mein ziel wäre es nun, zu erkennen, wie viele intervall im moment quasi laufen und alle diese intervalle gleichzeitig zu löschen.

kann mir dabei jemand helfen?

danke!
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 29-09-2005, 11:48   #2 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
das problem hatte ich auch mal. das hat mir geholfen:

ActionScript:
  1. //-     Modifizierte Set- und Clearinterval - Funktionen
  2. //  verhindert das ݢerlagern von Intervallen. Neues Interval wird nur gesetzt, wenn KEIN Interval vom selben Typ mehr am laufen ist!
  3.     function setInterval2(f,i,v){
  4.         var p=arguments.concat();
  5.         p=p.slice(3);
  6.         if(typeof _global[v] != "object") _global[v]={};
  7.  
  8.         if(!_global[v].running){
  9.         //array mit was die zus嵺lichen argumente enth孴 f�die funktion f
  10.         _global[v].id=setInterval(f,i,p.length>0 ? p : null);
  11.         _global[v].running=1;
  12.         }
  13.     }
  14.  
  15.     function clearInterval2(v){
  16.         clearInterval(_global[v].id);
  17.         _global[v].running=0;
  18.     }
  19.  
  20. deinInterval = setInterval2(deineFunktion, 1000);
  21. deinInterval = setInterval2(deineFunktion, 1000); // wird nicht gesetzt, überschreibt also NICHT das alte interval
  22.  
  23. clearInterval2("deinInterval");

gruß maddin
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 29-09-2005, 12:10   #3 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
hey, das klingt interessant.
schonmal schade, daß dieses problem tatsächlich so schwer in den griff zu bekommen ist, jedenfalls:

ich müsste deine lösung genau andersherum haben:
bei dir ist es so, daß das neue interval nicht gesetzt wird, wenn es durch ein altes blockiert wird.

bei mir muss aber auf jeden fall eine neues interval gesetzt werden.
das alte intervall muss dann allerdings eben zu diesem zeitpunkt gekillt werden.

grund:
ich habe eine fortlaufende animation, in die ich pausen einbaue - eben mit dieser makePause funktion.
da der user aber durch navigationsbuttons in der präsentation hin und herspringen kann, kommt es natürlich zu überlappungen der intvalle.

alles plöt.
und in der timeline die pause einbauen will ich nicht.
das muss doch auch so irgendwie vernünftig gehen.
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 29-09-2005, 13:28   #4 (permalink)
AAI
 
Benutzerbild von AAI
 
Registriert seit: May 2004
Beiträge: 327
Lösch doch einfach das alte Interval
beim Aufruf des neuen, obs da is oder
nich.

ActionScript:
  1. function start_int () {
  2. clearInterval(int1)
  3. int1 = setInterval(func1,100)
  4. int1_aktiv = 1
  5. }

Geändert von AAI (29-09-2005 um 13:31 Uhr)
AAI ist offline   Mit Zitat antworten
Alt 29-09-2005, 13:46   #5 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
ja, das sollte eigentlich reichen.

theoretisch tut es das auch, aber ich habe ein problem, was ich mir absolut nicht erklären kann und was ich darauf zurückführe:

am ende der präsentation soll die timeline stoppen.
der stop() befehl wird aber übergangen, weil - so vermute ich - noch ein interval darauf wartet, nach der vorgegebenen zeit wieder "play()" ausführen zu dürfen.
wenn ich das intervall alleridngs trace, ist es an der stelle undefined.

total strange.
naja, egal
__________________
Design ist AUCH Geschmackssache.
Mr.Twister 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 11:13 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele