我正在尝试缩小圈子,然后在达到一定大小后停下来。 我希望圈子保留在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的圆圈(我想是像素),但是它根本不再缩放了。
答案 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);
}
}