我有一个具有特定参数(x,y和半径)的对象(比如说一个圆圈)。
var circle = new Kinetic.Circle({
x: 100,
y: 100,
radius: 20
}
此后,用户动态地改变圆的半径。 现在我想要一个持续观察半径的听众,每当半径低于5时,它就会删除圆圈。类似的东西:
circle.on("radiusLessThanFive",function (e) {
this.remove();
}
那么如何配置这个不断监听圆的半径的radiusLessThanFive
事件呢?
答案 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();
}
}
}