如何停止无限缩放

时间:2019-02-02 07:54:24

标签: javascript while-loop

我正在尝试缩小圈子,然后在达到一定大小后停下来。 我希望圈子保留在paper.js画布上,以便用户可以创建一种艺术的声音图像渲染。

在遍历每个新创建的圆圈的阶段,我尝试在代码末尾使用while循环。

    var circles = [];

    function onKeyDown(event) {

        if (keyData[event.key]){
        var maxPoint = new Point(view.size.width, view.size.height);
        var randomPoint = Point.random();
        var point= maxPoint*randomPoint;
        var newCircle = new Path.Circle(point, 500);

        newCircle.fillColor =  keyData[event.key].color;
        keyData[event.key].sound.play();
        circles.push(newCircle);
        }
        else {

        }

    }



     function onFrame(event){
         for(var i = 0; i<circles.length; i++) {

             while ( circles[i].width> 50)
            {
                circles[i].fillColor.hue += 1;
                circles[i].scale(0.9)
            }
              // circles[i].fillColor.hue += 1;
             //circles[i].scale(0.9)
         }
     }

我想让它在paper.js中给我一个宽度为50的圆圈(我想是像素),但是它根本不再缩放了。

1 个答案:

答案 0 :(得分:0)

花了一些时间,但是我想通了,这可能会帮助其他在Paper.js中苦苦挣扎的人。 函数onFrame基本上每秒运行60次,就像循环一样。 因此,使用while循环运行会导致循环过多。 使用If语句是更好的选择。

还有必要在Paper.js中找到适当的size属性,以及将其链接到哪个元素。 路径没有链接到它的size属性,但是可以带界。 并且bounds具有width属性。

功能onFrame(事件){           for(var i = 0; i

          console.log("\nbefore=  " + circles[i].bounds.width);

          if(circles[i].bounds.width>   80){
            circles[i].fillColor.hue += 6;
            circles[i].scale(0.95)

          }

          console.log("after =  " + circles[i].bounds.width);
      }
  }