Maus / MC - hitTest

Sebastian Wramba

Erfahrenes Mitglied
Moin,

wie kann ich mit hitTest überprüfen ob die Maus über dem MC liegt? Mit rollOver ist das schlecht, denn dann hängt sich die Animation auf, wenn man während der Ani vom MC runtergeht... also ich würde gerne eine ständige Überprüfung haben, während sich die Animation abspielt... weiß da einer was? (und ja, ich hab auch schon in der hilfe nachgeschaut usw., hab nichts gefunden)

mfg gouraud
 
dem mc gibt man als objektaktion:
PHP:
onClipEvent (enterframe) {
    if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
        //mach was
    }
}
 
Nope geht nicht... also so sieht's aus

Code:
               101      120
1. ------------|||||||||| Animation
2. -----------|.........| MC

und wenn man in Bild 100 (stop-Aktion) über den MC gefahren wird, soll der Film bei Bild 101 weiterspielen, falls der Cursor aber während Bild 101-120 vom MC runtergeht, soll sofort wieder bei 100 gestoppt werden.
 
¡hola!

ist zwar nur hingeschmiert und ich weis nicht ob das ist was du meintest, aber sowas?

*sancho*
 

Anhänge

  • rollovermc.zip
    2,7 KB · Aufrufe: 21
Zuletzt bearbeitet:
das problem ist das er immer (jeden frame) prüft ob die maus über dem mc ist, und falls ja spielt er bei 101.
da er die abfrage jeden frame geprüft wird, spielt er dann auch jeden frame wieder neu ab 101. -> sprich nix passiert.
insofern bräuchte man noch ne check-variabel.
PHP:
onClipEvent (load) {
    _root.binichamspielen = false;
}
onClipEvent (enterFrame) {
    if ((this.hitTest(_root._xmouse, _root._ymouse, true)) and (_root.binichamspielen == false)) {
        gotoandplay(101);
        _root.binichamspielen = true;
    }
}
onClipEvent (enterFrame) {
    _root.temp = this.hitTest(_root._xmouse, _root._ymouse, true);
    if (_root.temp == false) {
        gotoandstop(100);
        _root.binichamspielen = false;
    }
}


das geht sicherlich auch eleganter, aber funktionieren müsste es.
 
nope das geht leider auch nicht

PHP:
onClipEvent (load) {
    _root.checkplay = false;
}
onClipEvent (enterFrame) {
    if ((this.hitTest(_root._xmouse, _root._ymouse, true)) and (_root.checkplay == false)) {
        gotoAndPlay(101);
        _root.checkplay = true;
    }
}
onClipEvent (enterFrame) {
    _root.temp = this.hitTest(_root._xmouse, _root._ymouse, true);
    if (_root.temp == false) {
        gotoAndStop(100);
        _root.checkplay = false;
    }
}

...so sieht's aus


und so hab ich mir das auch noch gedacht:

PHP:
if((this.hitTest(_root._xmouse, _root._ymouse, true)) && (_root._currentframe == 100))  {
	gotoAndPlay(101);
}

else if ((this.hitTest(_root._xmouse, _root._ymouse, true)) && (_root._currentframe != 100)) {
play();
}

else {
	gotoAndStop(100);
}

aber da sind angeblich syntaxfehler drin...:mad:

ok jetzt nicht mehr, das geht aber trotzdem nicht...
 
was meinst du denn überhaupt mit "denn dann hängt sich die Animation auf, wenn man während der Ani vom MC runtergeht"? soll das heissen das die animation an der stelle bleibt an der sie gerade steht, oder das sie wieder auf den anfangsframe springt?

*sancho*
 
Animation ---------> stop();


ich hab mc.onRollOver und mc.onRollOut... wenn man während der animation von dem mc runtergeht, spielt die animation bis zum ende und bleibt stehen, weil das onRollOut ja gar nicht mehr überprüft wird.

und dein filmchen geht auch nicht, weil ich play(); nicht verwenden kann, weil ich das ganze noch für einen anderen mc brauche, der ein paar keyframes weiter ist, also bin ich auf gotoAndPlay angewiesen...
 
bei mir ging mein skript. ich hab das ganze mal in ne fla gepackt.
oder überseh ich hier gerade was?
 

Anhänge

  • 101.zip
    3 KB · Aufrufe: 17
Zuletzt bearbeitet:
ich hab mc.onRollOver und mc.onRollOut... wenn man während der animation von dem mc runtergeht, spielt die animation bis zum ende und bleibt stehen, weil das onRollOut ja gar nicht mehr überprüft wird.
?

Der EventHandler feuert immer, wenn das entsprechende Ereignis eintritt, da kannst du sagen was du willst.

Du brauchst in die entsprechend zugeordnete Funktion von onRollOut des MCs ja nur mal an ein
PHP:
trace("Hurra, ich wurde ausgeführt");
zu setzen und schon siehst du im Ausgabefenster, ob der Funktionskörper durchlaufen wurde oder nicht.

Warum ein RollOut-Event allerdings nicht eintreten sollte, ist in meinen Augen äußerst fraglich - behindert wird die Aktion jedenfalls keinerlei...

Denke, dass in deinem Fall die *.fla das Lösen wesentlich beschleunigen könnte, irgendwie fehlt (vielleicht nicht nur?) mir die Phantasie hierfür. :)

Geist
 

Neue Beiträge

Zurück