1

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

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

此后,圆的半径由用户动态改变。现在我想要一个持续观察半径的监听器,每次半径低于 5 时,它都会删除圆。就像是:

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

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

4

1 回答 1

1

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

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

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 中创建自己的自定义事件(无论如何它都必须与上述函数执行相同的操作)。

如果您想参加自定义活动路线,请点击以下链接: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();
        }
    }
}
于 2013-01-14T15:19:31.513 回答