Wohin mit clearInterval? [Flash MX 2004]
24.03.2005, 10:26 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
******************************
nicht sichtbar für Mitglieder
24.03.2005, 13:18 Re1 Beiträge: 514 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:09 Re2 Beiträge: 6212 Wohnort: BerlinRegistriert: 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 für Mitglieder
24.03.2005, 14:14 Re3 Beiträge: 514 Registriert: Jul 2003 Ups, verschrieben. Sorry
\\\"Sometimes i think Flash is female\\\"
Zitat S. Wolter
24.03.2005, 15:36 Re4 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:55 Re5 Beiträge: 15261 Wohnort: BremenRegistriert: 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
25.03.2005, 08:55 Re6 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
nicht sichtbar für Mitglieder
25.03.2005, 09:40 Re7 Beiträge: 2331 Wohnort: AustriaRegistriert: 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:25 Re8 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:31 Re9 Beiträge: 2331 Wohnort: AustriaRegistriert: 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.
nicht sichtbar für Mitglieder
25.03.2005, 10:57 Re10 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
Themen
Ähnliche Beiträge zum Thema 24.11.2007 - funkinspektor
25.06.2009 - intercorni
02.11.2007 - study
01.12.2008 - Mouchachu
Werbung
Flashhilfe.de
Flash Platform Tipps & Tutorials
Flash Platform
Andere Programmiersprachen
Jobangebote
Diskussionen
Flashhilfe News
30.08.10, 20:33 FlexUnit 4.1 RC1 ist nun verfügbar!
http://www.flexunit.org/?page_id=14 #Flex
30.08.10, 11:02 Alternativa3D 7 will be free for everybody. Coming this September. (via @AlternativaWoLF) #AS #Alternativa3D
27.08.10, 17:02 The first public build of Flex 4.5, aka Hero is out:
http://bit.ly/cIS7TZ Contains new Spark DataGrid, Form, Image, -size-report (@renaun)
27.08.10, 12:19 #Jobs Flash-/Flex Entwickler (m/w)
http://bit.ly/aNdcLP
Regeln & Bedingungen