1&1 Webhosting
Flashhilfe.de - Flash Community

Drag&Drop Componenten an falscher Stelle [Flash 10]

Forum > Apache Flex / Adobe AIR > Drag&Drop Componenten an falscher Stelle

 


AntwortenRegistrieren Seite1

 12.05.2009, 10:30 
Beiträge: 71
Wohnort: Berlin
Registriert: Jan 2004

Drag&Drop Componenten an falscher Stelle
Hallo
ich habe ein Problem mit dem DragManager!
Ich habe mit einmal eine Komponente Tile auf die Bühne gezogen, inder sich andere Komponenten befinden, welche später zum Draggen gedacht sind.
Diese bewegbaren Komponenten will ich auf ein Arbeitspanel platzieren können.
Beim Platzieren rutschen die Komponenten aber für nen paar Pixel in eine andere Richtung! Was mache ich da falsch? gibt es Fehler bei der Berechnung der Position? Probiere ja den Offset der auftritt, da der Ankerpunkt oben rechts hängt rauszurechnen!

Ein Zweites Problem wäre noch! Ich will nicht das meine Komponente die ich in der Tile drin habe verschwindet. Sie müsste dupliziert werden, was ich meiner Meinung auch mache
ActionScript:
1child=new UIComponent;


Wie kann man dieses Problem lösen?
Vielen Dank im Vorraus und über Antworten würde ich mich sehr sehr freuen!

So nun noch mein Quellcode:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="0x000000" width="1024" height="768" verticalAlign="middle" horizontalAlign="center">

<mx:Script>
<![CDATA[
import mx.controls.Image
import mx.core.DragSource;
import mx.core.UIComponent
import mx.events.DragEvent
import mx.managers.DragManager
import mx.effects.Resize;

private function doDragEnter(event:DragEvent):void
{
DragManager.acceptDragDrop(UIComponent(event.target));

}
private function doDragDrop(event:DragEvent):void
{

   var child:UIComponent;
   if(event.dragInitiator.parent==dropCanvas){
      child=event.dragInitiator as UIComponent;
   }else{
      child= new UIComponent();
      child=event.dragInitiator as UIComponent;      
      child.addEventListener(MouseEvent.MOUSE_DOWN,doDragStart);

   }   
   event.currentTarget.addChild(child);
   setPosition(child,event)
   CanvasBorder(0x1C5CC7,UIComponent(event.dragInitiator.parent));
}

private function setPosition(child:UIComponent,event:DragEvent):void{
   if(child.parent==dropCanvas){
      child.x = event.localX - (event.dragSource.dataForFormat("localX") as Number);
      child.y = event.localY - (event.dragSource.dataForFormat("localY") as Number);
      kollisionborder(child);         
   }
}

private function kollisionborder(child:UIComponent):void{
   var space:uint=10;
   if(child.x>dropCanvas.width-child.width-space){
      child.x=dropCanvas.width-child.width-space;
   }
   if(child.x<space){
      child.x=space;
   }
   if(child.y>dropCanvas.height-child.height-space){
      child.y=dropCanvas.height-child.height-space;
   }
   if(child.y<space){
      child.y=space;
   }
   kollisioncomponents(child);
   
}

private function kollisioncomponents(child:UIComponent):void{
}


private function doDragStart(event:MouseEvent):void{   
   var dragInitiator:UIComponent = event.currentTarget as UIComponent;
   var dragSource:DragSource = new DragSource();
   dragSource.addData(event.localX, "localX");
   dragSource.addData(event.localY, "localY");
   dragSource.addData(dragInitiator,"child");
   DragManager.doDrag(dragInitiator, dragSource, event);
   CanvasBorder(0xff0000,UIComponent(dragInitiator.parent));
}

private function CanvasBorder(color:Object,component:UIComponent):void{
   if(component==meinetollevbox){
      dropCanvas.setStyle("borderColor",color);
      meinetollevbox.setStyle("borderColor",0x1C5CC7);   
   }else{
      meinetollevbox.setStyle("borderColor",color);         
      dropCanvas.setStyle("borderColor",0x1C5CC7);
   }
}

]]>
</mx:Script>         
         <mx:Tile id="meinetollevbox" direction="vertical" height="500"  width="80"
                horizontalGap="10" verticalGap="15" backgroundColor="0x00ff00"
                paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10"    dragEnter="doDragEnter(event)"
   dragDrop="doDragDrop(event)" borderStyle="solid" cornerRadius="20" borderThickness="2" borderColor="0x1C5CC7"  x="110" y="110">

   <mx:Button id="testid" label="test1" mouseDown="doDragStart(event)"  x="20" y="30"/>
   <mx:Button label="test2" mouseDown="doDragStart(event)"  y="60" x="20"/>
   <mx:Button label="test3" mouseDown="doDragStart(event)"  y="90" x="20"/>
   <mx:Button label="test4" mouseDown="doDragStart(event)"  y="120" x="20"/>
   </mx:Tile>
<mx:Canvas id="dropCanvas" width="500" height="500" backgroundColor="0x333333" borderColor="0x1C5CC7" dragEnter="doDragEnter(event)" dragDrop="doDragDrop(event)" borderStyle="solid" cornerRadius="20" borderThickness="2" x="200" y="110">
</mx:Canvas>

</mx:Application>
Geändert von reksi am 12.05.09 um 10:31 Uhr

 12.05.2009, 12:18Re1
Benutzerbild von valuee
Beiträge: 123
Wohnort: Straight Outta Berlin-City
Registriert: Aug 2006

Ich hatte mal ein ähnliches Problem: Ich hatte ziemlich viele Komponenten und Grafiken die nicht mit ganzen Pixeln positioniert waren (also z.B. x=5,7 und y=0,2) Nach dem draggen ist das dann immer leicht gehüpft... sehr minimal, aber sichtbar und nicht wirklich schön. Gelöst hatte ich das, indem ich beim absetzen alle X,Y-Werte auf ganze Zahlen gerundet habe.

Dein zweites Problem verstehe ich nicht ganz. Der Aufruf new UIComponent() dupliziert jedenfalls keine Komponente, sondern erstellt eine neue Instanz
 12.05.2009, 12:53Re2
Beiträge: 71
Wohnort: Berlin
Registriert: Jan 2004

Themenautor/in

Danke werds mal ausprobieren!

und wie mache ich das dann? :S will halt das das Object in der Tile immer noch vorhanden ist damit es nochmal raufgezogen werden kann.

Mit freundlichen Grüßen
reksi
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 
Themen
Ähnliche Beiträge zum Thema
Drag and drop [Flash 10] 10.11.2010 - Xoltec
drag & drop bei tandem bannern [Flash 11] 03.01.2012 - dreidreisieben
 
AntwortenRegistrieren Seite1

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de