2014-03-02 117 views
0

我知道你可以做类似于
$('#btn')。on('click',{param:'hello'},callback)。但有了动能,我似乎无法做到。任何想法?
var Stage = new Kinetic.Stage({ container: 'SurfaceCircle', width: 70, height: 68 }); var topBtnLayer = new Kinetic.Layer({ id: 'top' });kineticjs传递参数onclick

var topBtn = new Kinetic.Shape({ drawFunc: function (context) { context.moveTo(11, 10); context.arc(35, 34, 34, 1.25 * Math.PI, 1.75 * Math.PI, false); context.lineTo(44, 25); context.arc(35, 34, 12, 1.75 * Math.PI, 1.25 * Math.PI, true); context.lineTo(11, 10);
context.fillStrokeShape(this); context.stroke() }, stroke: 'black', fill: 'yellow', strokeWidth: 2/, id: 'top'/, visible: true }); topBtnLayer.add(topBtn).on('click tap',{param:'hello'}, callback);

我将获得运行时错误未捕获的类型错误:对象#没有方法“呼叫”

回答

0

动力学对象事件系统(。对)只需要2个参数

  • 事件类型监听(如 “点击”)
  • 回调函数

在回调中this是Kinetic对象。

因此,您可以在回调中可访问的对象上设置属性。

topBtn.param="hello"; 

topBtn.on("click",function(){ alert(this.param); }); // click alerts "hello" 

演示:http://jsfiddle.net/m1erickson/5QRAA/