mc spielt nicht ab, mc springt!

W3sk3R

Grünschnabel
Einen schönen guten Tag!
Ich habe folgendes Problem:

Ich habe im ersten Keyframe einen String der mir eine Zahl ausgibt. Je nach Zahl soll der mc mc_sec an einer bestimmten Stelle abgespielt werden. Geht auch soweit, bis auf eine kleine Tatsache: MC wird nicht abgespielt! Es sieht aus als würde er immer an die bestimmte Stelle springen und nichts mehr machen (wie gotoAndStop(x))

Da ich aber selber der totale AS-Anfänger bin, bin ich mir einer Tatsache sicher: Ich habe Mist gebaut / geschrieben.

Hier der Auszug des Codes der mir Kopfschmerzen machen:
Code:
if (test1 == 0) {mc_sec1.gotoAndPlay(1)}
if (test1 == 9) {mc_sec1.gotoAndPlay(8)}
if (test1 == 8) {mc_sec1.gotoAndPlay(15)}
if (test1 == 7) {mc_sec1.gotoAndPlay(22)}
if (test1 == 6) {mc_sec1.gotoAndPlay(29)}
if (test1 == 5) {mc_sec1.gotoAndPlay(36)}
if (test1 == 4) {mc_sec1.gotoAndPlay(43)}
if (test1 == 3) {mc_sec1.gotoAndPlay(50)}
if (test1 == 2) {mc_sec1.gotoAndPlay(57)}
if (test1 == 1) {mc_sec1.gotoAndPlay(64)}

hoffe mir kann jemand helfen...
 
Hallo,

dein Script ist, soweit ich das beurteilen kann, völlig in Ordnung, der Fehler muss also sonst wo liegen. Poste doch mal deine *.fla.

Tipp: Ich würd mir angewöhnen, bei der Überprüfung einer Variable auf verschiedene Fälle else if bzw switch-Schlaufen zu verwenden, für den Fall, dass die Variable mal zwei verschiedenen Bedingungen erfüllt.

gruss
 
Zuletzt bearbeitet:
Hi,

wie oft wird denn der von Dir gepostete Codeausschnitt ausgeführt? Liegt der z.B. in einer onEnterFrame-Methode, oder in einer Zeitleiste mit mehr als einem Frame, springst Du u.U. immer wieder an den jeweiligen Frame.

Ein anderer Schuss ins Blaue: Liegen vielleicht auf der Zeitleiste von "mc_sec1" stop-Aktionen in den Schlüsselbildern?

Gruß
.
 
gut, ich lade die fla hoch...
ist noch in einer sehr frühen anfangsphase....;)
 

Anhänge

  • countdown.zip
    8,4 KB · Aufrufe: 19
Hat schon jemand das Problem gefunden?
Ich kann mir einfach nicht weiterhelfen.... bzw. ich versteh es einfach nicht!
 
Hi,

das Problem ist genau das, was ich vorher schon vermutet habe: Der von Dir gepostete Codeblock mit den gotoAndPlay's liegt in Frame 1 - und in Frame 2 steht:
Code:
gotoAndPlay(1);
Also wird Dein Code immer wieder aufs neue ausgeführt und der MovieClip damit an dem entsprechenden Frame festgehalten. ;)

Gruß
.
 
oh!
1000 mal sorry!
Das habe ich gestern auch noch gesehen.
Hab dann den Code von einen Tutorial kopiert und umgeschrieben, damit es in der ersten Szene nur noch einen Frame gibt.
Habe das gleiche Problem wieder! Aus Spass habe ich noch einen anderen MC drauf gemacht, dieser wird auch abgespielt!

Was mache ich falsch? bzw. was muss ich machen, damit es so läuft wie ich es will?
Schon mal vielen lieben Dank für die Hilfe!
 

Anhänge

  • wm-countdown.zip
    46,4 KB · Aufrufe: 15
Hi,

das ist genau das gleiche: Durch diese Zeilen:
Code:
onClipEvent (enterFrame) {
	_root.countd();
}
wird die Funktion "countd" ebenfalls periodisch mit der Framerate aufgerufen.

Du musst dafür sorgen, dass die gotoAndPlay-Aktionen nur einmal pro Sekunde aufgerufen werden - speichere dafür die aktuelle Sekundenzahl in einer Variable und rufe diese Aktionen nur auf, wenn sich der momentane Sekundenwert von dem gespeicherten unterscheidet.

Gruß
.
 
Ok!
Vielen Dank für deine Hilfe!

Ich weiß ich geh dir auf die Nerven, aber kannst du mir noch bitte sagen/schreiben was ich jetzt umändern muss?
Weil ich bin wohl DER AS-Anfänger un weiß schon nichtmal mehr wo oben und unten ist....
 
Hi,

der entsprechende Codeblock könnte so ausehen:
Code:
	csec = sek;
	if (lsec == undefined) lsec = csec;
	if (lsec != csec) {
		lsec = csec;
		if (csec == 0) {
			mc_sec1.gotoAndPlay(49);
		}
		if (csec == 9) {
			mc_sec1.gotoAndPlay(55);
		}
		if (csec == 8) {
			mc_sec1.gotoAndPlay(1);
		}
		if (csec == 7) {
			mc_sec1.gotoAndPlay(7);
		}
		if (csec == 6) {
			mc_sec1.gotoAndPlay(13);
		}
		if (csec == 5) {
			mc_sec1.gotoAndPlay(19);
		}
		if (csec == 4) {
			mc_sec1.gotoAndPlay(25);
		}
		if (csec == 3) {
			mc_sec1.gotoAndPlay(31);
		}
		if (csec == 2) {
			mc_sec1.gotoAndPlay(37);
		}
		if (test1 == 1) {
			mc_sec1.gotoAndPlay(43);
		}
	}
Da die Datei noch etliche andere Fehler enthält, funktioniert die Anzeige nunr mit dieser Änderung immer noch nicht, aber das Prinzip sollte klar sein: Nur wenn sich die zuletzt gespeicherte Sekunde (lsec) von der aktuellen (csec) unterscheidet, wird überhaupt in den Block gesprungen, der den Clip steuert - und das ist eben genau einmal pro Sekunde der Fall. Dann wird auch "lsec" dem aktuelle Sekundenwert angepasst, damit eine weitere Sekunde nichts passiert. ;)

Gruß
.
 

Neue Beiträge

Zurück