代码之家  ›  专栏  ›  技术社区  ›  edbras

如何在actionscript 3(flash)中绘制平滑线

  •  1
  • edbras  · 技术社区  · 14 年前

    如何使用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 回复  |  直到 14 年前
        1
  •  2
  •   fenomas    14 年前

    是否有任何理由不在每次迭代中,清空行的进度并重新绘制它?如:

    // 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渲染的内部内容,因此您最好重新绘制每帧的整行。