tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
3174
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hallo,

    wer oft mit setInterval und dynamisch eingeladenen/instanzierten MovieClips arbeitet, kennt das Problem: Bei einem Wechsel der Inhalte müssen ggf. alle Intervalle "per Hand" gelöscht werden, da diese sonst bis in alle Ewigkeit weiterlaufen, auch wenn das auslösende Objekt nicht mehr existiert.

    Mit dieser kleinen Klasse (deren Existenz auf jenes Problem zurückgeht) lässt sich dieses Problem beheben; das "SmartInterval" prüft bei jedem Aufruf die Existenz des Zielobjektes und löschst sich ggf. selbst:
    Code actionscript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    class smartInterval {
     
        var OBJ:Object;
        
        function smartInterval(interval:Number, fn:Function, dest:MovieClip) {
            OBJ = new Object();
            OBJ.DC = dest;
            OBJ.FN = fn;
            OBJ.timestamp = getTimer();
            OBJ.DC["stamp" + OBJ.timestamp] = OBJ.timestamp;
            OBJ.interval = function() {
                if (this.DC["stamp" + this.timestamp] == this.timestamp) {
                    this.FN();
                } else {
                    clearInterval(this.IV);
                }
            }
            OBJ.IV = setInterval(OBJ, "interval", interval);
        }
    }

    Aufruf z.B.:
    Code :
    1
    2
    3
    4
    5
    
    var iv1 = new smartInterval(8000, function() { doSomething(); }, this);
     
    function doSomething() {
        // sonstwas
    }

    Grüße,

    Tobi
     

  2. #2
    Avatar von SonMiko
    SonMiko SonMiko ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Genial

    Lob und Bravo.
     
    Besten Gruß,

    Mike

  3. #3
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Aus gegebenem Anlass hier noch ein kleiner Prototype zum einmaligen Ausführen von Invervallen. Der Name der Callback-Methode wird als String übergeben:
    Code actionscript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    MovieClip.prototype.setTimeOut = function(interval, fn) {
        var iv = "timeOutInterval_" + getTimer() + "_" + int(Math.random() * 9999);
        var that = this;
        var cbFunc = function() {
            clearInterval(that[iv]);
            delete that[iv];
            that[fn]();
        }
        this[iv] = setInterval(cbFunc, interval);
    }
     
    // Aufruf:
     
    this.setTimeOut(2000, "machWas");
     
    function machWas() {
        trace("Hallo: " + this);
    }

    Grüße
    .
     

Ähnliche Themen

  1. Dateien automatisch löschen
    Von Alice im Forum PHP
    Antworten: 21
    Letzter Beitrag: 12.11.10, 18:20
  2. Intervalle
    Von bam im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 1
    Letzter Beitrag: 17.06.10, 20:58
  3. Automatisch löschen mit PS 3?
    Von Alex363 im Forum Photoshop
    Antworten: 4
    Letzter Beitrag: 17.02.09, 15:55
  4. MultipageEditor - löschen von GEF-Objekten
    Von LaborIgel im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 16.04.07, 10:31
  5. Automatisch löschen
    Von PsychoGiga im Forum PHP
    Antworten: 20
    Letzter Beitrag: 02.11.04, 22:24