2017-09-16 6 views
0

Avoir plusieurs MovieClips étant capables de se déplacer sur une grille, une fois que vous l'avez fait glisser, il semble que cela se duplique et que l'original reste en place. Qu'est-ce qui provoque sa duplication dans mon code?Flash as3 Var movieClip duplique

import flash.display.MovieClip 

[SWF(width = 1300, height = 1000)] 

var tileSize: int = 100; 
var cols: int = stage.stageWidth/tileSize; 
var rows: int = stage.stageHeight/tileSize; 
var grid: Sprite = Sprite(addChild(new Sprite())); 
grid.graphics.lineStyle(0, 0x000000, 0); 
var i: int = 0; 
for (i = 1; i < cols; i++) { 
    var posX: Number = i * tileSize 
    grid.graphics.moveTo(posX, 0); 
    grid.graphics.lineTo(posX, stage.stageHeight); 
} 
for (i = 1; i < rows; i++) { 
    var posY: Number = i * tileSize 
    grid.graphics.moveTo(0, posY); 
    grid.graphics.lineTo(stage.stageWidth, posY); 


    var ball: the_ball = new the_ball(); 
    addChild(ball); 
    ball.x = tileSize * 5; 
    ball.y = tileSize * 5; 
    ball.buttonMode = true; 

    ball.addEventListener(MouseEvent.MOUSE_DOWN, onDown); 
    function onDown(evt: MouseEvent): void { 
     addEventListener(Event.ENTER_FRAME, onRunSnapping); 
    } 

    function onRunSnapping(evt: Event): void { 
     ball.x = Math.round(mouseX/tileSize) * tileSize; 
     ball.y = Math.round(mouseY/tileSize) * tileSize; 
    } 

    stage.addEventListener(MouseEvent.MOUSE_UP, onUp); 
    function onUp(evt: MouseEvent): void { 
     removeEventListener(Event.ENTER_FRAME, onRunSnapping); 
    } 
} 
+0

S'agit-il d'un script de trame? Si oui, combien de cadres avez-vous sur votre timeline? P.S. Formatez votre code. Le code non formaté est vraiment difficile à suivre. – Organis

+0

Votre code ajoute seulement 1 balle à la scène. Comment se fait-il qu'il y ait plusieurs MovieClips draggables? –

+0

@ManuelOtto C'est à l'intérieur de la boucle, mais ce n'est pas évident en raison d'un mauvais formatage. – Organis

Répondre

0

Il ne s'agit pas de duplication, il y a juste de nombreux MovieClips empilés les uns sur les autres. Vous ajoutez une nouvelle balle pour chaque ligne que vous ajoutez exactement à la même position.

Je ne sais pas comment vous voulez que les balles soient distribuées, mais essayez de remplacer ball.y = tileSize * 5; par ball.y = posY; pour voir de quoi je parle.

+0

Merci, je vois ça se produire, mais tout ce que je cherche, c'est juste le MovieClip pour se déplacer. Comment est-ce que j'ajoute à nouveau le même MovieClip? – too1s

+0

Il suffit de mettre le code entier pour la logique de la balle en dehors de la boucle for (ligne 22 à la ligne 41) –

+0

Voilà, merci beaucoup! – too1s