Цвет линии ActionScript изменяется преждевременно

Я пытаюсь рисовать линии рядом друг с другом, но последняя линия из первой цветовой группы принимает цвет из второй цветовой группы до того, как будет назначен второй цвет. кто-нибудь может это объяснить?

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);
    }

person Chunky Chunk    schedule 29.06.2010    source источник
comment
Похоже, это должно сработать. Попробуйте поместить каждый блок в свою функцию, а затем посмотрите, что произойдет, когда вы вызовете их.   -  person Catharsis    schedule 29.06.2010
comment
Я скопировал/вставил ваш код в тестовый компонент, и он отрисовывается, как и ожидалось: три зеленые диагональные линии с одной красной линией, смещенной на один пиксель от первой строки. Может быть, опубликовать окружающий код для получения дополнительных подсказок?   -  person Wade Mueller    schedule 29.06.2010
comment
я обновил свой код для полной функции. если вы увеличите масштаб после того, как он будет нарисован, вы заметите, что самые короткие линии в правом нижнем углу имеют один и тот же цвет. по крайней мере они для меня. Я использую последнюю версию флеш-плеера 10.1.   -  person Chunky Chunk    schedule 29.06.2010
comment
Я только что столкнулся с той же проблемой при простой попытке нарисовать две параллельные линии разных цветов на PlayBook. На самом деле это не связано с endFill(), или, по крайней мере, это может произойти и без этого, поскольку у меня нет ничего, кроме двух наборов команд lineStyle()/moveTo()/lineTo(). Помещение второго lineStyle() после moveTo() второго набора решает проблему. Итак, вы подали отчет об ошибке Adobe? Я уверен, что это ошибка.   -  person Peter Hansen    schedule 08.02.2011
comment
я совсем забыл об этой проблеме. много времени! нет, в итоге я не зарегистрировал ошибку, Питер. пожалуйста, прокомментируйте, если вы найдете время, чтобы сделать это.   -  person Chunky Chunk    schedule 08.02.2011


Ответы (2)


Хотя я не совсем уверен, почему это происходит, это происходит из-за того, что вы разместили corner.graphics.endFill();

Поместите вызов endFill сразу после drawRect, и проблема будет решена.

person sberry    schedule 29.06.2010

Вы также можете поставить

corner.graphics.moveTo(0, 13);

прежде чем вы измените lineStyle.

person Zev    schedule 29.06.2010
comment
ты прав. все это кажется немного нелогичным, однако. даже необходимость заканчивать заливку до изменения цвета линии немного нелепа. я полагаю, я вижу, что нет никакой реальной пользы в том, чтобы заканчивать заливку последней в функции, и это может сделать код более трудным для чтения, но я все еще чувствую, что хочу сообщить об этом в Adobe об ошибке. - person Chunky Chunk; 30.06.2010