lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6580|回复: 4
打印 上一主题 下一主题

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

[复制链接]

1

主题

0

好友

13

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2016-12-30 00:13:15 |只看该作者 |倒序浏览
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",[20,20,60,25]); //描边应该是红色!
        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进行绘图,会同时改变以前的绘图(不会改变后来的绘图)。有什么好的解决方案吗?
回复

使用道具 举报

37

主题

8

好友

9309

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

沙发
发表于 2016-12-30 06:27:45 |只看该作者
加一句ctx.beginPath();
不回答与技术和引擎不相关的问题
回复

使用道具 举报

1

主题

0

好友

13

积分

士兵

Rank: 1

板凳
发表于 2016-12-30 21:55:52 |只看该作者
谢谢解答。问题已解决。
回复

使用道具 举报

无效楼层,该帖已经被删除
5#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-4-19 14:00 , Processed in 0.048100 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部