Как я могу изменить размеры (не совсем прямое масштабирование) векторов додзё? - PullRequest
2 голосов
/ 18 января 2012

Я делаю приложение планирования с блоками для .. блоков расписания. Они разделены прямоугольниками 1px. По большей части я могу просто использовать преобразования для масштабирования сетки, но я, очевидно, хочу, чтобы эти 1px-разделители оставались одинаковыми по ширине.

Возможно, это скорее вопрос мнения и, следовательно, противоречит правилам, но в настоящее время я могу думать только о том, чтобы сохранить свои строки в отдельном массиве, а затем переместить / масштабировать их по мере необходимости, пересчитав новые измерения на мероприятие по изменению размера, но я чувствую, что должен быть лучший способ сделать это, чтобы я не знал, что я новичок в додзё. Если это приемлемый способ сделать это, пожалуйста, скажите, так как я не хочу зацикливаться на анти-паттерне с самого начала. Есть ли более подходящий способ представления блоковых линий, чем просто рисовать их прагматично с векторами?

edit: был задан пример кода. Я мог бы опубликовать свой код, но это на самом деле не имеет значения, более простым примером будет что-то вроде этого:

var rect = surface.createRect({ x: 100, y: 50, width: 200, height: 100 })
.setFill("yellow");

Учитывая вышеизложенное, как бы я сделал что-то вроде изменения ширины до 300 или перемещения положения объекта? Я попытался изменить базовую форму, в данном случае rect.shape, но, похоже, это не относится к изменениям, что неудивительно.

Было бы удобно, если бы я мог изменить это, но я не могу найти способ применить эти изменения после того, как они будут сделаны. Просто предположив, что я попытался запустить rect._applyTransform (), но это тоже не сработало, и я не увидел ничего другого, проверяющего dom, который мог бы быть мне полезен, и я не нашел ничего в документации, кроме процентного масштабирования , который я мог бы заставить работать, но это было бы довольно неудобно, и я все еще не могу понять, как просто переместить объект / изменить его положение.

edit2: Найден ответ, см. Ниже.

1 Ответ

3 голосов
/ 19 января 2012

Разобрался, я ищу метод setShape. Это позволяет вам устанавливать любые свойства формы напрямую, позиционные координаты, высоту, ширину и радиус в случае прямоугольника. Насколько я могу судить, если вы хотите переместить его, используя относительное позиционирование вместо абсолютного, вы просто должны добавить (или вычесть) из его текущего положения, которое можно получить из свойств obj.shape, довольно просто.

Так, например, чтобы переместить прямоугольник на 50px вправо и сделать его на 20px выше, вы бы сделали:

rect.setShape({height: rect.height + 20, x: rect.shape.x + 50});

Кроме того, если кто-то помогает удалить фигуру, просто вызовите метод removeShape, мне потребовалась минута, чтобы выяснить это; Мне не нравится способ настройки справочника додзё, и до сих пор мне повезло, просматривая дом с помощью firebug к лучшему или худшему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...