【问题标题】:How to change color of a circle in PhysicsJS?如何在 PhysicsJS 中更改圆的颜色?
【发布时间】:2018-03-22 07:47:53
【问题描述】:

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

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

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

 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);

最终,step 函数运行并更新页面。可惜,老圈子的痕迹还在。

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

【问题讨论】:

    标签: javascript colors physicsjs


    【解决方案1】:

    该库将主体的缓存图像存储在body.view 中,因此为了使其刷新,您需要删除该属性,以便渲染器重新绘制图像。

    var cell = cells[n];
    cell.styles.fillStyle = colors.red;
    cell.view = null;
    

    【讨论】:

    • 当我尝试这个时,之前的单元格图像没有被清除。结果,我有两个单元格,一个是旧颜色的,一个是新的,尽管旧的一个不再活动。我该如何解决?
    • 顺便说一句,我正在使用 PIXI JS 渲染器。
    猜你喜欢
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2011-07-17
    • 2012-06-27
    相关资源
    最近更新 更多