a791238 发表于 2016-12-30 00:13:15

add()使用原生canvas绘图,会覆盖以前的绘图

var layer1,layer2;
function main()
{
        var bitmapdata = new LBitmapData("#000000",0,0,50,50);
        layer1 = new LSprite();
        addChild(layer1);
        layer1.graphics.beginBitmapFill(bitmapdata); //填充应该是黑色!
        layer1.graphics.drawRect(2,"#ff0000",); //描边应该是红色!
        layer2 = new LSprite();
        layer2.y = 80;
        addChild(layer2);
        layer2.graphics.add(function(ctx){
                ctx.strokeStyle="#00ff00";
                ctx.lineWidth=4;
                ctx.moveTo(20,0);
                ctx.lineTo(120,0);
                ctx.stroke(); //这儿描边路径会导致layer1的边框变色!  
                ctx.fillStyle = "#0000ff";
                ctx.moveTo(0,50);
                ctx.bezierCurveTo(100,0,80,150,0,160);
                ctx.lineTo(0,50);
                ctx.stroke();
                ctx.fill(); //这儿填充会导致layer1的的填充变色!
                });
}
LInit(50,"mylegend",500,350,main);


因为要贝塞尔曲线,引擎没有提供,所以要用add进行绘图。然后发现使用add进行绘图,会同时改变以前的绘图(不会改变后来的绘图)。有什么好的解决方案吗?

lufy 发表于 2016-12-30 06:27:45

加一句ctx.beginPath();

a791238 发表于 2016-12-30 21:55:52

谢谢解答。问题已解决。
页: [1]
查看完整版本: add()使用原生canvas绘图,会覆盖以前的绘图