Как остановить бесконечное масштабирование - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь уменьшить круг, а затем остановиться после определенного размера.Я хочу, чтобы cirlces оставались на моем холсте 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 голосов
/ 03 февраля 2019

Это заняло некоторое время, но я понял это, и это может помочь кому-то еще, борющемуся с Paper.js.Функция onFrame в основном выполняется 60 раз в секунду, как цикл.Таким образом, используя while в цикле, который работает слишком много.Использование оператора If было бы лучшим вариантом.

Также необходимо было найти в Paper.js правильное свойство размера и с каким элементом связать его.К пути не привязано свойство размера, но оно может принимать границы.И у границ есть свойство 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);
      }
  }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...