lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: ningbnii

关于LGraphics类的add方法问题

[复制链接]

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2020-1-8 16:07:29 |显示全部楼层
lufy 发表于 2020-1-8 15:59
你的代码里的判定是points.length大于0的时候才会绘制啊,但是你把points清空了 ...

因为从鼠标按下,到鼠标抬起,这个过程是一笔嘛,我这个points记录的就是这一笔的所有点的坐标,那么在鼠标抬起来的时候,我就需要把points清空,以便记录下一笔,所以这个清空是有必要的。我之所以在mouse_move那里加上points.length的判断,是因为add一直在跑着嘛,points已经清空了,还在绘制,就会报错了
回复

使用道具 举报

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2020-1-8 16:16:42 |显示全部楼层
ningbnii 发表于 2020-1-8 16:07
因为从鼠标按下,到鼠标抬起,这个过程是一笔嘛,我这个points记录的就是这一笔的所有点的坐标,那么在鼠 ...

但是,你用笔刷画图的那部分代码也被points限制了啊,所以虽然引擎去执行graphics.add里面的绘图代码,但是那部分代码执行不了啊
不回答与技术和引擎不相关的问题
回复

使用道具 举报

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2020-1-8 16:22:09 |显示全部楼层
本帖最后由 ningbnii 于 2020-1-8 16:25 编辑
lufy 发表于 2020-1-8 16:16
但是,你用笔刷画图的那部分代码也被points限制了啊,所以虽然引擎去执行graphics.add里面的绘图代码,但 ...

那这样我是不是就得把每一笔的笔画都在add中跑着啊,这样如果点多了,感觉效率肯定会受到影响的

我刚才测试了一下,不使用add,直接用graphics的moveTo和lineTo是可以保留笔迹的,但是这个没有shadowBlur 和 shadowColor,我还想用这两个方法去设置一下笔刷效果
回复

使用道具 举报

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2020-1-8 16:27:11 |显示全部楼层
ningbnii 发表于 2020-1-8 16:22
那这样我是不是就得把每一笔的笔画都在add中跑着啊,这样如果点多了,感觉效率肯定会受到影响的 ...

的确是这样,所以笔刷这样写是没问题的,画板就需要优化一下
方法1,每次使用一个临时画板,画完一笔之后,把临时画板上的东西draw到另一个画板上,然后清空临时画板
方法2,也是我推荐使用的,利用LBitmapData的setPixels或者putPixels等函数来绘图

下面QA中的第七条中,我给了一个demo,你可以参考一下demo中的方法,里面持续绘图所用的方法是完全没有效率问题的
http://lufylegend.com/api/zh_CN/out/classes/Q%20&%20A%20(%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98).html
不回答与技术和引擎不相关的问题
回复

使用道具 举报

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2020-1-8 16:32:08 |显示全部楼层
lufy 发表于 2020-1-8 16:27
的确是这样,所以笔刷这样写是没问题的,画板就需要优化一下
方法1,每次使用一个临时画板,画完一笔之后 ...

感谢lufy的指点,我研究一下demo
回复

使用道具 举报

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2020-1-8 16:37:56 |显示全部楼层
ningbnii 发表于 2020-1-8 16:32
感谢lufy的指点,我研究一下demo

不客气,有问题再交流
不回答与技术和引擎不相关的问题
回复

使用道具 举报

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2020-1-8 22:05:09 |显示全部楼层
lufy 发表于 2020-1-8 16:37
不客气,有问题再交流

    bitmapdata1 = new LBitmapData(null,0,0,w,h,LBitmapData.DATA_CANVAS);
    ctx = bitmapdata1._canvas.getContext('2d');
    bitmap1 = new LBitmap(bitmapdata1);


发现LBitmapdata中有个canvas对象,然后尝试了一下getContext,发现可行,使用ctx实现了调用原生api绘画
回复

使用道具 举报

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2020-1-9 08:15:52 |显示全部楼层
ningbnii 发表于 2020-1-8 22:05
bitmapdata1 = new LBitmapData(null,0,0,w,h,LBitmapData.DATA_CANVAS);
    ctx = bitmapdata1._ca ...

这样倒也是可行的
不回答与技术和引擎不相关的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

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

Archiver|lufy's legend

GMT+8, 2020-8-9 09:56 , Processed in 0.067818 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部