Anzeige

Drag mit nachgleiten

Drag mit nachgleiten | PSD-Tutorials.de

Erstellt von ernstl, 01.05.2010.

  1. ernstl

    ernstl Aktives Mitglied

    Dabei seit:
    29.05.2008
    Beiträge:
    568
    Geschlecht:
    männlich
    Ort:
    im Pott
    Drag mit nachgleiten
    Hallo,

    ich möchte Euch fragen, ob jemand eine Adresse kennt, auf der ich eine Flashdatei downloaden oder den AS gezeigt bekomme, das mir ermöglicht ein Objekt über den Screen zu ziehen und beim loslassen nach gleitet.

    Hab´s schon selbst versucht umzusetzen -bekomme es aber einfach nicht hin :(
     
    #1      
  2. h_seldon

    h_seldon Aktives Mitglied

    Dabei seit:
    13.09.2005
    Beiträge:
    338
    Geschlecht:
    männlich
    Ort:
    Nähe München
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    Während des Ziehens errechnet man aus der zurück gelegten Strecke in bestimmten zeitlichen Abständen (z.B. enterFrame) die Geschwindigkeit. Nach dem Loslassen bewegt man das Objekt mit dieser Geschwindigkeit (oder einem Bruchteil derselben) weiter und verlangsamt das Tempo bis zum Stillstand (Reibung). Z.B. so was (mc ziehbare Instanz, Bildskript):

    PHP:
    1. var aPos:Array;
    2. var aTempo:Array = [];
    3. var nFaktor:Number = 0.5;
    4. var nReibung:Number = 0.95;
    5. mc.onPress = ziehen;
    6. mc.onRelease = mc.onReleaseOutside = bewegen;
    7. function ziehen() {
    8.     this.startDrag();
    9.     aPos = [this._x, this._y]; 
    10.     this.onEnterFrame = function() {
    11.         aPos = [this._x, this._y];
    12.     };
    13. }
    14. function bewegen() {
    15.     this.stopDrag();
    16.     aTempo[0] = (this._x-aPos[0])*nFaktor;
    17.     aTempo[1] = (this._y-aPos[1])*nFaktor;
    18.     this.onEnterFrame = function(){
    19.         this._x += aTempo[0];
    20.         this._y += aTempo[1];
    21.         aTempo[0] *= nReibung;
    22.         aTempo[1] *= nReibung;     
    23.     }
    24. }
    Viel Spass
     
    #2      
  3. ernstl

    ernstl Aktives Mitglied

    Dabei seit:
    29.05.2008
    Beiträge:
    568
    Geschlecht:
    männlich
    Ort:
    im Pott
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    @h_seldon: Gute Erklärung und vielen Dank für den AS.Code.

    Nachdem ich deine Erklärung gelesen habe, weiß ich auch was ich verkehrt gemacht habe. Ich habe nicht daran gedacht, dass ich die Geschwindigkeit auslesen muss. Hast mir sehr geholfen -danke :)
     
    #3      
  4. imuurmwrw

    imuurmwrw Noch nicht viel geschrieben

    Dabei seit:
    06.03.2010
    Beiträge:
    4
    Geschlecht:
    männlich
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    Hallo ernstl,

    könntest du deine Lösung bitte posten. Ich habe das selbe Problem, komme aber nicht wirklich weiter mit dem Script von h_seldon.
     
    #4      
  5. ssandner

    ssandner Nicht mehr Newbie

    Dabei seit:
    21.02.2006
    Beiträge:
    410
    Geschlecht:
    männlich
    Ort:
    Hermannsburg
    Software:
    CS4 Production Premium/CS6 Production Premium
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    Womit kommst du denn nicht klar? das script von h_seldon funktioniert einwandfrei. Einfach anstelle von "mc" den Instanznamen deines movieclips einfügen. Funzt sofort bei mir.
     
    #5      
  6. imuurmwrw

    imuurmwrw Noch nicht viel geschrieben

    Dabei seit:
    06.03.2010
    Beiträge:
    4
    Geschlecht:
    männlich
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    genau das habe ich getan und es läuft nicht. Es wird auch kein Fehler angezeigt da ich noch mit Flash MX arbeite.
     
    #6      
  7. imuurmwrw

    imuurmwrw Noch nicht viel geschrieben

    Dabei seit:
    06.03.2010
    Beiträge:
    4
    Geschlecht:
    männlich
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    PS:
    Konkret das Drag & Drop funktioniert, nur nicht das nachgleiten. Ich hab natürlich auch schon versucht das Script umzuschreiben aber leider...:(

    Seltsam auch das ein trace von aTempo[0] undefined bringt.

    Wäre für Hilfe dankbar da ich schon seit Wochen nach einer Lösung suche....
     
    Zuletzt bearbeitet: 13.07.2010
    #7      
  8. ssandner

    ssandner Nicht mehr Newbie

    Dabei seit:
    21.02.2006
    Beiträge:
    410
    Geschlecht:
    männlich
    Ort:
    Hermannsburg
    Software:
    CS4 Production Premium/CS6 Production Premium
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    Wie gesagt, dass script funktioniert einwandfrei, kann man eins zu eins übernehmen, nur den Instanznamen anpassen. Für weitere Fehlerhilfe müsstest du dein script mal hier posten.

    By the way, falls jemand interessiert ist, in AS3 sieht die Geschichte dann so aus:

    Code (Text):
    1.  
    2. var aPos:Array=[this.movieclip_mc.x,this.movieclip_mc.y];;
    3. var aTempo:Array=[0,0];
    4. var nFaktor:Number=0.2;
    5. var nReibung:Number=0.90;
    6.  
    7.  
    8. stage.addEventListener(Event.ENTER_FRAME, display);
    9. this.movieclip_mc.addEventListener(MouseEvent.MOUSE_DOWN, ziehen);
    10. this.movieclip_mc.addEventListener(MouseEvent.MOUSE_UP, bewegen);
    11.  
    12. function display(event:Event)
    13. {
    14.     aPos=[this.movieclip_mc.x,this.movieclip_mc.y];
    15.    
    16.     aTempo[0]*=nReibung;
    17.     aTempo[1]*=nReibung;
    18.     this.movieclip_mc.x+=aTempo[0];
    19.     this.movieclip_mc.y+=aTempo[1];
    20. }
    21.  
    22.  
    23. function ziehen(event:MouseEvent)
    24. {
    25.     this.movieclip_mc.startDrag();
    26.     aPos=[this.movieclip_mc.x,this.movieclip_mc.y];
    27.    
    28. }
    29. function bewegen(event:MouseEvent)
    30. {
    31.     this.movieclip_mc.stopDrag();
    32.     aTempo[0] = (this.movieclip_mc.x-aPos[0])*nFaktor;
    33.     aTempo[1] = (this.movieclip_mc.y-aPos[1])*nFaktor;
    34.     this.movieclip_mc.x += aTempo[0];
    35.     this.movieclip_mc.y += aTempo[1];
    36.    
    37. }
    38.  
     
    #8      
  9. ernstl

    ernstl Aktives Mitglied

    Dabei seit:
    29.05.2008
    Beiträge:
    568
    Geschlecht:
    männlich
    Ort:
    im Pott
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    @ssandner: Sehr schön, dass Du diesen Thread durch AS3 erweiters. Danke an dieser Stelle.

    @imuurmwrw: Also an Flash MX liegt es nicht, da der Code AS2 ist. Daher frage ich mich, ob Du den Code vielleicht an der verkehrten Stelle platziert hast. Dieser gehört in den Frame, in dem auch das Objekt liegt, das man ziehen kann. Nicht auf das Objekt selbst.

    Wenn Du gar nicht weiter wissen solltest, dann poste doch mal die Fla und wir schauen mal, ob man einen möglichen Fehler finden kann.
     
    #9      
  10. imuurmwrw

    imuurmwrw Noch nicht viel geschrieben

    Dabei seit:
    06.03.2010
    Beiträge:
    4
    Geschlecht:
    männlich
    Drag mit nachgleiten
    AW: Drag mit nachgleiten

    Erst einmal Danke an ssandner und ernstl für euer schnelles Feedback!

    @ernstl: Ja Script liegt auf eigener Ebene in selbem Frame und spricht Objekt mc an. Wie gesagt drag drop funktioniert, nur nicht das nachgleiten. Script dabei unverändert.

    Ich habe jetzt aber anhand der verwendeten Befehle von ssandners Script bei google eine Site gefunden mit einem Script dass auch bei meinem älterem Flash MX funktioniert. Für alle die es interessiert hier die URL:

    [Flash 8] mc weich verschieben - Flash 8 - Flashbattle.de - Flashforum / Webdesign Community & Developer`s Page
     
    #10      
x
×
×