Einarmiger Bandit - Action Script

AnnJ

Mitglied
Folgendes Problem:

Ich habe in Flash einen einarmigen Banditen gebaut. Die Maschine soll von allein losgehen sobald der Hebel heruntergedrückt ist(Der Hebel ist ein MC)und soll auch von allein wieder stoppen.
Nun taucht das Problem auf:
Die Maschine geht schon los bevor der Hebel unten ist und sie hört nicht auf.
Ich habe in dem Film eine Ebene mit Aktionen gemacht wo folgendes drinsteht:
tellTarget ("_root.slot1.symbole") {
gotoAndStop (1);
}
tellTarget ("_root.slot2.symbole") {
gotoAndStop (3);
}
tellTarget ("_root.slot3.symbole") {
gotoAndStop (5);
}
stop();
Ich denke das dürfte soweit richtig sein(also es funktioniert auch)

Und in dem MC von dem hebel habe ich folgende Aktion hineingeschrieben:
stop();
_root.play();

drehen1 = true;
drehen2 = true;
drehen3 = true;

tellTarget ("_root.slot1.symbole") {
play ();
}
tellTarget ("_root.slot2.symbole") {
play ();
}
tellTarget ("_root.slot3.symbole") {
play ();

}

Wenn mir da jemand helfen könnte wäre das nicht schlecht.
 
Hallo.
Um diesen Code verstehen zu können braucht man schon eine Ahnung von der Struktur deiner Movieclips und vor allem deren Inhalt - was wird denn gemacht, wenn play(); bei den verschiedenen Movieclips ausgelöst wird? Wofür sind "drehen1"-"drehen3"? Am besten postest du einmal die fla und ich schaue, was sich machen lässt.

Gruß
.
 
Ok ich hab die Flashdatei in einem Zip-Archiv angehangen. Ich hoffe du siehst durch ^^
Ich musste ein paar Dinge löschen sonst wäre die Datei zu groß. Also nicht wundern wenns e aussieht. Hauptsache es funktioniert ^^

Danke
 

Anhänge

  • Slot_neu.zip
    189,3 KB · Aufrufe: 182
Hallo,
in der von dir geposteten fla passiert bei mir nichts - und das ist ja nicht das oben bveschriebene problem deswegen denke ich dass bei der Anpassung der fla für den Upload etwas schief gegeangen ist.

Generell zu deiner Syntax:

Flashhilfe hat gesagt.:
Veraltet seit Flash Player 5. Macromedia empfiehlt die Verwendung der Punktsyntax (.) und der Anweisung with.


on(release) {
tellTarget("_parent.ball") {
gotoAndPlay(2);
}
}

Im folgenden Beispiel wird das gleiche Ergebnis mithilfe der Punktsyntax (.) erzielt:

on(release) {
_parent.ball.gotoAndPlay(2);
}
 
Ja da passiert wirklich nichts :(
Ich musste aber was löschen da die Datei sonst zu groß wäre.

Ok ich fang einfach mal Schritt für Schritt an:
Wie drücke ich aus, dass die MC`s "Symbole" nach einer bestimmten Zeit nacheinander anhalten sollen?

Bitte helf mir :(
 
Zuletzt bearbeitet:
Hallo,
markier den Thread nicht als "Erledigt", wenn es noch offene Fragen gibt...

Ich persönlich würde es so machen: Die 3 Felder sind Scheiben, also kreisrunde Movieclips.
Diese Movieclips lassen wir sich jetzt Drehen. Nehmen wir mal an sie heißen "rad1", "rad2" udn "rad3". Dann wäre der Code auf dem Schlüsselbild, auf dem die Räder sind, so:

Code:
for (i=1; i<4; i++) {
		_root["rad"+i].onEnterFrame = function() {
			this._rotation += 15;
		};
	}


Da die Räder auch stoppen sollen, müsste man irgendwann den onEnterFrame von ihnen einfach Löschen udn sie hören auf, sich zu drehen - so einfach ist das aber nicht, denn dann würden die Räder ja einfach aprupt stoppen und das noch nicht mal garantiert auf einem Symbol. Deswegen muss man da einen bestimmten Puffer einbauen.

Dieser Puffer funktioniert so, dass man ausrechnet, welches die nächste Position von ihnen wäre und sie dann immer langsamer werdend dort hin drehen lässt:

Code:
zahl = 1;
_root.but_hebel.onRelease = function() {
	// Drehung starten
	for (i=1; i<4; i++) {
		_root["rad"+i].onEnterFrame = function() {
			this._rotation += 15;
		};
	}
	_root.irad = setInterval(stopRad, Math.round(7000*Math.random()+700));
};
function stopRad() {
	clearInterval(_root.irad);
	delete (_root["rad"+_root.zahl].onEnterFrame);
	_root["rad"+_root.zahl].ziel = Math.round(((_root["rad"+_root.zahl]._rotation)/45)-3.5)*45;
	if(	_root["rad"+_root.zahl].ziel <= -165) {
			_root["rad"+_root.zahl].ziel = 180;
	}
	_root["rad"+_root.zahl].onEnterFrame = function() {
		if (Math.abs(this.ziel-this._rotation)>0.5) {
			if (this.ziel<this._rotation) {
				this._rotation += 12;
			} else {
				this._rotation += (this.ziel-this._rotation)/10;
			}
		} else {
			delete (this.onEnterFrame);
		}
	};
	if (zahl<4) {
		_root.irad = setInterval(stopRad, Math.round(5000*Math.random()+700));
		zahl++;
	}
}

Ich habe eine Beispieldatei angehängt.

Gruß
.
 

Anhänge

  • Unbenannt-1.fla
    48 KB · Aufrufe: 275
Es ist aber erledigt ich habs nämlich rausgekriegt. Ich hatte nur keine Zeit es hier zu vermerken, dass das Thema erledigt ist.

Aber trotzdem ein herzliches Dankeschön für deine Mühe :)

mfg
 

Neue Beiträge

Zurück