2010-06-29 6 views
1

Je tente de tracer des lignes l'une à côté de l'autre, mais la dernière ligne du premier groupe de couleurs prend la couleur du deuxième groupe de couleurs avant que la deuxième soit affectée. Quelqu'un peut-il expliquer cela?ActionScript LineStyle Changement de couleur prématuré

function drawCorner() 
    { 
    var corner:Sprite = new Sprite(); 
    corner.graphics.beginFill(0x0, 1.0); 
    corner.graphics.drawRect(0, 0, 20, 20); 

    corner.graphics.lineStyle(0, 0x00FF00, 1.0);  
    corner.graphics.moveTo(1, 13); 
    corner.graphics.lineTo(13, 1); 
    corner.graphics.moveTo(6, 13); 
    corner.graphics.lineTo(13, 6); 
    corner.graphics.moveTo(11, 13); 
    corner.graphics.lineTo(13, 11); 

    corner.graphics.lineStyle(0, 0xFF00FF, 1.0);  
    corner.graphics.moveTo(0, 13); 
    corner.graphics.lineTo(13, 0); 
    corner.graphics.moveTo(5, 13); 
    corner.graphics.lineTo(13, 5); 
    corner.graphics.moveTo(10, 13); 
    corner.graphics.lineTo(13, 10); 

    corner.graphics.endFill(); 

    addChild(corner); 
    } 
+0

Il semble que cela devrait fonctionner. Essayez de placer chaque bloc dans sa propre fonction, puis voyez ce qui se passe quand vous l'appelez. –

+0

J'ai copié/collé votre code dans un composant de test et il dessine comme prévu: trois lignes diagonales vertes avec une seule ligne rouge décalée d'un pixel de la première ligne. Peut-être poster une partie du code environnant pour plus d'indices? –

+0

J'ai mis à jour mon code avec la fonction complète. Si vous effectuez un zoom avant après avoir dessiné, vous remarquerez que les lignes les plus courtes en bas à droite sont de la même couleur. au moins ils sont pour moi. J'utilise le dernier lecteur Flash 10.1. – TheDarkIn1978

Répondre

2

Bien que je ne suis pas certain pourquoi ce qui se passe, il est qui se passe à cause de votre placement de corner.graphics.endFill();

Placez l'appel endFill immédiatement après la drawRect et le problème est résolu.

+0

ahh! en effet, ça l'est. merci d'avoir compris cela. – TheDarkIn1978

2

Vous pouvez aussi mettre le

corner.graphics.moveTo(0, 13); 

avant de modifier lineStyle.

+0

vous avez raison. le tout semble un peu contre-intuitif, cependant. avoir même à terminer le remplissage avant de faire les changements de couleur de la ligne est un peu ridicule. Je suppose que je peux voir qu'il n'y a pas de réel avantage à terminer le remplissage en dernier dans la fonction, ce qui peut rendre le code plus difficile à lire, mais j'ai quand même envie de déposer un bogue sur Adobe à ce propos. – TheDarkIn1978

Questions connexes