Flashhilfe.de - Flash Community

Wohin mit clearInterval? [Flash MX 2004]

Forum > Flash Entwicklung > Wohin mit clearInterval?

 


AntwortenRegistrieren Seite1

 24.03.2005, 10:26 
Benutzerbild von Cendri
Beiträge: 27
Registriert: Mar 2005

Wohin mit clearInterval?
Hallo,

also ich hab ein Quiz, was auch funktioniert. Nun will mein Prof, dass das Bild nach Beantwortung der Frage 3 Sek steht und erst dann die neue Frage geladen wird.

Ich hab für das Quiz 4 Movieclips als Buttons, alle haben das selbe AS:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
onClipEvent (mouseDown) {
   if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
      if (_root.richtigeAntwort == 4) {
         this.gotoAndStop("korrekt");
         _root.punktestand = _root.punktestand+5;
      } else {
         this.gotoAndStop("falsch");
      }
   }
}
onClipEvent (mouseUp){
   id_frage = setInterval(_root.erzeugeFrage4, 3000);
}
on(releaseOutside){
   this.gotoAndStop(1);
   _root.n = _root.n + 1;
   if (_root.n == 11) {
      _root.gotoAndStop(33);
   }
   else {
      loadVariablesNum("frage" + _root.n + ".txt", 0);
   }
}

Für jeden Clip habe ich eine Funktion erzeugeFrage+ClipNummer. Die Funktion ist in der Ebene in der auch die MCs sind und sieht so aus:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function erzeugeFrage4(){
   a4.gotoAndStop(1);
   if (a4.hitTest(_root._xmouse, _root._ymouse,true)) {
      _root.n = _root.n + 1;
      if (_root.n == 11) {
         _root.gotoAndStop(35);
      }
      else {
         loadVariablesNum("frage" + _root.n + ".txt", 0);
      }
   }
   a1.clearInterval(id_frage);
   a2.clearInterval(id_frage);
   a3.clearInterval(id_frage);
   a4.clearInterval(id_frage);
}


Das Problem ist, dass das Interval nicht gelöscht wird...

Was mach ich falsch? Über hilfe wär ich echt dankbar...

Gruß
Cendri

Liebe Grüße

Cendri

******************************
 24.03.2005, 13:18Re1
Benutzerbild von Creator
Beiträge: 516
Registriert: Jul 2003

Äh Memont mal. Also oben bei Deinen MCs würde ich ja von Anfang an mal ein on(press){} und ein on(release){} verwenden. Damit sparst Du Dir schon mal die _root.xmouse -.ymouse Abfrage. (diese Befehle gehen nämlich auch bei MCs und nicht nur bei Buttons) Und es reagieren auch nicht alle MC die ganze Zeit auf das mouseup, außer das ist beabsichtigt, aber das kann ich mir irgendwie nicht vorstellen. Aber das ist ja nicht Bestandteil deiner Frage gewesen.

Der intervall kann so nicht gelöscht werden. clearIntervall benötigt ja den Parameter id_frage. Aber den kennt es nicht weil der in den MCs liegt.  clearIntervall bezieht sich nicht auf den MC von dem aus er angelegt wurde. Deswegen gibt es ja die ID.

Das ganze ginge nur wenn du das so schreibst

clearIntervall(a1.id_frage);
clearIntervall(a2.id_frage);
usw.

Ein einfacherer Lösungsansatz ist folgender.

Du legst Dir in der Hauptzeitleiste einen leeren Array an. Meinetwegen myIntervalls.

Dann kommt in dein on(Release) bzw. Deinem jetzigen onClipEvent(mouseUp) folgender teil

ActionScript:
1_parent.myIntervalls.push(setInterval(_root.erzeugeFrage4, 3000));


Damit hinterlegst Du die Intervall ID in dem Array

in diese ominöse andere Funktion kommt dann folgendes Script ans Ende

ActionScript:
1
2
3
for(i in myIntervalls){
clearIntervall(myIntervalls[i]);
}


Funktioniert in jedem Fall da Du jetzt auf die IDs zugreifen kannst.

Grüße

CR

\\\"Sometimes i think Flash is female\\\"

Zitat S. Wolter
\\\"Sometimes i think Flash is female\\\"

Zitat S. Wolter
 24.03.2005, 14:09Re2
Benutzerbild von umlart
Beiträge: 6212
Wohnort: Berlin
Registriert: Nov 2002

änder mal...
ActionScript:
1
2
3
for(i in myIntervalls){
clearInterval(myIntervalls[i]);
}


*Man muß nicht wissen wie es geht,
man muß nur wissen wo es steht.*
*Man muß nicht wissen wie es geht,
man muß nur wissen wo es steht.*

 
nicht sichtbar bei eingeloggten Mitgliedern
 24.03.2005, 14:14Re3
Benutzerbild von Creator
Beiträge: 516
Registriert: Jul 2003

Ups, verschrieben. Sorry

\\\"Sometimes i think Flash is female\\\"

Zitat S. Wolter
 24.03.2005, 15:36Re4
Benutzerbild von Cendri
Beiträge: 27
Registriert: Mar 2005

Themenautor/in

Hallo ich hab das jetzt soweit, dass der erste Quizdurchgang ohne Probleme läuft. Starte ich das Quiz aber ein zweites Mal. Läuft es einfach durch, d.h. die Fragen werden ohne das ein Event passiert einfach angespielt.

Das Script auf den MCs sieht wie folgt aus:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
on(release){
      if (_root.richtigeAntwort == 1) {
         this.gotoAndStop("korrekt");
         _root.punktestand = _root.punktestand+5;
      }
      else {
         this.gotoAndStop("falsch");
      }
   myInterval = setInterval(_root.weiter1,1000);
}
on(releaseOutside){
   this.gotoAndStop(1);
   _root.n = _root.n + 1;
   if (_root.n == 11) {
      _root.gotoAndStop(33);
   }
   else {
      loadVariablesNum("frage" + _root.n + ".txt", 0);
   }
}


Die Funktionen weiter1, weiter2, weiter3 und weiter4 die in einer Ebene der Hauptzeitleiste liegen, sehen so aus:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function weiter1(){
   a1.gotoAndStop(1);
   _root.n = _root.n + 1;
   if (_root.n == 11) {
      _root.gotoAndStop(35);
   }
   else {
      loadVariablesNum("frage" + _root.n + ".txt", 0);
   }
   clearInterval(a1.myInterval);
}

function weiter2(){
   a2.gotoAndStop(1);
   _root.n = _root.n + 1;
   if (_root.n == 11) {
      _root.gotoAndStop(35);
   }
   else {
      loadVariablesNum("frage" + _root.n + ".txt", 0);
   }
   clearInterval(a2.myInterval);
}
function weiter3(){
   a3.gotoAndStop(1);
   _root.n = _root.n + 1;
   if (_root.n == 11) {
      _root.gotoAndStop(35);
   }
   else {
      loadVariablesNum("frage" + _root.n + ".txt", 0);
   }
   clearInterval(a3.myInterval);
}
function weiter4(){
   a4.gotoAndStop(1);
   _root.n = _root.n + 1;
   if (_root.n == 11) {
      _root.gotoAndStop(35);
   }
   else {
      loadVariablesNum("frage" + _root.n + ".txt", 0);
   }
   clearInterval(a4.myInterval);
}

Kann es sein, dass Flash beim 2. Abspielen einfach die Funktionen startet?
Wie unterbinde ich das?

Gruß
Cendri
Liebe Grüße

Cendri

******************************
Geändert von Cendri am 24.03.05 um 16:25 Uhr

 24.03.2005, 16:55Re5
Benutzerbild von H@ilo
Beiträge: 15261
Wohnort: Bremen
Registriert: Jan 2002

Bitte keine Doppelpostings.

Interessant wäre zu wissen, wie du das Quiz neu startest.
Schon mal daran gedacht, alle Variablen zurück zu setzen oder das Movie mit loadMovieNum() neu zu laden?

H@ilo
Freizeitflasher
H@ilo
Freizeitflasher
 
nicht sichtbar bei eingeloggten Mitgliedern
 25.03.2005, 08:55Re6
Benutzerbild von Cendri
Beiträge: 27
Registriert: Mar 2005

Themenautor/in

Hallo H@ilo,

das Quiz ist eine Szene im Flashfilm, der eine komplette Webseite darstellt.
Also kein seperater Film... Neustart erfolgt einfach mit gotoAndStop.

Das Doppelposting war, weil es ja jetzt ein anderes Problem ist, dass mit clearInterval nicht wirklich was zu tun hat.....

Gruß
Cendri
Liebe Grüße

Cendri

******************************
Geändert von Cendri am 25.03.05 um 14:05 Uhr

 25.03.2005, 09:40Re7
Benutzerbild von Nemo
Beiträge: 2331
Wohnort: Austria
Registriert: Jan 2003

<<<
Neustart erfolgt einfach mit gotoAndStop
>>>

Jupp und das ist eben nicht genug. Du musst alle Variablen zurücksetzen:

delete _root.richtigeAntwort;
delete _root.punktestand;

Sonst werden sie beim 2ten mal falsch ausgewertet.

LoadMovieNum wäre aber sicher bequemer, aber auf keinen Fall loadMovie verwenden. Deine _root. Variablen würden dabei nicht überschrieben...

----------------------------
Dimidium facti, qui coepit, habet.
----------------------------
Dimidium facti, qui coepit, habet.
 25.03.2005, 10:25Re8
Benutzerbild von Cendri
Beiträge: 27
Registriert: Mar 2005

Themenautor/in

Hallo ,

hab jetzt im ersten Frame der Szene folgendes AS eingebaut:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
delete punktestand;
delete richtigeAntwort;
delete n;
delete myInterval;
delete weiter1();
delete weiter2();
delete weiter3();
delete weiter4();
punktestand = 0;
n = new Number();
var n = 1;
loadVariables("frage1.txt",this);


Das Problme besteht aber immer noch. Ich hab die fla mal gezipt und unter

http://multimedia.et-inf.fho-emden.de:10089/hhds.zip hochgeladen. Könnt ihr sie euch ja mal angucken. Vielleicht findet ihr ja ne Lösung. Ich bin schon total frustriert.  Das Quiz befindet sich übrigens in der Szene "quiz".

Die swf könnt ihr euch unter http://multimedia.et-inf.fho-emden.de:10089 mal angucken.

Danke schonmal..

Gruß
Cendri

Liebe Grüße

Cendri

******************************
 25.03.2005, 10:31Re9
Benutzerbild von Nemo
Beiträge: 2331
Wohnort: Austria
Registriert: Jan 2003

delete myInterval;

Geht nicht, die korrekte definition lautet:

myInterval = setInterval(function() {
trace("hi");
}, 1000)

clearInterval(myInterval)

----------------------------
Dimidium facti, qui coepit, habet.
----------------------------
Dimidium facti, qui coepit, habet.
 25.03.2005, 10:57Re10
Benutzerbild von Cendri
Beiträge: 27
Registriert: Mar 2005

Themenautor/in

Also , wenn ich die Funktionen direkt in setInterval einfüge, geht gar nichts mehr.

Ich weiß daher nicht wirklich was du meinst....

Gruß
Cendri
Liebe Grüße

Cendri

******************************
Geändert von Cendri am 25.03.05 um 10:58 Uhr

 25.03.2005, 17:59Re11
Benutzerbild von Cendri
Beiträge: 27
Registriert: Mar 2005

Themenautor/in

Hallo,

das Problem liegt wohl doch noch an setInterval. Hab eben mal die Intervallänge geändert und dann mal wieder 2 mal durchgespielt.
Beim 2. Mal springt das Programm im Abstand von setInterval weiter.
Ich weiß echt nicht mehr weiter.
Ich lösche doch setInterval in jedem Funktionsaufruf mit clearInterval und starte es doch nur per on(release).....

Liebe Grüße

Cendri

******************************
 25.03.2005, 18:39Re12
Benutzerbild von Cendri
Beiträge: 27
Registriert: Mar 2005

Themenautor/in

Hallo,

habs jetzt endlich hingekriegt.....

Schöne Ostern !

cendri

Liebe Grüße

Cendri

******************************
 25.03.2005, 18:45Re13
Benutzerbild von H@ilo
Beiträge: 15261
Wohnort: Bremen
Registriert: Jan 2002

Jetzt würden wir aber gern, wissen, was nicht rechtens war...

H@ilo
Freizeitflasher
H@ilo
Freizeitflasher
Geändert von H@ilo am 25.03.05 um 18:45 Uhr

 25.03.2005, 18:48Re14
Benutzerbild von Cendri
Beiträge: 27
Registriert: Mar 2005

Themenautor/in

Also,

so wie Creator es vorgeschlagen hat, funktioniert es einwandfrei.

Ich hatte nur meinen Dickkopf...... Naja, ich hab halt nicht gedacht, dass das Problem immer noch setInterval ist, weil meine Lösung ja im ersten Durchlauf funktionierte.
So, jetzt hab ich deshalb halt den ganzen Karfreitag am Rechner verbracht...

Schön blöd.......

Liebe Grüße

Cendri

******************************
Liebe Grüße

Cendri

******************************
 
Themen
Ähnliche Beiträge zum Thema
Zentrieren bei zoomOut [Flash 7] 18.08.2009 - sir-reilley
 
AntwortenRegistrieren Seite1

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de