2015-10-27 2 views
1

Я учусь Konvajs и HTML5 Canvas и сталкиваюсь некоторые вопросы:При нажатии на массиве изображений, чтобы добавить их к Konva стадии

  1. Создания меню, населенное множество изображений и присвоить каждое изображение значение идентификатора, равное к его имени изображения. Выполнено без проблем.

  2. При нажатии на какой-либо одной или нескольких изображений меню, чтобы сделать каждое изображение на Konva этапе для дальнейшей обработки, как вращающаяся и т.д. Возникли проблемы с этим:

var pics = ["pic1.png", "pic2.png"]; 
 
$.each(pics, function(index, value) 
 
{ 
 
    id = value.slice(32, -4); 
 
    $('#menu').append("<img src=' " + value + " ' " + id + " " + "/>"); 
 
});

Полный код по адресу: https://jsfiddle.net/tommy6s/a44hbsc2/

ответ

4

Просто сделайте код проще:

//// INIT CANVAS 
var stage = new Konva.Stage({ 
    container : "container", 
    width : 400, 
    height : 300 
}); 
var layer = new Konva.Layer(); 
stage.add(layer); 


/////MENU 
var pics = ["http://konvajs.github.io/assets/lion.png", "http://konvajs.github.io/assets/monkey.png"]; 

var $menu = $('#menu'); 
$.each(pics, function(index, value) { 
    $("<img/>") // create image 
     .attr('src', value) // set src to image link 
     .appendTo($menu) 
     .on('click', function() { 
      // this here is image object 
      var src = this.src; 
      // create new Konva.Image from src attribute 
      Konva.Image.fromURL(src, function(image) { 
       // make it draggable 
       image.setAttrs({ 
        draggable: true 
       }); 
       // append to layer 
       layer.add(image); 
       // update layer 
       layer.draw(); 
      }) 
     }); 
}); 

Demo: https://jsfiddle.net/6tnb2q2q/ (нажмите на изображение, чтобы добавить его в сцену)

+0

Привет lavrton, спасибо за элегантное решение и поучение возможность! Мне нравится, как вы структурировали код. – t6s

0

var pics = ["pic1.png", "pic2.png"]; 
 
$.each(pics, function(index, value) 
 
{ 
 
    id = value.slice(32, -4); 
 
    $('#menu').append("<img src=' " + value + " ' " + id + " " + "/>"); 
 
});

+1

Хотя этот фрагмент кода приветствуется и может оказать некоторую помощь, было бы [значительно улучшено, если бы оно включало объяснение] (// meta.stackexchange.com/q/114762) из ​​* how * и * why *, это решает проблема. Помните, что вы отвечаете на вопрос читателей в будущем, а не только на человека, который спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, и укажите, какие ограничения и допущения применяются. –