
最近在微信小程序开发中需要用到canvas绘制中国象棋的的棋盘棋子,该需求用来复盘对弈记录,由于复盘的每一步都是用fen串 (参考:FEN文件格式) 来转换出所有棋子的位置,所以每一步都会将棋子重新绘制一遍,为了避免显示上一次步绘制i的内容需要先清空canvas再绘制新的棋子,清空和重新绘制的过程就会出现闪屏的现象,所以每次点上一步下一步的时候都会闪一下,体验很不好。
为了解决这个问题,搜索了一些解决方案,最终决定参考双缓存 《在Canvas clearRect中引起的闪屏怎么解决?双缓存解决闪屏问题详解!》 的方式解决这个问题。
由于棋子元素过多,每一颗棋子都要调用一次drawImage,且新版的canvas是异步进行的,如果不采用缓存的方式,看起来不仅有闪烁的现象还会有一种棋子一个一个出现的感觉。现将内容绘制好生成,在另一个canvas中只需要绘制这一张并覆盖之前的内容,而不需要清空,这样就避免了闪屏的问题。
效果对比:
如果有更好的方案,请不吝赐教。
小程序canvas生成转发图时需要canvas隐藏 不能使用 display:none; hidden属性 加上后canvas不能绘图
网上的方法都试过了 都不行最后自己实现了 但是不能进行翻页,有更好的方法欢迎提供 万谢
最先试过这个方法 外层套view ,width height都设为0 模拟器生效 真机不生效
后来查到了 可通过cover-view 自定义view标签 进行遮盖
然后发现真机上 cover-view 按下后带有灰色背景 最后想直接定位到屏外 页面禁止滑动 最后成了
json中加入
最后是行了 反正页面就两按钮不需要滑动, 求更好的方法实现
Canvas 组件表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。
应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件)。必须重写paint 方法,以便在 canvas 上执行自定义图形。
举例:
Paneladd(new MyCanvas());//往panel中添加画布canvas
class MyCanvas extends Canvas {//定义一个canvas
public MyCanvas () {
setBackground (ColorGRAY);//设置背景为灰色
setSize(300, 300);//定义canvs大小是300300
}
public void paint (Graphics g) {//画布的paint方法,
Graphics2D g2;
g2 = (Graphics2D) g;
g2drawString ("It is a custom canvas area", 70, 70);//屏幕输出该字符串
}
}
canvas简单理解成一张可以自定义大小(有上限)的画布,在画布上可以写字,画图形,放置。一般可以用来动态生成截图,方便用户保存和转发。
官方资料:
>
以上就是关于小程序Canvas闪屏处理全部的内容,包括:小程序Canvas闪屏处理、微信小程序Canvas隐藏 不影响canvas绘图处理办法、小程序中的canvas覆盖了定位的元素怎么弄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)