I've got this calling function
$(document).ready(function(){ $('#change-background').click(function(){ layers['map'] = new Kinetic.Layer(); buildMap(layers['map'],'img/test.png'); stage.add(layers['map']); }); });
And, I've got this function to display the image
function buildMap(layer, img_src){ var img = new Image(); img.src = img_src; img.onload = function(e) { var map = new Kinetic.Image({ id: 'map_img', x: 0, y: 0, image: img, draggable: true, dragBoundFunc: function(pos) { // THIS SHOULD EXECUTE console.log('hahaha'); return { x:0, y:0 }; } }); layer.add(map); layer.draw(); }; }
I have a similar code on a separate project of mine, and it works like a charm.. But its quite awkward that it does not work well here. The image showed up in the canvas, and its draggable, which in this case it should not be because I explicitly returned { x:0, y:0 }
(the return values is for my testing only). I also looked at the console logs the 'hahaha' text never appears.. It did not call the function when the image has been dragged. Both of these are inside a
tags and in one html document.<script>
Uncaught TypeError: Cannot read property 'x' of undefined
and if i'll collapse it there would be a(anonymous function)
written. – Dhagz