Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-04-2005, 01:29   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 62
Drag & Drop mit HitTest

Hallo Leute,

brauche dringend Hilfe bei ner verzwickten Sache. Folgendes:
Über attachMovie werden mc's auf die Bühne gesetzt. Diese sind per Drag & Drop verschiebbar. Allerdings sollen sie nicht übereinander geschoben werden. Das heisst, sobald der gedragte mc ein anderes berührt, soll es dort liegen bleiben, neben dem mc. Übrigens habe ich absichtlich nicht das "start-" und "stopDrag" verwendet, weil es manchmal buggy ist und der mc an der maus hängenbleibt. Habe folgenden script.
Habe hier folgende bugs:
1. bei zu schnellem ziehen, bleibt mc hängen, weil wohl die schleife nicht schnell genug gecheckt wird.
2. bei mehr als zwei mc's bleiben manche aneinander hängen und können nicht mehr gedraggt werden.

Bin für jede Hilfe dankbar

ActionScript:
  1. on(press){
  2.     startX = this._x - _root._xmouse;
  3.     startY = this._y - _root._ymouse;
  4.     this.onEnterFrame = function() {
  5.         this._x = _root._xmouse+startX;
  6.      this._y = _root._ymouse+startY;
  7.         for (k=0; k<_root.allobjects.length; k++) {
  8.             if (this != _root.hitobjects[k]) {
  9.                 if (this.hitTest(_root.hitobjects[k]) == false){
  10.                     tempx = this._x;
  11.                     tempy = this._y;
  12.                 }else{
  13.                     this._x = tempx;
  14.                     this._y = tempy
  15.                     delete this.onEnterFrame;
  16.                 }
  17.             }
  18.         }
  19.     }
  20. }
  21. on(release){
  22.     delete this.onEnterFrame;
  23. }{
Katzenhaar ist offline   Mit Zitat antworten
Alt 10-04-2005, 07:15   #2 (permalink)
Neuer User
 
Benutzerbild von alexm
 
Registriert seit: Jun 2004
Ort: Wien
Beiträge: 101
hi!

ich vermute mal, dass das hängenbleiben bei zu schnellem ziehen durch folgenden ansatz von dir resultiert:
ActionScript:
  1. startX = this._x - _root._xmouse;
  2.         startY = this._y - _root._ymouse;
  3.         this.onEnterFrame = function() {
  4.                 this._x = _root._xmouse+startX;
  5.                 this._y = _root._ymouse+startY;
wozu die temporären x/y koordinaten. sag doch einfach
ActionScript:
  1. this.onEnterFrame = function() {
  2.                 this._x = _root._xmouse;
  3.                 this._y = _root._ymouse;
somit ist dein movieclip IMMER auf den mauskoordinaten, egal wie schnell du ziehst.

um einen exakteren hittest zu machen, müsstest du wahrscheinlich deine x/y koordinaten zwischen 2 frames vergleichen und dann da dazwischen nicht mit hittest sondern mit koordinaten-bounding-boxes abfragen, da hittest sicher zu langsam ist. ist aber mal nur so ein gedanke von mir.
alexm ist offline   Mit Zitat antworten
Alt 10-04-2005, 10:30   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 62
hi alexm,

danke für Antwort in so frühen Morgenstunden (?)
jo, mit den x/y-Koordinaten geht es auch so, wie Du sagtest. Allerdings bleibt nicht deswegen der mc hängen, wenn man zu schnell zieht, sondern, weil beim zu schnellen Ziehen, die letzten temporären Positionen nicht mehr gespeichert werden....dh. der mc bleibt auf der letzten noch erwischten Pos liegen.
Weiß zwar woran es liegt, habe aber bist jetzt noch keine Lösung gefunden.
Wegen dem anderen bug werde ich mal heute auf dein anraten testen...
Kann es sein, daß die for-schleife, wenn sie mehrere Objekte durchfragen muss, einen ungenauen hittest hervorruft? Weil es dann langsamer wird??

totzdem vielen dank ;-)

lg katzenhaar
Katzenhaar ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele