我遇到了使用关节型的不良效果。清除/重新绘制图形时的木材。

我的项目涉及管理圆形和锋利边缘的自定义线图形,这就是为什么我想使用斜切联合风格的原因。

当线厚度大大增加时,即使线的圆形区域也会受到斜切样式的影响。虽然我觉得这很不幸,但它是可以理解的,而不是我指的错误。当降低线厚度并不能完全清除图形时,就会发生错误(?),如每次厚度变化时所指示的那样,将线图的工件留在线曾经在哪里。文物也被锋利的边缘留下,而不仅仅是圆角。

我正在Mac OS X Snow Leopard(10.6.4)上使用Flash Player版本10.1.53.64。

您可以通过在下面运行我的示例代码来测试它。使用左右键盘箭头更改圆形右风的厚度。

更新: 图形伪像是肤浅的。将形状拖到其位置后将其删除。使用拖动功能更新代码。

package
{
import flash.display.CapsStyle;
import flash.display.JointStyle;
import flash.display.LineScaleMode;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.ui.Keyboard;

public class StrokeWidth extends Sprite
    {
    private var roundRect:Sprite = new Sprite();
    private var strokeThickness:Number = 6;

    public function StrokeWidth()
        {
        addEventListener(Event.ADDED_TO_STAGE, init);
        }

    private function init(evt:Event):void
        {
        removeEventListener(Event.ADDED_TO_STAGE, init);
        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownEventListener);
        roundRect.addEventListener(MouseEvent.MOUSE_DOWN, mouseEventListener);
        roundRect.addEventListener(MouseEvent.MOUSE_UP, mouseEventListener);

        drawRoundRect();
        roundRect.x = roundRect.y = 100;
        addChild(roundRect);
        }

    private function drawRoundRect():void
        {
        roundRect.graphics.clear();
        roundRect.graphics.lineStyle(strokeThickness, 0x000000, 1.0, true, LineScaleMode.NONE, CapsStyle.NONE, JointStyle.MITER);
        roundRect.graphics.beginFill(0xFF0000);
        roundRect.graphics.drawRoundRect(0, 0, 400, 200, 100);
        }

    private function mouseEventListener(evt:MouseEvent):void
        {
        switch  (evt.type)
                {
                case MouseEvent.MOUSE_DOWN: roundRect.startDrag();  break;
                case MouseEvent.MOUSE_UP:   roundRect.stopDrag();   
                }
        }

    private function keyDownEventListener(evt:KeyboardEvent):void
        {
        switch  (evt.keyCode)
                {
                case Keyboard.LEFT:     strokeThickness -= 1;       break;
                case Keyboard.RIGHT:    strokeThickness += 1;
                }

        drawRoundRect();
        }
    }
}

alt text

有帮助吗?

解决方案

有趣的。问题是因为Linestyle的规模模式设置为没有:

LineScaleMode.NONE

将其更改为正常解决问题:

LineScaleMode.NORMAL

其他提示

重新创建形状怎么样?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top