Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-07-2004, 12:06   #1 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
clearInterval in Kombination mit mehren setIntervals

So da bin ich wieder.
Ich versuche es erstmal zu beschreiben, da der Code noch viele Faktoren aufweist, die nichts mit dem Problem zu tun haben.

Ich habe 5 Buttons, diese erzeugen beim onPress einzeln einen Fkt Aufruf. Diese Funktion startet Animationen usw und am ende sitz ein setInterval das nach einer Sekunde eine Funktion aufruft, die die Animationen beendet.
Diese Funktion hat auch ein clearInterval.
Der hacken ist, wenn ich auf mehrere Buttons klicke, lösen die alle ein und die selbe Animation aus und dann ein clearInterval. Das clearInterval löscht aber (mit Trace überprüft) nur das letzte setInterval.
Hier ist ein wenig abgespeckter Code davon.

ActionScript:
  1. //buttons, der PFad ist unbedeutend
  2. for (var i=1; i<=5;i++){
  3. _root.ebene["btn"+i].onPress = function() {
  4.  beginani();
  5. }
  6. }
  7.  
  8. beginani = function () {
  9. //tu ganz viele animationen: z.B
  10. _root.pfad.Mc.onEnterFrame = funktion(){
  11.   this._rotation += 56;
  12. }
  13.  
  14. //dies soll genau eine Sekunde anhalten, habe hier anstatt var global genommen
  15. //denn mit var funzts garnicht
  16. _global.si = setInterval(endeani(),1000);
  17. }
  18.  
  19. endeani = function() {
  20. trace("is an");
  21. clearInterval(si);
  22. //stoppe viele Anis, ua auch:
  23. delete _root.pfad.Mc.onEnterFrame;
  24. }

Wie grade im Code geschrieben, wegen vielen Pfad änderungen klappt var si garnicht, dh ich habe das trace "is an" durch gehend ohne Pause.
Mit global klappt es , aber nur, wenn ein Button angeklickt ist, nach dem clearInterval gestartet wurde.
Wird ein zweiter Button geklickt, bevor clearInterval aufgerufen werden konnte. Endet trace nie wieder.
Ich konnte es darauf zurückführen, dass die variable _global.si bei jedem aufruf hochgezählt wird, was ziemlich dumm ist, wie ich finde.
Wie genau kann ich denn dieses problem lösen?

Ich könnte ein Array mit den werten füllen, und alle clearen, aber das is weder elegant, noch auf die dauer ressourcen schonend.

Ich habe auch probiert nach dem clearInterval ein delete si durchzführen, aber ignoriert flash, daher hab ich keine Lösung dafür
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!
Samuel ist offline   Mit Zitat antworten
Alt 31-07-2004, 12:34   #2 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
hi

PHP-Code:
for(var i=0;i<6;i++)
{
    
_root["mc"+i].id=i
    _root
["mc"+i].onPress=function()
    {
        
make_inter(this.id)
    }
}

MovieClip.prototype.make_inter=function(id)
{
    var 
inter=_root["inter"+id
      
intersetInterval(function () {
            
clearInterval(inter);
            
delete inter;
            
ani(id)            
        }, 
500);
}
function 
ani(arg)
{
    
trace(arg)


...warte...ich werde dich mit php nerven...
warrantmaster ist offline   Mit Zitat antworten
Alt 31-07-2004, 12:51   #3 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
Danke

Jedoch hat mir meine gute alte Informatik zeit mit Delphi geholfen.
der trick sind verschachtelte Funktionen.
Dies klappt super:

ActionScript:
  1. beginani = function () {
  2. endeani = function() {
  3. trace("is an");
  4. clearInterval(si);
  5. //stoppe viele Anis, ua auch:
  6. delete _root.pfad.Mc.onEnterFrame;
  7. }
  8.  
  9. //tu ganz viele animationen: z.B
  10. _root.pfad.Mc.onEnterFrame = funktion(){
  11.   this._rotation += 56;
  12. }
  13.  
  14. //dies soll genau eine Sekunde anhalten, habe hier anstatt var global genommen
  15. //denn mit var funzts garnicht
  16. var si = setInterval(endeani(),1000);
  17. }

Obwohl ich nicht dran zweifele, dass deins auch gehen würde.

Achja Ps: Was hast du immer mit deinem MC prototype? Ist das n vorteil?
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!
Samuel ist offline   Mit Zitat antworten
Alt 31-07-2004, 13:07   #4 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
kannst von überall aufrufen z.b. (ohne pfadblabla)
warrantmaster ist offline   Mit Zitat antworten
Alt 31-07-2004, 13:08   #5 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
und was ist mit _global.function ...?
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!
Samuel ist offline   Mit Zitat antworten
Alt 31-07-2004, 13:19   #6 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
auch.

PHP-Code:
MovieClip.prototype.bla=function()
{
    
trace(this)
}

mc.bla()

_global.blub=function(wer)
{
    
trace(wer)
}

blub(mc

machen kann man vieles
warrantmaster 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 23:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele