Flashhilfe.de - Flash Community

Drag und Drop bei geladenen Bildern [Flash 11]

 


AntwortenRegistrieren Seite1  

hahe.frie#1
Benutzerbild von hahe.frie
Beiträge: 8
Registriert: Jan 2012

03.01.2012, 15:42

Hallo Zusammen,

ich bin noch Anfänger in Flash und wage gerade meine ersten Schritte und stehe nun vor einem Problem, für das ich keine Lösung finde. Per Klick auf einen Button soll ein Object aus meiner Libary geladen werden. Das klappt auch soweit mit diesem Script:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[/script]star_gold.addEventListener(MouseEvent.CLICK, fl_ClickToLoadImageFromLibrary_3);

function fl_ClickToLoadImageFromLibrary_3(event:MouseEvent):void
{
     
  var libImage:star1 = new star1();
 
  var star_g:Bitmap = new Bitmap(libImage);
  addChild(star_g);
     
  star_g.x = 835;
  star_g.y = 600;
 
}


Nun möchte ich aber das neu geladene Object per Drag und Drop beweglich machen. Dachte ich könnte es folgendermaßen lösen aber das klappt leider nicht:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
star_g.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag_2);

function fl_ClickToDrag_2(event:MouseEvent):void
{
     star_g.startDrag();
}

stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop_2);

function fl_ReleaseToDrop_2(event:MouseEvent):void
{
     star_g.stopDrag();
}


Kann mir jmd helfen?

Liebe Grüße
Schlagwörter: Drag and Drop, load
RustyCake#2
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

03.01.2012, 17:50

Eine möglichkeit wäre.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import flash.display.Sprite;
var picHolder:Sprite = new Sprite();
addChild(picHolder);
btn.addEventListener(MouseEvent.CLICK, getPicture);
function getPicture(e:MouseEvent):void
{
     var clownImage:Clown = new Clown();
     var pC:Bitmap = new Bitmap(clownImage);
     picHolder.addChild(pC);
     picHolder.x = 55;
     picHolder.y = 55;
}
picHolder.addEventListener(MouseEvent.MOUSE_DOWN, startDragC);
function startDragC(e:MouseEvent):void
{
     e.target.startDrag();
}
picHolder.addEventListener(MouseEvent.MOUSE_UP, stopDragC);
function stopDragC(e:MouseEvent):void
{
     e.target.stopDrag();
}
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
hahe.frie#3
Benutzerbild von hahe.frie
Beiträge: 8
Registriert: Jan 2012

Themenautor/in

03.01.2012, 18:33

Vielen Danke für die schnelle Antwort.
Konnte es für mein Script umsetzen und es funktioniert. Kann es zwar noch nicht ganz nachvollziehen, aber werd es versuchen.

Gibt es eine Möglichkeit, dass er nun jedes Mal ein neues Objekt erzeugt wenn ich den EventListener benutze? Im Moment ist es ja so, dass er das selbe Objekt dann wieder auf den Ursprungsort setzt, wenn ich ihn erneut betätige.
RustyCake#4
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

03.01.2012, 19:36

Ja gibt es, ist aber ein wenig Tricky, evtl. nicht einfach für Dich nachvollziehbar.
Vielleicht erklärst Du mal, wie Du Dir das vorgestellt hast.
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
hahe.frie#5
Benutzerbild von hahe.frie
Beiträge: 8
Registriert: Jan 2012

Themenautor/in

04.01.2012, 10:31

Im Grunde möchte ich mit einem Klick auf einen Button ein Objekt erstellen und das beliebig oft.
Hab hier mal ein Beispiel, wie ich mir das vorstelle:

http://browse.deviantart.com/?q=christmas&order=9&offset=624#/dfstqd

Hier klickt man auf die Farbfelder und unten wird dann das ensprechende Objekt erzeugt. Das ist mein Ziel.


Edit: Ich sehe gerade, dass er in diesem Beispiel auch immer nur ein Objekt erzeugt.. Aber vllt hilft es dir, dir vorzustellen was ich vorhabe.

Liebe Grüße
Geändert von hahe.frie am 04.01.12 um 10:34 Uhr
RustyCake#6
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

04.01.2012, 13:26

Ja vorstellen kann ich mir das schon, aber es gibt eben sehr viele Wege das zu lösen.
Also wie soll es sein, wie im Beispiel-Link immer nur ein Objekt, der selben Art?
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
hahe.frie#7
Benutzerbild von hahe.frie
Beiträge: 8
Registriert: Jan 2012

Themenautor/in

04.01.2012, 13:31

Am liebsten wäre es mir wenn man mehrere Objekte der selben Art hätte. 
Beispiel: Man klickt auf einen Button und es erscheint eine rote Kugel. Man klickt wieder drauf und es erscheint eine weitere Rote Kugel.
RustyCake#8
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

04.01.2012, 13:39

Das ist eigentlich einfach, wenn Du aus dem Bitmap einen MovieClip machst.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import flash.display.Sprite;
var picHolder:Sprite = new Sprite();
addChild(picHolder);
btn.addEventListener(MouseEvent.CLICK, getPicture);
function getPicture(e:MouseEvent):void
{
     var pC:Symbol = new Symbol();
     picHolder.addChild(pC);
     pC.x = 55;
     pC.y = 55;
}
picHolder.addEventListener(MouseEvent.MOUSE_DOWN, startDragC);
function startDragC(e:MouseEvent):void
{
     e.target.startDrag();
}
picHolder.addEventListener(MouseEvent.MOUSE_UP, stopDragC);
function stopDragC(e:MouseEvent):void
{
     e.target.stopDrag();
}

Symbol ist der MovieClip vom Bitmap.
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
hahe.frie#9
Benutzerbild von hahe.frie
Beiträge: 8
Registriert: Jan 2012

Themenautor/in

04.01.2012, 21:04

Es funktioniert! Vielen vielen Dank nochmals! :)
hahe.frie#10
Benutzerbild von hahe.frie
Beiträge: 8
Registriert: Jan 2012

Themenautor/in

05.01.2012, 11:30

Eine Frage hätte ich noch:

Und zwar möchte ich Objekte wie mit einem Papierkorb entfernen können. Hab mir dafür eine Fläche erstellt, diese als MC definiert und mit folgendem Script gearbeitet:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
red_btn.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
red_btn.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

picHolder.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
picHolder.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

function mouseDownHandler(evt:MouseEvent):void {
     var object = evt.target;
     object.useHandCursor = true;
     object.startDrag();
}

function mouseUpHandler(evt:MouseEvent):void {
     var obj = evt.target;
     var target = obj.dropTarget;
     if (target != null && target.parent == blue_btn)
     {
        picHolder.parent.removeChild(picHolder);
     }
     
     obj.stopDrag();
}


Funktioniert auch. Problem ist nur, dass er nun alle erstellten Childs löscht und es soll immer nur das Child gelöscht werden was auf den MC gezogen wurde.
hahe.frie#11
Benutzerbild von hahe.frie
Beiträge: 8
Registriert: Jan 2012

Themenautor/in

07.01.2012, 14:33

Habs jetzt folgendermaßen gelöst:

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
import flash.display.Sprite;
var picHolder01:Sprite = new Sprite();
addChild(picHolder01);
star_silver.addEventListener(MouseEvent.CLICK, getPicture01);
function getPicture01(e:MouseEvent):void
{
       var pC01:star_silver_symbol = new star_silver_symbol();
       picHolder01.addChild(pC01);
       pC01.x = 55;
       pC01.y = 55;
}
picHolder01.addEventListener(MouseEvent.MOUSE_DOWN, startDrag01);
function startDrag01(e:MouseEvent):void{
     
      var object = e.target;
     object.useHandCursor = true;
     object.startDrag();
}


picHolder01.addEventListener(MouseEvent.MOUSE_UP, stopDrag01);
function stopDrag01(e:MouseEvent):void {
     var obj = e.target;
     var target = obj.dropTarget;
     if (target != null && target.parent == delete_1  )
     {
        obj.visible = false;
     }
     
     obj.stopDrag();
}


So ist es zwar nicht gelöscht, aber auch nicht mehr zu sehen :)
RustyCake#12
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

09.01.2012, 07:55

Sorry war beschäftigt.
das müsste doch gehen.
ActionScript:
1
2
3
4
5
if (target != null && target.parent == delete_1  )
     {
          //obj.visible = false;
      picHolder.removeChild(obj);
       }
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
hahe.frie#13
Benutzerbild von hahe.frie
Beiträge: 8
Registriert: Jan 2012

Themenautor/in

09.01.2012, 08:16

Ja das klappt! Vielen Dank nochmals für die tolle Hilfe! So langsam werden die Zusammenhänge auch klarer.

Liebe Grüße!

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de