Movieclip soll nur beim ersten RollOver spielen!

iToby

Grünschnabel
Hi!
Ich bin ein relativer Neuling im Flash-Bereich und übe zur Zeit an simplen Enterflashes. Dabei habe ich bei meinem aktuellen Beispiel ein Problem :(
Link zur .swf Datei!

Das Problem ist folgendes... Bei RollOver der Tür spielt der Movieclip via gotoAndPlay ab dem 2. Bild ab, im 17. (Und letzten Bild des Movieclips) ist dann widerum ein "stop();" damit der Film stoppt. Verlässt man nun mit der Maus die Tür bleibt auch alles stehen.

Wenn ich jetzt allerdings mit der Maus über die stehengebliebene Tür fahre, spielt der Movieclip wieder komplett von vorne ab. Ich möchte allerdings, dass die Tür offen bleibt wie sie vorher ist, und keine Ahnung wie ich das anstellen soll :( Ich habe schon Sachen mit "OnRollOver = null;" angestellt, die ich aus anderen Foren zusammengegooglet hatte, das hat aber alles irgendwie nicht so geklappt wie es sollte.

Jemand eine Idee? ^^
 
Vielleicht so:
HTML:
this.onEnterFrame = function() {
 // ... Türen öffnen
 delete this.onEnterFrame;
}
 
Zuletzt bearbeitet:
Hi,

nur so als Lerneffekt. _voodoo hat schon die optimale Lösung gepostet.

Flash soll ja folgenden Zustand (Position deiner Türe) prüfen:

a) Ist die Türe zu?
b) Ist die Türe offen?

Dazu bietet sich eine Variable an, die den Wert wahr (stimmt) oder nicht wahr (stimmt nicht) annimmt. Dies ist eine sog. boolean Variable. Jetzt gibst du einfach einer solchen Variablen einen Standarwert mit, also wahr (true) oder nicht wahr (false).
Die Türe ist ja am Anfang zu - also

tuere_geschlossen = true;

Somit müßte dann deine if-Abfrage wie folgt aussehen.
PHP:
if(tuere_geschlossen = true){
      //dann soll Flash sie bitte aufmachen
      deinMC.gotoAndPlay(2);
      
      // jetzt muss du natürlich den neuen Zustand der Türe anpassen
      tuere_geschlossen = false;

     //wenn die Türe bereits schon offen ist (entspricht "tuere_geschlossen = false;)  - dann mach gar nichts

else{
      stop();
}
 
Hi, danke für die zügigen Antworten ;)

ich hab die erste Variante, also die von _voodoo, mal nachgebaut. Mein Code sieht dabei aus:

PHP:
on(rollOver) {
this.onEnterFrame = function() {
		gotoAndPlay("2");
		delete this.onEnterFrame;
	}
}

Da passiert allerdings genau das Selbe wie auch vorher - Beim nächsten rollOver öffnet sich der Movieclip erneut. Was genau habe ich falsch gemacht? :S

Auch die andere Version (Übrigens vielen Dank für die riesige Erklärung :D) habe ich nach meinem möglichen Wissen ausprobiert. Das sieht dann so aus (Die if Abfrage dürfte ja nicht so ohne weiteres funktionieren? ^^")
Dabei habe ich mir gedacht, dass das "tuere_geschlossen = true" ja am Anfang des Filmes schon geladen sein muss, und es daher mit einem generellen onLoad versehen. Der Code ist dann widerum hier:

PHP:
onClipEvent (load) {
		tuere_geschlossen = true ;
}


on(rollOver) {
	if(tuere_geschlossen = true)
	{
	this.gotoAndPlay(2);       
    tuere_geschlossen = false; 
	}
else{ 
      stop(); 
}
}

Ich hoffe ich stelle mich nicht zu blöd an, ich hab echt alles versucht .-.
Jedenfalls passiert bei dem zweiten Code fast das gleiche, bei erneutem MouseOver spielt der Movieclip wieder komplett ab.

Gruss Toby

€: Ich bin übrigens kurz davor ein Buch zum Thema AS3 zu kaufen, um endlich selber auf solche (für euch wahrscheinlich banalen) Themen zu kommen :p
 
Zuletzt bearbeitet:
@iTobi

du, die Freaks schlafen wahrscheinlich schon, ich bin auch keiner:)

Ne, also die Variable tuerre_geschlossen sollte nicht im MoviClip selbst auftauchen, sondern z.B. auf der Zeitleiste (_root) sein (1. Bild), damit sie auch deine Änderung annehmen kann.

Jetzt für deinen Fall ist doch die eleganteste Lösung, dass du sobald Bild 17 erreicht wurde, einfach den MovieClip deaktivierst - sprich .enable = false; setzt.
enable ist eine "Systemvariable/Methode" von Flash, die bereits schon besteht und nicht generiert werden muss. Also jeder MovieClip bekommt diese beim Erzeugen schon mit.

so müßte es aussehen bei Bild 17:
PHP:
meinMovieclip.enabled = false;
 
Super super super :) Endlich klappt es Vielen vielen Dank!!

Auch nochmal danke für die hilfreichen Erklärungen bzgl Variablen, wenn ich das Ding fertig hab werde ich dann auch nochmal die if-Version angucken da das ja offensichtlich geläufiger ist :D

Gute Nacht und nochmals herzlichen Dank ;)
 
Hi,

gerne - freut mich, dass es geklappt hat.
Es gibt jedoch sicher bessere und elegantere Lösungen, aber mir ist es jetzt leider auch zu spät.

Viele Grüße und gute Nacht.
 
AS ist auf jeden Fall die eleganteste Lösung.

Spontan, besonders wenn´s schnell gehen soll und man sich nicht lange nach Scripts umsehen will, wäre mir noch die Variante eingefallen, das letzte Bild des MC (also die offene Tür) als eigenes Symbol in Bild 18 zu packen, und die Animation erst dort zu stoppen.

^^
 

Neue Beiträge

Zurück