Javascript 可以将事件链接到对象';她自己的参数?

Javascript 可以将事件链接到对象';她自己的参数?,javascript,events,dom-events,kineticjs,Javascript,Events,Dom Events,Kineticjs,我有一个具有特定参数(x、y和半径)的对象(比如一个圆) 此后,用户将动态更改圆的半径。 现在我需要一个持续观察半径的监听器,每次半径小于5,它就会删除这个圆。比如: circle.on("radiusLessThanFive",function (e) { this.remove(); } 那么我如何配置这个半径小于5的事件来持续监听圆的半径呢?不幸的是,没有内置的东西可以做到这一点。因此,您只需将其作为应用程序逻辑的一部分 假设您有一个名为ShapeLayer的层。你可

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

此后,用户将动态更改圆的半径。 现在我需要一个持续观察半径的监听器,每次半径小于5,它就会删除这个圆。比如:

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

那么我如何配置这个
半径小于5的事件来持续监听圆的半径呢?

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

假设您有一个名为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();
        }
    }
}
函数半径小于五(){
var circles=shapesLayer.get('.circle');//我不记得getting all circles语法,但类似这样的语法

对于(var i=0;i嗯,不幸的是,没有内置的东西可以做到这一点,所以您只需要将其作为应用程序逻辑的一部分

假设您有一个名为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();
        }
    }
}
函数半径小于五(){
var circles=shapesLayer.get('.circle');//我不记得getting all circles语法,但类似这样的语法

对于(var i=0;i不需要一个单独的函数来不断检查所有圆半径是否小于5,是否可以在允许用户编辑半径的函数中包含该代码?例如,当用户减小半径时,使用一个if块来查看半径是否小于5,如果是,则立即删除它。这行吗?是的,这行得通。你所要做的就是修改上面的函数,让它通过在函数中传递一个圆作为属性并检查它的半径来完成单个圆的工作。我写上面的函数是为了考虑圆的动态创建,以及在事件改变半径的情况下IU不是直接在圆上的用户事件,就像动画一样。如果你正在制作一个圆的动画,并且有改变其大小的逻辑,那么你必须运行函数来检查,因为用户没有直接作用于对象。目前,我的代码具有与你解释的类似的逻辑。我喜欢上面提到的创建自定义事件的想法由您提供,但由于IE9及以下版本不支持它,在我使用它之前还有一段时间。Tks。与其使用单独的函数来不断检查所有圆半径是否小于5,难道不可能在函数中包含该代码,允许用户编辑半径吗?例如,当用户减小半径时,使用一个if块,看看半径是否小于5,如果是,就立即删除它。这样行吗?是的,那就行了。你所要做的就是修改上面的函数,让它通过在函数中传递一个圆作为属性并检查它的半径来完成单个圆的工作。我编写了上面的函数来考虑它考虑圆的动态创建,如果改变半径的事件不是直接在圆上的用户事件,如动画。如果正在制作圆的动画,并且存在改变其大小的逻辑,则必须运行函数进行检查,因为用户没有直接作用于对象。当前我的代码具有sim卡正如您所解释的ilar逻辑。我喜欢您提到的创建自定义事件的想法,但是由于IE9和以下版本不支持它,在使用它之前还有一段时间。Tks。
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();
        }
    }
}