Как перерисовать фигуру в ActionScript 3.0? - PullRequest
0 голосов
/ 08 января 2012

Мой вопрос: как мне перерисовать фигуру, используя только код?

Краткий комментарий к самой задаче. У меня есть EventListener, который захватывает клики на сцене и изменения размера сцены. Оба выполняют одну и ту же функцию - redrawEvents(evt:Event). Этап содержит ряд блоков, которые представляют определенные события. На каждом перерисовке эти блоки переставляются, а также рисуются линии (которые представляют связи между событиями).

Я нашел способ изменить положение всех блоков, но застрял на перерисовывающихся линиях.

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

Вот код, который я использую для изменения формы

stage.addEventListener(MouseEvent.CLICK,redrawEvents);

function redrawEvents (evt:Event) {
    var lines:Shape = new Shape();
    lines.graphics.lineStyle(2, 0xFFFFFF, .75);
    lines.graphics.clear();
    for (var k:int = 0; k < connections.length; k++){
        lines.graphics.moveTo(eventList[connections[k][0]].x + 50, eventList[connections[k][0]].y + 50);
        lines.graphics.lineTo(eventList[connections[k][1]].x + 50, eventList[connections[k][1]].y + 50);
    }
    addChild(lines);
}

Однако, когда форма изменена, она все равно оставляет «старые версии» себя на экране, и я этого не хочу. Я пытался создавать и удалять экземпляры, преобразования типов вариаций, но все же это не решило проблему.

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 09 января 2012

Каждый раз, когда вы рисуете линии, вы добавляете новую Shape на сцену. Вы можете сохранить ссылку на нее и каждый раз удалять ее из списка отображения, или просто использовать один экземпляр и метод clear() из Graphics перед рисованием нового набора линий.

0 голосов
/ 09 января 2012

Вы создаете новый экземпляр Shape каждый раз при перерисовке?Вы пробовали удалить ребенка (линии)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...