| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
| Mouse-Events stoppen
Hallo liebes Forum, bei meinem Schießbuden-Spiel gibt es eine Uhr mit einem animierten Pendel. Trifft man das Pendel, so bekommt man einen Zeitbonus. Um es etwas schwieriger zu machen, befinden sich hinter dem Pendel Plüschtiere, die man nicht treffen sollte. Ich haben ein Fadenkreuz, dessen Mitte ich als HitTest-Koordinate wähle. Aufruf bei Pendel und Plüschtier erfolgt so: Code: function onMouseDown() {
point = _root.mc_fadenkreuz.getGlobalLoc();
if (this.hitTest(point.x, point.y, true)) {
this.gotoAndPlay("getroffen");
}
} Gibt es eine Möglichkeit, die Weitergabe des Events zu stoppen? Es könnt u.U. auch helfen, festzustellen, ob sich vor einem Objekt ein anderes befindet. Das müsset aber auf die Form rücksicht nehmen und nicht den Begrenzungsrahmen zugrunde legen. Hat jemand eine Idee? |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
|
events werden in AS2 nicht weiter gegeben: _root.mc_bär_dahinter.onMouseDown = function() {.. _root.mc_pendel.onMouseDown = function() {.. wenn mc_pendel vor mc_bär_dahinter steht, dann bekommt der bär kein event mehr ab. du benützt aber garkein maus-event, sondern testets mit hitTest. dann bist du auch selbst dafür verantwortlich, was da passieren soll. Code: _root.mc_fadenkreuz.onMouseUp = function() {
var point = this.getGlobalLoc();
if (mc_pendel.hitTest(point.x, point.y, true)) {
mc_pendel.gotoAndPlay("getroffen");
} else if (mc_bär_dahinter.hitTest(point.x, point.y, true)) {
//
}
}
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (05-03-2009 um 18:02 Uhr) |
| | |
| | #3 (permalink) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
|
Ja stimmt und Nein... Wenn ich allen MC einen "onMouseDown"-Handler gebe und diesen etwas tracen lasse, dann reagieren alle und nicht nur der, auf dem ich die Maus klicke; also wird das Event doch weitergegeben. Aber ansonsten hast Du recht. Ich machen einen HitTest, dieser wird in der Anordnung von oben nach unten abgearbeitet. Als letztes reagiert _root. Ich habe nun eine Variable eingeführt, die beim ersten "hit" auf false geschaltet wird. Eine Abfrage in allen MCs (resp. in der Klasse) verhindert, dass die Anweisung ausgeführt wird, wenn die Variable == false ist. Die Variante lässt sich im Übrigen prima mit einem Delay vereinbaren, das dazu dient, dass man nicht wie mit einem Maschinengewehr schießen kann. Mit dem Umschalten der Variable wird ein Intervall gestartet, das nach 500 Millisekunden die Variable wieder auf true setzt. Zwei Aufgaben und eine Lösung ![]() Danke und Grüße |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| event, mouse, mousedown, pass, stoppen |
| Themen-Optionen | |
| Ansicht | |
| |