小程序Canvas闪屏处理

小程序Canvas闪屏处理,第1张

最近在微信小程序开发中需要用到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覆盖了定位的元素怎么弄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10212909.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存