startDrag() & stopDrag()

Freebaer

Grünschnabel
Ich möchte, 2 Kreise mit der Maus bewegen. Gehe ich über Kreis2, kann ich ihn bewegen. Gehe ich dann mit der Maus über Kreis1 kann ich diesen auch über die Bühne verschieben. Gehe ich dann aber wieder über Kreis2 und will ihn wieder verschieben, bewegt sich nicht Kreis2 sondern Kreis1.

Warum ist das so? Wo ist mein Fehler? :(



Ich möchte einfach nur, beide Kreise, so oft ich will verschieben. Event sollte erst reagieren, wenn ich mit der Maus über dem Kreis bin, der verschoben werden soll. Und beim verlassen, wieder die startDrag() Methode verlieren. Hatte es auch schon mit (switch case) versucht, nur leider ohne Erfolg.

Danke schon mal
 

Anhänge

  • drag_hilfe.zip
    5 KB · Aufrufe: 19
Hi,

Du machst es Dir unnötig kompliziert. folgendes genügt völlig:
PHP:
kreis1.onPress = function() {
	this.startDrag();	
}
kreis1.onRelease = kreis1.onReleaseOutside = function() {
	this.stopDrag();
}

kreis2.onPress = function() {
	this.startDrag();
}
kreis2.onRelease = kreis2.onReleaseOutside = function() {
	this.stopDrag();
}
Grund: MovieClip.onMouseDown reagiert immer, wenn der Mausbutton gedrückt wird, egal ob sich der Cursor über dem MC befindet oder nicht. Zudem macht es keinen Sinn, die Ereignisfunktionen erst bei einem MouseOver zu definieren.

Wenn beim rollOver zusätzlich etwas ausgegeben werden soll, füge diesen Handler einfach auch noch zu:
PHP:
kreis1.onRollOver = function() {
    trace("über Kreis 1");
}
kreis1.onRollOut = function() {
    trace("weg von Kreis 1");
}

Gruß
.
 
Ich danke dir, für die Super schnelle Antwort *freu*. Da hätte ich wahrscheinlich noch ne Woche mit verbringen können.

Mit freundl. Gruß
Freebaer
 
Hatte mich an einer kleinen Erweiterung versucht und bin auf ein Problem gestoßen.

Versuchte, via Checkbox, die Events zu steuern. Wenn der Hacken raus ist, sollen sich die Kreise nicht bewegen lassen. Ist der Hacken drin, soll es wieder möglich sein.

Das klappt ja schon mal. :)

Nehme ich den Hacken wieder raus, haben die Kreise noch immer die Methode als Eigenschaft und lassen sich bewegen.

Gibt es eine Möglichkeit diese zu löschen oder auf False zu setzen?

Wenn ich innerhalb meines Else-Zweig onPress auf stopDrag() setze, geht es auch, aber ist denk mal nicht die optimale Lösung für das Problem.



Eine frage, wäre dann noch für mich offen. Ist onEnterFrame nicht etwas Ressourcen fressend? Weiß gerade nicht wie ich das anders fragen soll ^^



Mit freundlichen Grüßen

Freebaer
 

Anhänge

  • drag_hilfe.zip
    48,6 KB · Aufrufe: 22
Warum, warum nur versuchst Du, alle Ereignishandler beim rollOver auf der Checkbox zu definieren? Ich sehe da überhaupt keinen Sinn drin.

Es genügt doch eine einfache Abfrage, ob das Ding selected ist, bevor Du eine onDrag-Aktion startest:
PHP:
kreis1.onPress = function ()
		{
			if (cb1.selected) this.startDrag ();
		};
kreis1.onRelease = kreis1.onReleaseOutside=function ()
		{
			this.stopDrag ();
		};
kreis2.onPress = function ()
		{
			if (cb1.selected) this.startDrag ();
		};
kreis2.onRelease = kreis2.onReleaseOutside=function ()
		{
			this.stopDrag ();
		};

Zum Thema onEnterFrame: Nicht unbedingt; es kommt drauf an, was Du in dieser onEnterFrame-Methode machst. Man kann problemlos 30 onEnterFrames parallel laufen lassen, ohne Performanceeinbußen festzustellen. Umgekehrt kann ich das System auch schon mit einer einzigen in die Knie zwingen. ;)

Gruß
.
 
Ich wusste es nicht besser :)
Ich werde mich sicher noch bessern.

Danke noch mal, war genau was ich meinte.


mfg
Freebaer
 
Zurück