如何在PhysicsJS中更改圆的颜色?

时间:2018-02-19 01:29:14

标签: javascript colors physicsjs

我有一个cells数组的白色圆圈。每world.step左右,我想将一个随机圆变为红色。我可以像这样访问和更改圆圈的颜色:

var n = Math.floor(Math.random()*100);
cells[n].styles.fillStyle = colors.red;

这个工作一次。在world.step中拨打Physics.util.ticker.on后,不再有圆圈变红。这是我的完整功能:

 Physics.util.ticker.on(function(time) {
     var n = Math.floor(Math.random()*100);
     cells[n].styles.fillStyle = colors.red;
     world.add(cells);
     world.step();
});

我尝试了提供的建议并获得了此代码:

switch (newState) {
    case states.cancerInterphase:
        cells[n].styles.fillStyle = colors.red;
        break;
    case states.cancerMitosis:
        cells[n].styles.fillStyle = colors.pink;
        break;
    case states.interphase:
        cells[n].styles.fillStyle = colors.white;
        break;
    case states.mitosis:
        cells[n].styles.fillStyle = colors.blue;
        break;
}
cells[n].state.vel = new Physics.vector(speed[0], speed[1]);
cells[n].view = null;
world.add(cells);

最后,步骤功能运行并更新页面。不幸的是,旧圈子的痕迹仍然遗留下来。

我通过使用画布渲染器而不是pixi.js修复了这个问题。

1 个答案:

答案 0 :(得分:1)

库在var cell = cells[n]; cell.styles.fillStyle = colors.red; cell.view = null; 中存储正文的缓存图像,因此为了让它刷新,您需要删除该属性,以便渲染器重新绘制图像。

showData()