关于pixi.js在PIXI.ticker内调用lineTo无法连续画线的问题

问题

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

image.png

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

image.png

诚然可在每次调用lineTo前都手动设置一下moveTo到对应起点,但就会在线段转折时发现连接不上的情况。

Graphics.moveTo(fromPos.x, fromPos.y);
Graphics.lineTo(fromPos.x + deltX, fromPos.y + deltY)
复制代码

image.png

定位

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

image.png

解法

暂时没有找到如果在时钟循环中保持batchDirty的方法,但想到了2种hack解法:

一:在每次一时钟中都刷新所有Graphics路线。这样canvas就不是基于增量,而是像帧动画一样实现动画了。

具体实现思想像这个demo一样:jsfiddle.net/ondkrc71/

ticker.add(() => {
    Graphics.clear()
    Graphics.drawNew()
})
复制代码

二:在每一个线段转折中点加一个半圆。

Graphics.drawCircle(toPos.x, toPos.y, 0.5);
复制代码

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享