Как получить слой символов на paperjs?

Этот код рисует 30 светодиодных изображений на холсте. Как я могу выбрать и изменить источник светодиодного символа в событии MouseDown?

var raster = new Raster();
raster.source="/PNG/Red.png";
var sembol = new Symbol(raster);

for (var i = 0; i < 30; i++) {
    var bura = sembol.place();
    bura.position = Point.random() * view.size;
    bura.scale(0.5);


};

person volki    schedule 05.11.2013    source источник


Ответы (2)


Предполагая, что у вас есть набор растровых объектов в вашем представлении, например ряд кнопок, должно работать следующее:

function onMouseDown(event) {
    if (event.item && event.item.type === 'raster') {
            sembol.definition = event.item.clone();
    }
}

Поскольку элемент удаляется из представления, если он определен как символ, вместо него передается клон.

person Alex Blackwood    schedule 05.11.2013

Вы можете добавить обработчик onMouseDown непосредственно к PlacedSymbol, в данном случае bura:

for (var i = 0; i < 30; i++) {
  var bura = sembol.place();
  bura.position = Point.random() * view.size;
  bura.scale(0.5);

  bura.onMouseDown = function () {        
    // you can use the closure variable `raster`
    raster.source = "/PNG/Blue.png";

    // or, if you don't have acces to `raster`:
    this.symbol.definition.source = "/PNG/Blue.png";
  }
}

Надеюсь, что это делает то, что вы ожидали.

person zaboco    schedule 22.11.2013