AS3 - Drag and Drop auf eine Achse (+Bereich) beschränken

stuffjm

Mitglied
Liebe Community,
Ich versuche gerade eine "Drag and Drop" Funktion zu entwickeln, bei der ein Movieclip mit der Maus auf nur einer Achse (der x-Achse bei y=33) und dort nur einem bestimmten Bereich (von 60 bis 700 px) verschiebbar sein soll.

Ich hab des ganze erstmal mit startDrag(); und stopDrag(); probiert und dann zusätzlich in einer Funktion eine if-Anweisung eingebaut, die nach dem Loslassen der Maus, den Movielclip wieder zurück auf die x-Achse bei y = 33, mit den x-Koordinaten der Maus platziert. Und falls sich die x-Koordinaten der Maus außerhalb der Grenzen von 60 und 700 px befinden, dass der Movieclip dann eben entweder bei 60 oder bei 700 platziert wird. Das ganze soll so ähnlich wie ein Schieberegler funktionieren, leider klappt es aber nicht.

Anzumerken ist auch noch, dass ich mehrere solcher Movieclips über ein Array erzeuge.

Hier mal der betroffene Code-Ausschnitt:

Code:
var Greifer1 = new Greifer_mc();
var Greifer2 = new Greifer_mc();
var Greifer3 = new Greifer_mc();
var Greifer4 = new Greifer_mc();

var Greiferzähler:int=0;

var Greifer:Array=new Array(Greifer1,Greifer2,Greifer3,Greifer4);


while (Greiferzähler<=3) {
	Greifer[Greiferzähler].buttonMode=true;

	if (Greiferzähler==0) {
		Greifer[Greiferzähler].x=60;
		Greifer[Greiferzähler].y=33;
	}

	if (Greiferzähler==1) {
		Greifer[Greiferzähler].x=380;
		Greifer[Greiferzähler].y=33;
	}

	if (Greiferzähler==2) {
		Greifer[Greiferzähler].x=60;
		Greifer[Greiferzähler].y=527,5;
		Greifer[Greiferzähler].rotation=180;
	}

	if (Greiferzähler==3) {
		Greifer[Greiferzähler].x=380;
		Greifer[Greiferzähler].y=527,5;
		Greifer[Greiferzähler].rotation=180;
	}


	Greifer[Greiferzähler].addEventListener(MouseEvent.MOUSE_DOWN,initDrag);
	Greifer[Greiferzähler].addEventListener(MouseEvent.MOUSE_UP,endDrag);

	



	addChild(Greifer[Greiferzähler]);
	Greiferzähler++;
}



function GreiferZurückPlatzieren():void {
	if (Greiferzähler==0 && Greiferzähler.y!=33) {
		Greifer[Greiferzähler].y=33;
	}
	if (Greiferzähler==1 && Greiferzähler.y!=33) {
		Greifer[Greiferzähler].y=33;
	}
	if (Greiferzähler==2 && Greiferzähler.y!=527,5) {
		Greifer[Greiferzähler].y=527,5;
	}
	if (Greiferzähler==3 && Greiferzähler.y!=527,5) {
		Greifer[Greiferzähler].y=527,5;
	}
	if (Greiferzähler.x<60) {
		Greiferzähler.x=60;
	}
	if (Greiferzähler.x>700) {
		Greiferzähler.x=700;
	}
}

function initDrag(e:MouseEvent):void {
	
	
	e.target.startDrag();
}

function endDrag(e:MouseEvent):void {
	e.target.stopDrag();
	GreiferZurückPlatzieren(); ///////// Hier soll der Greifer (MovieClip) wieder zurückplatziert werden
}

Der MovieClip (Greifer) befindet sich in der Bibliothek und wird per Export für Actionsscript angesteuert werden.

Danke für eure Hilfe
 
Ok hat sich erledigt, mir waren die entsprechenden Parameter für startDrag nicht bekannt


var rectangle:Rectangle = new Rectangle(60, 40, 640, 1);

function initDrag(e:MouseEvent):void {


e.target.startDrag(true, rectangle);
}
 

Neue Beiträge

Zurück