Как рисовать плавные линии в ActionScript 3 (Flash) - PullRequest
1 голос
/ 21 июня 2010

Как можно нарисовать плавные линии с помощью ActionScript 3 (используя flex 4)?

Я имею в виду: я делаю что-то вроде этого:

        var grap:Graphics =  this.display.graphics;
        grap.lineStyle(8, 0xFF0000, 1, true, "normal", CapsStyle.ROUND);
        grap.moveTo(180,330);
        grap.lineTo(200,130);

Но результат выглядит так:
http://sub.ited.nl/try/ :(
Края линий очень четкие, как я могу это улучшить? Особенно, когда рисуете линию через Твин, это похоже на пьяного мужчину, идущего по тротуарам;)...

Код анимации для рисования линии:

        var grap:Graphics =  this.display.graphics;
        grap.lineStyle(8, 0xFF0000, 1, true, "normal", CapsStyle.ROUND);
        grap.moveTo(220,330);
        new Tween(this, [220, 330], [240, 130]);

А в методе onTweenUpdate:

        this.display.graphics.lineTo(values[0], values[1]);

Пожалуйста, несколько советов по этому поводу?

Кстати: как лучше всего удалить фон по умолчанию для объекта Flash?(серый фон).У меня есть это в моем index.mxml:

    <mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="600" 
addedToStage="start()" styleName="plain" backgroundImage="{null}">

Но я часто вижу мерцание (в режиме разработки), что означает, что я сначала вижу серый фон по умолчанию, а затем белый ...

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

1 Ответ

2 голосов
/ 21 июня 2010

Есть ли какая-либо причина, чтобы не на каждой итерации вычеркнуть прогресс линии и перерисовать ее?Как в:

// inside tween update
displayObj.graphics.clear();
displayObj.graphics.moveTo(180,330);
displayObj.graphics.lineTo(values[0]);
// i.e. only the end point is tweened

В вашем текущем коде вы на самом деле рисуете много отдельных линий, поэтому все, что вы сделали для улучшения плавности, будет зависеть деликатно от внутренних особенностей того, как Flash рендерится, поэтомулучше перерисовывать всю строку в каждом кадре.

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