2011-05-17 4 views
0

J'ai des problèmes avec mon code ou quelque chose ... la chose est que j'utilise lineTo d'un objet coordonnées à l'autre, mais pas mater où le second objet est la ligne va toujours à une direction aléatoire quelque part dans le coin inférieur gauche et je suis coincé.lineTo ne fonctionne pas correctement

Voici le code:

 var spr:Shape = new Shape(); 
     spr.graphics.clear(); 
     spr.graphics.lineStyle(2,0xffffff); 
     spr.x = latM[1].x; 
     spr.y = latM[1].y; 
     spr.graphics.lineTo(latM[0].x,latM[0].y); 
     trace("latM[0].x = "+latM[0].x+"\tlatM[0].y = "+latM[0].y+ 
       "\nlatM[1].x = "+latM[1].x+"\tlatM[1].y = "+latM[1].y); 
     spr.graphics.lineTo(latM[0].x,latM[0].y); 
     addChild(spr); 

après quelques essais j'ai appris que toutes les lignes point [écrit maigre par erreur] vers le TT_TT inférieur gauche ..

+0

Que voulez-vous dire se pencher en bas à gauche? –

+0

Je vais donner un exemple c'est plus simple de cette façon: disons que je commence à x 100 et y 100 et je veux la ligne à co à x 200 y 50 il pointera downword thowrd le coin inférieur gauche, si je pointe de la même endroit pour laisser dire x 20 y 500 j'obtiendrai le même résultat – JustAddX

+0

En changeant le Y vous faites la ligne "pointer vers le bas". Ai-je manqué quelque chose ou n'est-ce pas l'effet désiré que vous recherchez? –

Répondre

0

Que voulez-vous dire pencher vers en bas à gauche?
Vous ne pouvez tracer qu'une ligne droite avec lineTo.
"lineTo" ne va que du point courant au point défini via ses paramètres.
La fonction moveTo déplace le point sans dessiner.
Le code suivant dessine une boîte 100 X 100

var spr:Shape = new Shape(); 
spr.graphics.clear(); 
spr.graphics.lineStyle(2,0xff00ff); 
spr.graphics.moveTo(0,0); 
spr.graphics.lineTo(0,100); 
spr.graphics.lineTo(100,100); 
spr.graphics.lineTo(100,0); 
spr.graphics.lineTo(0,0); 
addChild(spr); 
1

Je suppose LATM [1] et LATM [0] sont les deux formes que vous essayez de tracer une ligne entre les deux. Si c'est le cas, avez-vous remarqué que vous avez deux lignes pour aller au même point?

Ce dont vous avez besoin c'est.

spr.graphics.moveTo(latM[0].x, latM[0].y); 
spr.graphics.lineTo(latM[1].x, latM[1].y); 

Voici un petit prototype pour vous montrer comment cela fonctionne. (Ce n'est pas destiné à être un code super solide, c'est un prototype rapide et sale.)

package src 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 

    public class Main extends Sprite 
    { 
     private var obj1:Sprite = new Sprite(); 
     private var obj2:Sprite = new Sprite(); 
     private var lineSprite:Sprite = new Sprite(); 

     // for testing your line. 
     // we don't really need it for this prototype however it 
     // is being used since this is how your accessing your Objects. 
     private var latM:Array = []; 

     public function Main() 
     { 
      addEventListener(Event.ADDED_TO_STAGE, initMain); 
     } 

     private function initMain(e:Event):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, initMain); 

      obj1.graphics.lineStyle(1, 0); 
      obj1.graphics.beginFill(0xccccff); 
      obj1.graphics.drawCircle(0, 0, 20); 
      obj1.graphics.endFill(); 
      obj1.x = 100; 
      obj1.y = 100; 

      obj2.graphics.lineStyle(1, 0); 
      obj2.graphics.beginFill(0xffcccc); 
      obj2.graphics.drawCircle(0, 0, 20); 
      obj2.graphics.endFill(); 
      obj2.x = 400; 
      obj2.y = 200; 

      // for testing your line. 
      latM.push(obj1, obj2); 

      addChild(obj1); 
      addChild(obj2); 
      addChild(lineSprite); 

      addEventListener(Event.ENTER_FRAME, handleEnterFrame); 
     } 

     private function handleEnterFrame(e:Event):void 
     { 
      // this will clear and redraw the line between the two sprites 
      // every frame and thus always be up to date. 
      lineSprite.graphics.clear(); 
      lineSprite.graphics.lineStyle(2, 0xff0000); 
      lineSprite.graphics.moveTo(latM[0].x, latM[0].y); 
      lineSprite.graphics.lineTo(latM[1].x, latM[1].y); 

      //obj1.x++; // uncomment this line and you can watch it move and keep the line perfect. 
     } 

    } 

} 
+0

merci beaucoup j'ai enfin compris ce que j'ai fait de mal – JustAddX