2009-08-26 4 views
0

Momentan ist jeder Loader ein Kind eines Sprites - sprite.addChild (loader);AS3 - Kann mehrere Bilder auf die Bühne laden, Größe anpassen und einzeln verschieben

Als nächstes füge ich das Sprite MovieClip-Box, die mit MyBorder ist MovieClip - mainMovie.myBorder.box.addChild (Sprite);

Weiter Ich kann das Sprite ziehen mit -

mainMovie.addEventListener (MouseEvent.MOUSE_DOWN, pickUp); mainMovie.addEventListener (MouseEvent.MOUSE_UP, dropIt);

Funktion PickUp (Ereignis: MouseEvent): void { sprite.startDrag(); }

function dropIt(event:MouseEvent):void 
{ 
sprite.stopDrag(); 
} 

Ich mag jeden Sprit getrennt, aber ich habe Probleme beim Verständnis, wo die „für while“ Schleife zu verwenden. Ich möchte nur die Möglichkeit geben, maximal 5 Bilder hochzuladen.

Kann mir hier jemand helfen? Danke Annette B.

Antwort

0

Sie sollten nicht auf die Drag auf "Sprite" hören. Sie benötigen separate Listener und Handler für jedes unterziehbare Kind. Anstatt also müssen Sie sich auf das Kind von „Sprite“ hören:

sprite.loader.addEventListener(MouseEvent.MOUSE_DOWN,pickUp); 
sprite.loader.addEventListener(MouseEvent.MOUSE_UP,dropIt); 

Auch sollten Sie das Kind schleppen, nicht Ihre „Sprite“ Container:

function dropIt(event:MouseEvent):void 
{ 
    sprite.loader.stopDrag(); 
} 

Ich bin nicht sicher, was Sie versuchen mit dem für while-Schleife zu erreichen, aber hier ist ein Beispiel für einen Grund für Schleife, die eine Reihe von Lader Variablen erstellt:

var loaderArray:Array = []; 
for(var increment = 0; increment < numberOfUploads; increment++) { 
    loaderArray[increment]:URLLoader = new URLLoader(); 
} 

ich hoffe, das ist hilfreich. Es wäre besser, wenn wir mehr von deinem Code sehen könnten.

+0

Ich möchte jedes Bild mit einem anderen Namen anzielen, so dass ich Größe ziehen/ablegen kann. private Funktion komplett (event: Event): void \t \t {\t \t \t \t \t \t Funktion imgVal(): Number \t \t \t { \t \t \t \t img + = 1; \t \t \t \t Rückgabe img; \t \t \t} \t \t \t imgVal(); \t \t \t var Sprite: Sprite = neuer Sprite(); \t \t \t sprite.addChild (loader); \t \t \t sprite.name = "Bild" + img; \t \t \t Ablaufverfolgung (sprite.name); \t \t \t _fla.myBorder.box.addChild (Sprite); \t \t \t _fla.addEventListener (MouseEvent.MOUSE_DOWN, pickUp); \t \t \t _fla.addEventListener (MouseEvent.MOUSE_UP, dropIt); \t \t \t Das gibt mir den gleichen Namen für jedes Sprite Bild1 statt Bild1, Bild2 usw. Dank Annette B. –

+0

Klingt wie Sie alles, was Sie brauchen haben. Sie müssen die Anzahl der Kinder wissen, die Sie hinzufügen möchten (numberOfUpads, in meinem obigen Code). Außerdem müssen Sie den Sprite-Namen erhöhen (img in Ihrem Code ist Inkrement in meinem Code). Außerdem ändern Sie den Namen von "Sprite", warum ändern Sie nicht den Namen der Kinder, die Sie hinzufügen? – AyexeM

0

Eine einfache for-Schleife sollte

so statt

mainMovie.addEventListener(MouseEvent.MOUSE_DOWN,pickUp); mainMovie.addEventListener(MouseEvent.MOUSE_UP,dropIt); 

tun haben, sollten Sie, sofern Sie keine anderen Clips innerhalb des Kastens haben, aber die Sprites, die die Lade halten, und Sie müssen machen sicher, dass die Sprites dort hinzugefügt werden. Sie sollten wahrscheinlich die for-Schleife verwenden, um die Sprites und die Zuhörer an, aber ich kann Ihnen nicht genau beraten, wie ich

genügend Informationen haben keine
for(var i:int = 0 ; i < 5 ; i++){ 
    mainMovie.myBorder.box.getChildAt(i).addEventListener(MouseEvent.MOUSE_DOWN,pickUp);; 
} 
stage.addEventListener(MouseEvent.MOUSE_UP,dropIt); 

Ok, Erklärungen:

einer for-Schleife ist eine einfache noch mächtiges Sprachelement. Ich schlage vor, die Dokumentation zu lesen, den Beispielcode in einen neuen Fla zu kopieren und einzufügen, zu optimieren und den Überblick zu behalten. Es ist nicht so schwer wie es scheinen mag.

Ich füge den MOUSE_UP-Handler auf der Bühne, weil in as3 ein Problem damit ist. in as2 release außerhalb arbeitet.

+0

Ich möchte jedes Bild mit einem anderen Namen versehen, sodass ich die Größe nach oben/unten ziehen kann. private Funktion komplett (event: Event): void \t \t {\t \t \t \t \t \t Funktion imgVal(): Number \t \t \t { \t \t \t \t img + = 1; \t \t \t \t Rückgabe img; \t \t \t} \t \t \t imgVal(); \t \t \t var Sprite: Sprite = neuer Sprite(); \t \t \t sprite.addChild (loader); \t \t \t sprite.name = "Bild" + img; \t \t \t Ablaufverfolgung (sprite.name); \t \t \t _fla.myBorder.box.addChild (Sprite); \t \t \t _fla.addEventListener (MouseEvent.MOUSE_DOWN, pickUp); \t \t \t _fla.addEventListener (MouseEvent.MOUSE_UP, dropIt); \t \t \t Das gibt mir den gleichen Namen für jedes Sprite Bild1 statt Bild1, Bild2 usw. Dank Annette B. –

+0

Ich habe Ihren Code ein wenig geändert: private var imgNum: int; private Funktion abgeschlossen (Ereignis: Ereignis): void { \t imgNum ++ \t var Sprite: Sprite = neuer Sprite(); \t sprite.addChild (loader); \t sprite.name = "pict" + imgNum; \t Ablaufverfolgung (sprite.name); \t _fla.myBorder.box.addChild (Sprite); \t sprite.addEventListener (MouseEvent.MOUSE_DOWN, PickUp); \t sprite.addEventListener (MouseEvent.MOUSE_UP, dropIt); } Funktion PickUp (Ereignis: MouseEvent): void { \t Trace (event.currentTarget.name); } Funktion imgVal(): Zahl {img + = 1; Rückgabe img; } imgVal(); ist das gleiche wie eine Zahl um eins zu erhöhen, für die Sie den Operator ++ haben. –

+0

was ich verwendet habe: imgVal(); \t var Sprite: Sprite = neuer Sprite(); \t sprite.addChild (loader); sprite.name = "Bild" + imgNum; \t Ablaufverfolgung (sprite.name); \t _fla.myBorder.box.addChild (Sprite); \t sprite.addEventListener (MouseEvent.MOUSE_DOWN, PickUp); \t //sprite.addEventListener(MouseEvent.MOUSE_UP,dropIt); \t} \t Funktion pickUp (event: Mouseevent): void \t \t { \t trace (event.currentTarget.name); \t } \t Funktion imgVal(): Anzahl \t { \t img + = 1; \t Rückgabe img; \t} Jedes hochgeladene Foto hat den Namen pict0 und jedes weitere hochgeladene Foto hat auch den Namen pict0. Möchte jeder haben pict1, pict2 usw. danke –

Verwandte Themen