问题
如图,我需要沿着地图动态的画出一条连续的路线。

但在PIXI.ticker或其他时钟里(包括:setInterval/PIXI.ticker/requestAnimationFrame)调用lineTo时,却发现每次执行的绘制起点都回到了(0,0)点。

诚然可在每次调用lineTo前都手动设置一下moveTo到对应起点,但就会在线段转折时发现连接不上的情况。
Graphics.moveTo(fromPos.x, fromPos.y);
Graphics.lineTo(fromPos.x + deltX, fromPos.y + deltY)
复制代码

定位
这种case只在时钟循环内部出现,因此怀疑是作用域的问题。打印了一下Graphics的batchDirty,发现它在同步情况始终为-1,异步情况下则在逐步的更新。

解法
暂时没有找到如果在时钟循环中保持batchDirty的方法,但想到了2种hack解法:
一:在每次一时钟中都刷新所有Graphics路线。这样canvas就不是基于增量,而是像帧动画一样实现动画了。
具体实现思想像这个demo一样:jsfiddle.net/ondkrc71/
ticker.add(() => {
Graphics.clear()
Graphics.drawNew()
})
复制代码
二:在每一个线段转折中点加一个半圆。
Graphics.drawCircle(toPos.x, toPos.y, 0.5);
复制代码

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)