denkfehler.... bei array, for und onEnterFrame....

Leugim

Erfahrenes Mitglied
Hallo leute!
mir ist da ein kleines Problemchen untergekommen, bei dem ich nicht so recht weiß, wie ich das lösen sollte..
folgendes:
Eine Funktion fadeOut, soll bestimmte MC's ausblenden lassen, das ich habe ich dann so gelöst:
Code:
function fadeOut (taarget:String) {
    _root[taarget].onEnterFrame = function () {
        _root[taarget]._alpha -= (_root[taarget]._alpha / 5);
        if (_root[taarget]._alpha <= 5) {
            delete _root[taarget].onEnterFrame;
        }
    };
}

klappte soweit auch ganz in ordnung, allerdings kamen im Laufe der Zeit immer mehr MC's hinzu, die zur gleichen Zeit ausgeblendet werden müssen..
Da kam ich dann auf die Idee, der Funktion einen Array mitzugeben, der die Instanznamen, die ausgeblendet werden sollen enthält.
Das ganze sieht dann so aus:
Code:
function fadeOutI (taarget:Array) {
    for (var i:Number = 0; i <= taarget.length-1; i++) {
        _root[taarget[i]].onEnterFrame = function () {
            _root[taarget[i]]._alpha -= (_root[taarget[i]]._alpha / 5);
            if (_root[taarget[i]]._alpha <= 5) {
                delete _root[taarget[i]].onEnterFrame;
            }
        };
    }
}
Allerdings wird bei der fadeOutI-Funktion der onEnterFrame entweder nicht gelöscht, oder immer wieder ausgeführt und dann immer wieder neu gelöscht, woraufhin das Apsielen der langsamer wird.... Achja und ausgeblendet wird auch nichts mehr :mad:

Vielen Dank für eure Zeit..
 
Zuletzt bearbeitet:
Hi,

kann ja auch nicht, da "i" innerhalb der jeweiligen onEnterFrame-Methoden nicht mehr aktuell ist (wie auch: die Variable wird ja weiter hochgezählt, schon bevor die erste Methode anfängt zu arbeiten). Du brauchst Dir aber auch nichts in Hilfsvariablen zu merken, da Du innerhalb einer onEnterFrame-Methode mit "this" einen Verweis auf den jeweiligen MovieClip bekommst:
Code:
function fadeOutI (taarget:Array) {
    for (var i:Number = 0; i < taarget.length; i++) {
        _root[taarget[i]].onEnterFrame = function () {
            this._alpha -= (this._alpha / 5);
            if (this._alpha <= 5) {
                delete this.onEnterFrame;
            }
        }
    }
}

Gruß
.
 
jupp das war's... ist ja auch logisch ...
Allerdings verstehe ich eins noch nicht...
Wenn ich in meiner geposteten Version von "fadeOutI" einen trace befehl in die IF-Abfrage gepackt habe, habe ich ständig Output bekommen, als ob der geweilige MC schon mit seinem alpha auf unter 5% wäre:confused:
 
Zurück