2009-08-26 3 views
0

Actuellement, chaque chargeur est un enfant d'une image-objet - sprite.addChild (loader); Ensuite, j'ajoute l'image-objet à movieClip qui est avec myBorder movieClip - mainMovie.myBorder.box.addChild (sprite);AS3 - Peut télécharger plusieurs images à la scène, vouloir les dimensionner et les déplacer séparément

Ensuite, je peux faire glisser le sprite en utilisant -

mainMovie.addEventListener (MouseEvent.MOUSE_DOWN, pick-up); mainMovie.addEventListener (MouseEvent.MOUSE_UP, dropIt); Function pickUp (event: MouseEvent): void { sprite.startDrag(); }

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

Je veux séparez chaque sprite mais je vais avoir du mal à comprendre où utiliser la boucle « pour tout ». Je veux seulement donner la possibilité de télécharger 5 images au maximum.

Quelqu'un peut-il m'aider? Merci Annette B.

Répondre

0

Vous ne devriez pas être à l'écoute du glisser sur "sprite". Vous avez besoin d'écouteurs et de gestionnaires distincts pour chaque enfant que vous souhaitez déplacer. Ainsi, au lieu que vous devez écouter l'enfant de « sprite »:

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

Aussi, vous devez traîner l'enfant, pas votre conteneur « sprite »:

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

Je ne suis pas sûr de ce que vous essayez pour accomplir la boucle pour en, mais voici un exemple d'une base de boucle qui crée un tas de variables chargeur:

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

J'espère que est utile. Ce serait mieux si nous pouvions voir plus de votre code.

+0

Je souhaite cibler chaque image avec un nom différent afin de pouvoir faire glisser/déposer la taille vers le haut/bas. fonction privée complète (event: Event): void \t \t {\t \t \t \t \t \t fonction imgVal(): Nombre \t \t \t { \t \t \t \t img + = 1; \t \t \t \t return img; \t \t \t} \t \t \t imgVal(); \t \t \t var sprite: Sprite = new Sprite(); \t \t \t sprite.addChild (loader); \t \t \t sprite.name = "pict" + img; \t \t \t trace (sprite.nom); \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 Cela me donne le même nom pour chaque sprite image1 au lieu de image1, image2, etc. Merci Annette B. –

+0

On dirait que vous avez tout ce dont vous avez besoin. Vous devez connaître le nombre d'enfants que vous essayez d'ajouter (numberOfUploads, dans mon code ci-dessus). De plus, vous devez incrémenter le nom de l'image-objet (img dans votre code est incrémenté dans mon code). De plus, vous changez le nom de "sprite", pourquoi ne changez-vous pas le nom des enfants que vous ajoutez? – AyexeM

0

Une simple boucle devrait faire

donc au lieu de

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

vous devriez avoir, en supposant que vous avez pas d'autres clips à l'intérieur de la boîte, mais les sprites qui détiennent les chargeurs, et vous devez faire sûr que les sprites y sont ajoutés. Vous devriez probablement utiliser la boucle pour ajouter les sprites et les auditeurs, mais je ne peux pas vous conseiller avec précision que je n'ai pas assez d'informations

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, explications:

une boucle est simple élément de langage encore puissant. Je suggère de lire la documentation, de copier et de coller l'exemple de code dans un nouveau fichier, de le peaufiner et de le maîtriser. Ce n'est pas aussi dur que cela puisse paraître.

J'ajoute le gestionnaire MOUSE_UP sur la scène, car dans as3 il y a un problème avec ça. dans as2 sortie en dehors des travaux.

+0

Je veux cibler chaque image avec un nom différent afin que je puisse glisser/déposer la taille vers le haut/bas. fonction privée complète (event: Event): void \t \t {\t \t \t \t \t \t fonction imgVal(): Nombre \t \t \t { \t \t \t \t img + = 1; \t \t \t \t return img; \t \t \t} \t \t \t imgVal(); \t \t \t var sprite: Sprite = new Sprite(); \t \t \t sprite.addChild (loader); \t \t \t sprite.name = "pict" + img; \t \t \t trace (sprite.nom); \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 Cela me donne le même nom pour chaque image1 sprite au lieu de image1, image2, etc. Merci Annette B. –

+0

J'ai changé votre code un peu: var imgNum privé: int; fonction privée complète (event: Event): void { \t imgNum ++ \t var sprite: Sprite = new Sprite(); \t sprite.addChild (chargeur); \t sprite.name = "pict" + imgNum; \t trace (sprite.nom); \t _fla.myBorder.box.addChild (sprite); \t sprite.addEventListener (MouseEvent.MOUSE_DOWN, pickUp); \t sprite.addEventListener (MouseEvent.MOUSE_UP, dropIt); } fonction pickup (événement: MouseEvent): void { \t trace (event.currentTarget.name); } Fonction imgVal(): Nombre {img + = 1; return img; } imgVal(); est le même que l'incrémentation d'un nombre par un pour lequel vous avez l'opérateur ++. –

+0

ce que j'ai utilisé: imgVal(); \t var sprite: Sprite = nouveau Sprite(); \t sprite.addChild (chargeur); sprite.name = "pict" + imgNum; \t trace (sprite.nom); \t _fla.myBorder.box.addChild (sprite); \t sprite.addEventListener (MouseEvent.MOUSE_DOWN, pickUp); \t //sprite.addEventListener(MouseEvent.MOUSE_UP,dropIt); \t} \t fonction pick-up (event: MouseEvent): void \t \t {\t trace (event.currentTarget.name); \t} \t imgVal() Fonction: Nombre \t { \t img + = 1; \t return img; \t} Toujours chaque photo téléchargée a le nom pict0 et chaque photo supplémentaire téléchargée a également le nom pict0. Aimeriez-vous avoir chacun des pict1, pict2 etc. merci –

Questions connexes