2012-05-25 2 views
2

Я пытаюсь обнаружить наведение мыши на объект Kinetic.Line.Kinetic.Line mouseover

Согласно документам, Kinetic.Line имеет функцию on, так как она является дочерним узлом узла. Функция on указывает mousemove и mouseover в качестве поддерживаемых событий.

Однако, похоже, что это не работает для мыши или mousemove на линии.

Это по дизайну? Будет ли реализована эта функция? Я делаю что-то неправильно?

function canvasTest() { 
    stage = new Kinetic.Stage({ 
     container: "tutorial", 
     width: 400, 
     height: 400 
    }); 

    var layer = new Kinetic.Layer(); 

    var redLine = new Kinetic.Line({ 
     points: [73, 70, 340, 23, 450, 60, 500, 20], 
     stroke: "red", 
     strokeWidth: 15, 
     lineCap: "round", 
     lineJoin: "round" 
    }); 

    redLine.on('mouseover mousemove', function (ev) { 
     alert('line moused over.'); 
    }); 

    layer.add(redLine); 

    stage.add(layer); 
} 

ответ

2

Кинетические линии используют обнаружение пикселей для обработки событий, поскольку у них нет путей. Вам нужно использовать метод shape.saveData(), чтобы он обнаруживался.

Вот пример:

http://www.html5canvastutorials.com/kineticjs/html5-canvas-pixel-detection-with-kineticjs/

Ура!

+0

вызов метода saveData() для объекта линии создает: «Uncaught TypeError: невозможно прочитать свойство« attrs »неопределенного» – BishopZ

+0

такая же проблема возникает со мной. будет любить решение для этого! – Gleeb

+0

Убедитесь, что он находится на сцене/слое перед попыткой saveImageData –

2

Я хотел бы добавить к Эрику ответ.

Слой, к которому прикреплена линия, должен быть добавлен на сцену ПЕРЕД! выдача функции .saveData(). иначе у вас будет исключение.

Удачи.