问题
如图,我需要沿着地图动态的画出一条连续的路线。
但在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