Mouse-Over Problem

BlackCoffee

Mitglied
Servus,
ich habe folgendes problem (ich bin noch nicht so lange mit flash befreundet *G*)...

1) Ich habe in einem MC eine Ebene in der mehrere Schatflächen enthalten sind.
2) Genau unter diesen Schaltflächen befindet sich ein MC der eine animierten (bewegungs-tween) weißen Balken hat. Diese wird gestartet wenn mouse-over.

Nun, sind natürlich die Schaltflächen im Weg. Das heißt, der Mouse-over wird erst dann ausgeführt wenn man auf den Balken geht.. wenn man aber auf die Schaltflächen geht ist man ja nicht mehr auf den Balken sondern auf den Schaltflächen. Wie kann ich diese problem umgehen?

Ich lade euch mal das Fla hoch...
Danke schonmal!
 

Anhänge

einfache Sache:
Dein Fehler, du hast 2 Buttons übereinander.
mach aus der weißen Leiste ein MC, dem gibst du einen Namen. Dann legst du auf die Button ein Script, das bei einem Rollover die Leiste abspielen läßt (meineLeiste.gotoAndPlay(...))
 
Danke schonmal für deine Hilfe, dann habe ich aber das Problem das dieses Movie nur dann abläuft wenn ich genau über den Button bin (dort liegt ja die Aktion). Der Balken soll aber auch zwischen den Schaltflächen (also da wo keine Schaltfläche ist) aktiv sein.. Ansonsten muß ich improvisieren...
 
Zuletzt bearbeitet:
Ich bin ja mittlerweile am Verzweifeln, wieso finde ich in meinen Büchern nichts verwendbares über das Auslesen und Verwenden von Mauspositionen *grr*

Ok, nochmal zwecks der Logik - Also soll ich die Mausposition abfragen und wenn sich die Maus über eine definierte Fläche befindet spielt er das MC ab?

:rolleyes: :(
 
Zuletzt bearbeitet:
nein!
Du mußt die Position der Maus in einer onEnterFrame-Funktion abfragen!

zB:
this.onEnterFrame=function(){
x=_xmouse;
y=_ymouse;
if(y = ...){
....
}
}
 
Das nein ist nicht ganz richtig.
Man kann es entweder so wie von manatwork beschrieben lösen:
PHP:
this.onEnterFrame = function() {
	x = _xmouse;
	y = _ymouse;
	if (x > 100 && x < 200) {
		trace("Maus ist im x-Bereich");
	}
	if (y > 100 && y < 200) {
		trace("Maus ist im y-Bereich");
	}
}
Je nach Anforderung müssen die If-Abfragen entsprechend gesetzt werden.
Z.b. so:
PHP:
this.onEnterFrame = function() {
	x = _xmouse;
	y = _ymouse;
	if (x > 100 && x < 200) {
		trace("X ist richtig, aber was ist mit Y ?");
                if (y > 100 && y < 200) {
		               trace("Y ist jetzt auch richtig.");
	        }
	}	
}
Oder man gibt einer Filmsequenz folgende Objektaktion:
PHP:
onClipEvent (enterFrame) {
	if (this.hitTest(_root._xmouse, _root._ymouse, false)) {
                 // jetzt kommt die Aktion die beim "Rollover" ausgeführt werden soll
		 trace("Maus ist über dem Fake-Knopf");
	}
}
Dadurch hat man sozusagen einen Knopf, der allerdings zu keinen Problemen bei Überlagerung führt, d.h. man kann ihn über/unter einen "echten" Knopf legen, bzw mehrere solcher "Filmsequenz-Knöpfe" übereinander.
Die Fläche in der Filmsequenz, kann auch durchsichtig sein, falls man sie nicht sehen soll. Und statt enterFrame kann man auch mouseDown schreiben, dann reagiert er erst auf klick.
 

Anhänge

Aaaaaaaaaah, jetzt verstehe ich erst... Danke, ich habe es zwar noch nicht umgesetzt aber werde ich es heute Nachmittag.. hoffentlich erfolgreich. Danke nochmal ((c:
PS: Als nächste Anschaffung muß ein ActionScript-Buch her.
 
Funktioniert soweit echt prima.. aber statt der Trace-Ausgabe habe ich ihm den Befehl gegeben den MC abzuspielen (einfach nur play).. Das macht er auch, aber wenn ich mit der Maus mich vom MC entferne dann hält er den Movieclip mitten in der Animation an und spielt erst dann weiter wenn ich wieder den MC berühre. Was muß ich anwenden damit er in solch einem Fall wieder an den Anfang des MCs springt?
Zudem soll beim enter frame das mc nur einmal abgespielt werden.

Ja, ich weiß .. ich bin anstregend aber ich bin nurnmal ein Newbie.
Danke nochmal
 
Da enterFrame ja dauernd und mehrfach ausgeführt wird, brauchst du eine Variabel die prüft ob er den MC zum abspielen bringen soll, oder ob das schon geschehen ist.
In der angehängten fla ist das Problem gelöst.
Du musst nur darauf achten das die Pfade zu den Variabeln und den Mcs stimmen.

Falls du _parent nicht kennen solltest:
_parent verweist auf die übergeordnete Zeitleiste.
Also wenn in _root (Hauptzeitleiste) ein mc liegt dann kann man innerhalb des mcs mit:
_parent.irgendwas
das Objekt irgendwas in der Hauptzeitleiste (_root-Ebene) ansprechen.
Bei der Struktur _root.mc1.mc2 könnte man aus mc2 heraus mit: _parent.gotoandplay(2);
die Zeitleiste von mc1 ansprechen und mit
_parent._parent.gotoandplay(2);
die von _root.

Spätestens bei größeren Projekten rentiert es sich relative Pfade zu verwenden, da man dann problemlos ganze Strukturen in andere MCs und auch swfs copy & pasten kann.
 

Anhänge

Zuletzt bearbeitet:
Zurück