• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-03-2010, 19:12   #1 (permalink)
Hobby x-treme Flasher
 
Benutzerbild von freakgesicht
 
Registriert seit: Oct 2001
Ort: Wien
Beiträge: 547
Funktion läuft trotz ClearInterval immer weiter

Hi Leute,

ich möchte gerne die Funktion FadeInSquare nur 1x pro Aufruf ausführen:

ActionScript:
  1. iSquare = 1;
  2.  
  3. while (iSquare <= 2) // hier nur zu Testzwecken 2 - ist eigentlich in der Gegend von 50+
  4. {
  5.     trace("iSquare: "+iSquare);
  6.     this[CallFadeInSquare+iSquare] = setInterval(this, "FadeInSquare", 1000, iSquare);
  7.    
  8.     iSquare++;
  9. }
  10.  
  11. FadeInSquare = function(SquareID)
  12. {
  13.     trace("SquareID: "+SquareID);
  14.     clearInterval(this[CallFadeInSquare+SquareID]);
  15. }

Leider läuft die Funktion immer weiter - folgendes erhalte ich in der Ausgabe:

iSquare: 1
iSquare: 2
SquareID: 1
SquareID: 1
SquareID: 1
SquareID: 1
... wobei sich "SquareID: 1" alle 1000 ms wiederholt - das läuft immer weiter.


Ich dachte eigentlich, dass ich dem setInterval eine eindeutige ID zugewiesen habe, aber anscheinend funktioniert das nicht so, wie ich möchte - hat jemand eine Erklärung für mich? Die SquareID wird in der Funktion korrekt wiedergegeben, also die Übergabe von der While-Schleife an die Funktion funktioniert anscheinend...

Vielen Dank, Lukas
__________________
Skalu • Digital • Studios

Geändert von freakgesicht (08-03-2010 um 06:51 Uhr) Grund: SquareID bei clearInterval statt iSquare
freakgesicht ist offline   Mit Zitat antworten
Alt 07-03-2010, 21:58   #2 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.644
FadeInSquare = function(SquareID)
{
trace("SquareID: "+SquareID);
clearInterval(this[CallFadeInSquare+iSquare]);
}

Wozu soll überhaupt CallFadeInSquare gut sein?
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 08-03-2010, 06:54   #3 (permalink)
Hobby x-treme Flasher
 
Benutzerbild von freakgesicht
 
Registriert seit: Oct 2001
Ort: Wien
Beiträge: 547
Zitat:
Zitat von SpecOps-12 Beitrag anzeigen
Wozu soll überhaupt CallFadeInSquare gut sein?
Das ist die ID vom setInterval, damit ich's wieder clearen kann. Wie soll ich sonst erreichen, dass die Funktion nur 1x durchlaufen wird? Ohne clearInterval läuft sie ewig in dem angegeben Intervall weiter.

Wenn ich das so außerhalb einer While-Schleife verwende, funktioniert's auch - nur bei meinem Beispiel nicht...

Ach ja, habe oben im 1. Beitrag etwas im Code geändert. In der Funktion muss ich natürlich die SquareID des Funktionparameters verwenden, statt iSquare der While-Schleife... Aber leider war das nicht der Fehler - funktioniert noch immer nicht.

Danke, Lukas
__________________
Skalu • Digital • Studios
freakgesicht ist offline   Mit Zitat antworten
Alt 08-03-2010, 10:40   #4 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.644
Man kann doch nur vermuten, dass die Rückgabe vom setInterval zufällig mit dem Schleifen-Iterator übereinstimmt.

this[CallFadeInSquare+iSquare] = setInterval(this, "FadeInSquare", 1000, iSquare);

könnte als unter Umständen genauso gut das hier heißen:

3 = 5;

Macht keinen Sinn.

Schreib die Interval-IDs in ein Array, die kannst du dann dem Iterator gemäß wieder löschen:

PHP-Code:
iSquare 1;
= [];

while (
iSquare <= 2// hier nur zu Testzwecken 2 - ist eigentlich in der Gegend von 50+
{
    
trace("iSquare: "+iSquare);
    
a[iSquare] = setInterval(this"FadeInSquare"1000iSquare);
    
iSquare++;
}

FadeInSquare = function(SquareID)
{
    
trace("SquareID: "+SquareID);
    
clearInterval(a[SquareID]);

__________________
we will stop enhancing the truth in 3, 2, ...

Geändert von SpecOps-12 (08-03-2010 um 10:41 Uhr)
SpecOps-12 ist offline   Mit Zitat antworten
Alt 11-03-2010, 20:05   #5 (permalink)
Hobby x-treme Flasher
 
Benutzerbild von freakgesicht
 
Registriert seit: Oct 2001
Ort: Wien
Beiträge: 547
Zitat:
Zitat von SpecOps-12 Beitrag anzeigen
Man kann doch nur vermuten, dass die Rückgabe vom setInterval zufällig mit dem Schleifen-Iterator übereinstimmt.

this[CallFadeInSquare+iSquare] = setInterval(this, "FadeInSquare", 1000, iSquare);

könnte als unter Umständen genauso gut das hier heißen:

3 = 5;

Macht keinen Sinn.
Hi SpecOps-12,

erstmal danke für deine Antwort - bin leider erst heute dazu gekommen, dir zu antworten. Das Wichtigste: dein Code funktioniert so - super!

Nur ganz verstehe ich die Begründung nicht, wieso meine Version nicht funktioniert. Ich gebe dem setInterval eine (meiner Ansicht nach) eindeutige ID, denn iSquare kann doch nur Werte zwischen 1 und dem While-Wert sein und sollte einfach immer +1 hochgezählt werden.
In der Funktion, die dann aufgerufen wird (die auch den jeweiligen iSquare-Wert als Parameter erhält), wird dann das setInterval wieder gecleared.

Vielleicht könntest du mir das noch kurz erklären - vielen Dank

Greetz
__________________
Skalu • Digital • Studios
freakgesicht ist offline   Mit Zitat antworten
Alt 11-03-2010, 23:07   #6 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.644
Du kannst dir die Rückgabe einer Funktion merken, aber sie nicht beeinflussen.

Du kannst nicht sagen:

1 = setInterval(meinScope, meinListener, meineZeit);

sondern nur (Das ist jetzt as2, aber es verdeutlicht es):

var bla:Number = setInterval(meinScope, meinListener, meineZeit);
trace(bla); // Ausgabe = vorher nicht bekannte Ganzzahl;
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
animation läuft trotz stop befehl weiter abraxas323 Flash Einsteiger 20 05-06-2009 16:08
Sound läuft immer weiter und weiter... finja Sound 2 20-02-2007 10:27
onEnterFrame läuft trotz stop() weiter sterlu Flash Einsteiger 9 15-05-2006 19:29
Ton läuft weiter trotz Anhaltens! omarrodriguez Flash Einsteiger 18 26-04-2006 08:40
Movie läuft trotz stop weiter! Torpedo Flash 4 und Flash 5 8 22-11-2002 15:40


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele