Fortlaufendes gotoandstop für Spiel

a*new*found*flo

Erfahrenes Mitglied
Hallo!

Leider habe ich nirgends die Antowrt auf folgende Frage gefunden, daher stelle ich sie jetzt hier:

Ich möchte ein kleines Spiel programmieren, bei dem man kleine Kreuzchen setzten muss.
Treffen die Kreuzchen auf ein vordefiniertes Feld so werden Punkte vergeben. Pro richtigem Feld werden 10 Punkte dazu addiert.
Setzt man ein Kreuzchen auf einen Punkt wo kein Feld vordefiniert wurde, dann werden einem Lebenspunkte abgezogen.
Die Lebenspunkte sind ein eigener Movieclip in dem ein Balken über 40 Frames von x=100 auf x = 0 gezogen wird. Mit jedem falschen klick möchte ich nun um 5 Frames in diesem Movieclip ("leben") weiterspringen.
Leider bekomme ich das nicht auf die Reihe.
Mein Code sieht momentan so aus:

PHP:
this.onEnterFrame = function() {
	var test = 0;
	var punkte = 0;
	var zaehler = 0;
	// im Movieclip Leben die Punkte schreiben
	leben.punktenr.text = punkte;
	
	// Bei Release auf dem Hauptmovieclip der ein Objekt enthält solls nun losgehen.
	zeitungen.onRelease = function() {
	// Maximal 8 mal darf danebengeklickt werden. Dann ist Game Over
if(zaehler < 8)
	{
// Kreuz bekommt koordinaten und wird sichtbar
	ex._x = _xmouse;
	ex._y = _ymouse;
	ex._alpha = 100;
	
	
		zaehler++;
// Wenn danebengeklickt im Movieclip weiterspringen, damit der Balken kleiner wird
		var springe = zaehler * 5;
		
		if(ex.hitTest(fehler1) == false)
		{
			leben.gotoAndStop(springe);

		}
	}
	else 
	{ trace("you lost");
	}}
	loop();
	
}

Weiters habe ich noch die Frage, wie ich das Kreuzchen vervielfälltigen kann und von jedem einzelnen die Position bestimme.

Danke schon jetzt, mfg Flo
 
Hallo,


probier den "leben"-MovieClip in der onRelease-Funktion mal so zu referenzieren:
Code:
this._parent.leben

Ausserdem würd ich bleibende Variablen, wie z.B. "punkte" ausserhalb der onEnterFrame-Schlaufe definieren, weil sie so nämlich erstens lokal sind und zweitens bei jedem Loop auf null gesetzt werden.

MovieClips zu Laufzeit vervielfältigen kannst du, indem du den MovieClip für AS exportierst und mit attachMovie auf die Bühne holst, oder indem du ihn mit duplicateMovieClip kopierst.


gruss
 
Super, danke, dass hilft mir schonmal sehr weiter.
Das Problem ist nur, dass ich die Variablen nicht bei jedem Loop wieder auf Null haben will, sondern, dass sie den neuen Wert behalten sollen. (Damit die Punkte und das Leben fortlaufen)
 
Hallo,


dann musst du sie, wie oben erklärt, ausserhalb der onEnterFrame-Schlaufe definieren:


Code:
var test = 0;
var punkte = 0;
var zaehler = 0;

this.onEnterFrame = function() {
		//usw
}
Zwei kleiner Tipps:

1.
Wenn du in einer onRelease-Funktion Variablen ohne Präfix (this, _root etc.) referenzierst, wird in der Mehrheit der Fälle von der Zeitleiste des MovieClip ausgegangen, auf dem die onRelease-Funktion ausgeführt wird. Wenn du nun also auf der Hauptzeitleiste die Variable "zaehler" definierst, die onRelease-Funktion aber auf dem "zeitungen"-MovieClip ausgeführt wird, ist die Variable "zaehler" dort nicht zwingend verfügbar! Mit this._parent fährst du auf der sicheren Schiene.


2.
Auch die onRelease-Funktion musst du nicht onEnterFrame definieren ;).
gruss
 
Zurück