Antworten auf deine Fragen:
Neues Thema erstellen

drag and drop um ecken / auf schrägen linien bzw drag and drop events vernbinden?

noob69

Noch nicht viel geschrieben

Hey Ho ihr PSDler,

mir fehlt mal wieder ein Gedankenanstoß.. :D

also folgendes... ich bin grad dabei drag'n'drop bei AS3 zu entdecken und habe nun auch ohne größere probleme einen kreis auf einer linie auf meiner bühne entlang 'gedraggt'....

code bis hierher is recht übersichtlich und eigtl recht selbst erklärend

PHP:
//sprite von circle wird erschaffen
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(80, 80, 20);
//wird der aktuellen ebene hinzugefügt
addChild(circle);

//mouse event werden definiert
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);

//'dragbox' wird definiert
var rectangle:Rectangle=new Rectangle(0,0,400,20);


function mouseDown(event:MouseEvent):void {
    circle.startDrag(false, rectangle);
}

function mouseReleased(event:MouseEvent):void {
    circle.stopDrag();
}
nun habe ich mir übelegt es muss doch auch möglich auf schrägen ,zb im 45° winkel liegende, linien zu draggen (auf der bühne zb von links oben nach rechts unten ) ?

und ich würde gerne wissen ob es möglich ist 2 drag and drop events miteinander zu verbinden... zb wenn ich jetzt einen auf der x-achse an einer linie entlang von x=0 bis x=200 dragge, un dann quasi um die ecke draggen möchte (bei x=200 dann zb y+50). ist dieses möglich in einem 'dragvorgang'?

greetz

noob69
 

noob69

Noch nicht viel geschrieben

AW: drag and drop um ecken / auf schrägen linien bzw drag and drop events vernbinden?

niemand ne idee?

das um die ecke draggen hab ich auch schon wieder verworfen, nur das 'schräge' draggen ist nach wie vor aktuell....

mein code hat sich auch wieder verändert

PHP:
/*dragbox-wert x2 =muss angepasst werden*/

var zielbereich:Number=80;                            //Toleranz-Bereich definieren: Wo Einrasten rund um Ziel_MC erlaubt?
var ausgangsPosX:Number=kreis.x;                    //Ausgangsposition des kreiss für das "Zurückschnappen" der x-Koordinate merken
var ausgangsPosY:Number=kreis.y;                    //Ausgangsposition des kreiss für das "Zurückschnappen" der y-Koordinate merken
//var x1=60,y1=80,x2=400,y2=80;                        //Koordinaten der Dragbox werden definiert
var x1=kreis.x, y1=zielmovie.y, x2=400, y2=zielmovie.height;
var rectangle:Rectangle=new Rectangle(x1,y1,x2,y2);    //Die eigentliche 'Dragbox' wird hier definiert
kreis.buttonMode=true;                                //'Greifhand' wird angezeigt
//////////////////////////////////////////////////////////////////////////////////////////
kreis.addEventListener(MouseEvent.MOUSE_DOWN, ziehen);    // Eventlistener für das Ziehen
kreis.addEventListener(MouseEvent.MOUSE_UP, loslassen);    // Eventlistener für das Loslassen
//////////////////////////////////////////////////////////////////////////////////////////
//Funktion für das Ziehen
function ziehen(event:MouseEvent):void {
    event.target.parent.addChild(event.target);
    kreis.startDrag(true, rectangle); //true = gedraggtes Objekt wird am Mauscoursor zentriert
}
//Funktion für das Loslassen
function loslassen(event:MouseEvent):void {
    kreis.stopDrag();
    //Kreis wird über ZielMC eingerastet, wenn im tolerierbaren Bereich losgelassen
    if (Math.abs(event.target.x-zielmovie.x)<zielbereich&&Math.abs(event.target.y-zielmovie.y)<zielbereich) {
        kreis.x=zielmovie.x+33;
        kreis.y=zielmovie.y+33;
    } else {
        kreis.x=ausgangsPosX;
        kreis.y=ausgangsPosY;
    }
}

der zu draggende MC heißt 'kreis', die dropzone heißt 'zielmovie', ich weiß besonders kreativ jetzt nicht gerade :D


nun würde ich wirklich gerne mal von links oben nach rechts unten draggen, allerdings mit begrenzung an den seiten, also in einer sogenannten dragbox, wie ich es schon oben gemacht habe....

ca so.


ideen? anregungen?
 

noob69

Noch nicht viel geschrieben

AW: drag and drop um ecken / auf schrägen linien bzw drag and drop events vernbinden?

hoho....

und wieder bin ich einen schritt weiter gekommen...

nun kann ich schon einmal von links oben nach rechts unten draggen, samt target drop zone, allerdings kann ich keine schräge /_/ dragbox sonder nur eine gerade [] erstellen.

PHP:
var kreis:Sprite;
var zielbereich:Number=40;//Toleranz-Bereich definieren: Wo Einrasten rund um Ziel_MC erlaubt?
var ausgangsPosX:Number=kreis.x;//Ausgangsposition des kreiss für das "Zurückschnappen" der x-Koordinate merken
var ausgangsPosY:Number=kreis.y;//Ausgangsposition des kreiss für das "Zurückschnappen" der y-Koordinate merken
kreis.buttonMode=true;//'Greifhand' wird angezeigt
var x1=10,y1=10,x2=400,y2=300;                //Koordinaten der Dragbox werden definiert
//var x1=kreis.x, y1=zielmovie.y, x2=400, y2=zielmovie.height;
var rectangle:Rectangle=new Rectangle(x1,y1,x2,y2);    //Die eigentliche 'Dragbox' wird hier definiert
//(var x1=kreis.width * 2, y1=kreis.height * 2, x2=stage.stageWidth - kreis.width * 2, y2=stage.stageHeight - kreis.height * 2;



init();

function init():void {
    drawDraggableSprite();
    drawLineFunc();    
    kreis.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown_draggableSprite);
    stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp_stage);
}
function onMouseDown_draggableSprite(e:MouseEvent):void {
    stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove_stage);
}
function onMouseMove_stage(e:MouseEvent):void {
    kreis.startDrag(true, rectangle);        //lockcenter: boolean = true;
    kreis.x = mouseX;
    kreis.y = lineFunc(mouseX);
    //rectangle.rotation = 45;   //so einfach gehts leider nicht
}



function onMouseUp_stage(e:MouseEvent):void {
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove_stage);
    kreis.stopDrag();
        if (Math.abs(kreis.x-zielmovie.x)<zielbereich&&Math.abs(kreis.y-zielmovie.y)<zielbereich) {
        kreis.x=zielmovie.x+21;
        kreis.y=zielmovie.y+22;
    } else {
        kreis.x=ausgangsPosX;
        kreis.y=ausgangsPosY;
    }
}

function lineFunc(xPos:Number):Number {
    return 0 + 777*Math.sin(0.001*xPos); 
}

function drawDraggableSprite():void {
    this.draggableSprite = kreis
    this.draggableSprite = new Sprite();
    addChild(kreis);
}

function drawLineFunc():void {
    this.graphics.lineStyle(2);    
    this.graphics.moveTo(0, lineFunc(0));
    
    for (var i:int = 0; i < 450; i++) {
        this.graphics.lineTo(i, lineFunc(i));
    }
}

nun meine frage:
ist es möglich dem dragpath eine bestimmte toleranz (zb an beiden seiten 20px dragbarer 'Seitenstreifen') zuzuordnen, bzw eine schräge dragbox zu erstellen?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.621
Beiträge
1.538.378
Mitglieder
67.545
Neuestes Mitglied
helenkitina
Oben