Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript P5.js绘制新形状会导致旧形状消失_Javascript_Data Visualization_P5.js - Fatal编程技术网

Javascript P5.js绘制新形状会导致旧形状消失

Javascript P5.js绘制新形状会导致旧形状消失,javascript,data-visualization,p5.js,Javascript,Data Visualization,P5.js,我在做一个复杂的可视化项目,使用p5.js我想创建多个形状簇来可视化各种数据,所以我在数据中循环,检查用户指定的对象并将它们绘制到画布上,这发生在嵌套for循环中…我面临的问题是,当一个内循环完成绘制一组形状时,整个循环继续并再次进入内循环以绘制下一组,绘制的形状的旧组消失…我不明白为什么,我认为这与形状与内部循环上下文/范围有关,并试图基于此重新创建问题,但情况似乎并非如此 例如,这段代码工作得很好,它在20行上画了5个圆,由嵌套循环运行 function setup() { creat

我在做一个复杂的可视化项目,使用p5.js我想创建多个形状簇来可视化各种数据,所以我在数据中循环,检查用户指定的对象并将它们绘制到画布上,这发生在嵌套for循环中…我面临的问题是,当一个内循环完成绘制一组形状时,整个循环继续并再次进入内循环以绘制下一组,绘制的形状的旧组消失…我不明白为什么,我认为这与形状与内部循环上下文/范围有关,并试图基于此重新创建问题,但情况似乎并非如此

例如,这段代码工作得很好,它在20行上画了5个圆,由嵌套循环运行

function setup() {
   createCanvas(window.innerWidth, window.innerHeight).parent('myContainer');
}

function draw() {

   background(220);
   x = 100;
   y = 100;
   for (let i = 1; i <= 20; i++) {
       for(let j=1;j<=5;j++){
        fill(color(0, 255, 0));
        stroke(0);
        ellipse(x, y, 80);

        x += 90;
       }
       x = 100;
       y += 90;
   }
}
这是我的项目代码,它显示了错误发生的位置

function setup() {
  createCanvas(viewWidth, viewHeight).parent('myContainer');
}

function draw() {
//code...
  var objects_len = objects.length;
  for (var cluster_index = 1; cluster_index < cluster_len; cluster_index++) {
    array_center = partition(cluster_index - 1, cluster_len - 1);
    for (var object_index = 0; object_index < objects_len; object_index++) {
      if (!objects[object_index].deleted) {
        draw_simple_object(objects[object_index], data, cluster_index, array_center, cluster_len);
      }
    }
    addClusterName(cluster_index, data, array_center);
  }

function draw_simple_object(object, data, cluster_index, array_center, cluster_len) { 
.
.
.
//this is where the drawing happens
    var center_shape = [array_center[0] + object.centerOffsetX * array_center[2], array_center[1] + object.centerOffsetY * array_center[3]];
if (object.shape === 'ellipse' && enable) {
      var size_min = Math.min(array_center[2], array_center[3]) * 2;
      fill(colorFill);
      stroke(object.colorBorder);
      ellipse(center_shape[0], center_shape[1], size_min * width * proportion, size_min * length * proportion);
}
.
.
.
}
}
函数设置(){
createCanvas(viewWidth,viewHeight).parent('myContainer');
}
函数绘图(){
//代码。。。
var objects_len=objects.length;
对于(var cluster_index=1;cluster_index

请帮助我

这可能是因为您正在循环中调用background()函数吗?(该部分实际上没有显示在代码片段中)

已解决


我在draw()中的一个函数中使用了resizeCanvas(),该函数在调整大小之前清除了画布上的所有内容。移除resizeCanvas解决了问题。

不,我没有这么做
function setup() {
  createCanvas(viewWidth, viewHeight).parent('myContainer');
}

function draw() {
//code...
  var objects_len = objects.length;
  for (var cluster_index = 1; cluster_index < cluster_len; cluster_index++) {
    array_center = partition(cluster_index - 1, cluster_len - 1);
    for (var object_index = 0; object_index < objects_len; object_index++) {
      if (!objects[object_index].deleted) {
        draw_simple_object(objects[object_index], data, cluster_index, array_center, cluster_len);
      }
    }
    addClusterName(cluster_index, data, array_center);
  }

function draw_simple_object(object, data, cluster_index, array_center, cluster_len) { 
.
.
.
//this is where the drawing happens
    var center_shape = [array_center[0] + object.centerOffsetX * array_center[2], array_center[1] + object.centerOffsetY * array_center[3]];
if (object.shape === 'ellipse' && enable) {
      var size_min = Math.min(array_center[2], array_center[3]) * 2;
      fill(colorFill);
      stroke(object.colorBorder);
      ellipse(center_shape[0], center_shape[1], size_min * width * proportion, size_min * length * proportion);
}
.
.
.
}
}