Paper.js: невозможно установить fillColor экземпляра символа - PullRequest
3 голосов
/ 18 марта 2012

Я новичок в paper.js.

Для этого проекта мне нужна форма, которая будет использоваться во многих случаях (с разными цветами заливки), поэтому, очевидно, лучше использовать символ (вместоиспользования метода Path.clone ().Однако, как только я создаю экземпляр символа в placeSymbol, кажется, что изменение свойства fillColor не влияет на визуализированную форму: оно остается исходным цветом символа.

Другие свойства, такие как позиция или непрозрачность,успешно установлены.

Мой вопрос: как я могу изменить цвет заливки каждого экземпляра символа?

jsFiddle здесь: http://jsfiddle.net/GlauberRocha/uTskY/ (обратите внимание, что я поставил всекод в панели HTML. Кажется, не работает иначе, возможно, потому, что paperScript не является простым javascript).

Код Paperscript:

var
  path = new Path(),
  symbol = {},
  inst = [],
  colors = ["#1f8f81", "#c7c5a8", "#1b4a9f", "#d6a493", "#1a8879", "#599ce3", "#1a459c", "#b9a87a", "#365db2", "#2479d4", "#a46430", "#1b449a", "#a4632e", "#1a4297", "#3359ad", "#b1852b", "#1a8077", "#1b3849", "#ae832a", "#186cc9", "#1b8178"]

path.add(new Point(0, 56), new Point(56, 0), new Point(56, 40), new Point(0, 96));
path.fillColor = "red";
path.closed = true;
symbol = new Symbol(path);
path.remove();

for (var i = 0; i < 20; ++i) {
  inst[i] = symbol.place();
  inst[i].fillColor = colors[i]; // Change fill color : NO
  console.log(inst[i].fillColor); // But... the correct color value appears here
  inst[i].opacity = (i / 30) + .4; // Change opacity: OK
  inst[i].position.x = 100; // Change position: OK
  inst[i].position.y = 42 * i + 50;
}

Ответы [ 2 ]

5 голосов
/ 22 марта 2012

Ответ Джонатана Пьюки из команды paper.js:

Это по замыслу. Вы не можете изменить визуальные свойства экземпляр символа. Чтобы изменить цвет элемента, вы можете создать несколько копий пути с помощью path.clone().

0 голосов
/ 23 февраля 2016
$("#symbol_id").find("g").attr('fill', "#colorOfChoice");

Alt, установите идентификатор g: s, который вы хотите изменить, и

$("#symbol_id").find("#g_id").attr('fill', "#colorOfChoice");
...