是否可以将事件链接到对象自己的参数?

时间:2013-01-14 11:12:08

标签: javascript events javascript-events kineticjs

我有一个具有特定参数(x,y和半径)的对象(比如说一个圆圈)。

var circle = new Kinetic.Circle({
        x: 100,
        y: 100,
        radius: 20
}

此后,用户动态地改变圆的半径。 现在我想要一个持续观察半径的听众,每当半径低于5时,它就会删除圆圈。类似的东西:

circle.on("radiusLessThanFive",function (e) {
this.remove();
}

那么如何配置这个不断监听圆的半径的radiusLessThanFive事件呢?

1 个答案:

答案 0 :(得分:1)

嗯,不幸的是,没有内置的东西可以做到这一点。因此,您只需将其作为应用程序逻辑的一部分。

假设您有一个名为shapesLayer的图层。你可以这样做:

function radiusLessThanFive(){
    var circles = shapesLayer.get('.circle'); // I can't remember the getting all circles syntax, but something like this
    for ( var i=0; i<circles.length; i++) {
        if(cicrles[i].getRadius() < 5 ){
            circles[i].remove();
            shapesLayer.draw();
        }
    }
}

虽然这不是最有效的解决方案,但它可以完成工作......除非你知道如何在javascript中创建自己的自定义事件(无论如何都必须做与上述功能相同的事情)。 / p>

如果您想参加自定义活动之路,请点击以下链接:http://www.sitepoint.com/javascript-custom-events/

编辑:关于以下评论

function radiusLessThanFive(myCircle){ //function which checks radius of single circle and deletes if less than 5
        if(myCircle.getRadius() < 5 ){
            myCircle.remove();
            myCircle.getParent().draw();
        }
    }
}