一个函数用于多个元素
one function for multiple elements
我当前正在画布上绘制元素:
var head = new Kinetic.Ellipse({
x: stage.width() / 2,
y: 100,
radius: {
x: 50,
y: 60
},
fill: '#DDDDDD',
stroke: 'black',
strokeWidth: 2
});
var neck = new Kinetic.RegularPolygon({
x: stage.width() / 2,
y: 180,
sides: 4,
radius: 70,
fill: '#DDDDDD',
stroke: 'black',
strokeWidth: 2
});
layer.add(neck);
layer.add(head);
以及在点击或触摸时更改这些元素的颜色,但我会在屏幕上有很多元素,不希望用相同的功能来更改每个元素。
有没有一种方法可以把下面两个组合成一个函数,但影响上面两个。
head.on('touchstart, mousedown', function() {
var current = this.getFill();
var fill = "";
switch (current) {
case "#DDDDDD":
fill = "#FFC926";
break;
case "#FFC926":
fill = "#FF0000";
break;
case "#FF0000":
fill = "#000000";
break;
default:
fill= "#DDDDDD";
}
this.setFill(fill);
layer.draw();
});
neck.on('touchstart, mousedown', function() {
var current = this.getFill();
var fill = "";
switch (current) {
case "#DDDDDD":
fill = "#FFC926";
break;
case "#FFC926":
fill = "#FF0000";
break;
case "#FF0000":
fill = "#000000";
break;
default:
fill= "#DDDDDD";
}
this.setFill(fill);
layer.draw();
});
您可以提取一个通用函数,并像下面的一样使用它
var evaentListener = function(obj) {
return function() {
var current = obj.getFill();
var fill = "";
switch (current) {
case "#DDDDDD":
fill = "#FFC926";
break;
case "#FFC926":
fill = "#FF0000";
break;
case "#FF0000":
fill = "#000000";
break;
default:
fill= "#DDDDDD";
}
obj.setFill(fill);
layer.draw();
}
}
head.on('touchstart, mousedown',evaentListener(this));
neck.on('touchstart, mousedown',evaentListener(this));
相关文章:
- 将函数的上下文应用于javascript变量
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 如何重写下面的函数,使其不会't用于循环
- Rails/Javascript链接到用于切换多个元素的函数
- 用于多个类事件Jquery的单个函数
- Javascript函数,用于将数组转换为“;2-元组”;
- 文本编辑后,append函数不适用于文本区域
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 用于Dynamic Div'的Javascript数学函数;s风格
- javascript点击函数不;不适用于ID和Class
- Jquery函数,用于检查每个表单字段
- 用于交换两个变量的 JavaScript 函数
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 使用jquery验证函数不适用于select元素
- js事件,用于函数内部的when语句变为true
- javascript复制一个用于函数的变量
- Jquery 函数不适用于函数参数
- Javascript原型仅用于函数
- PHP转义字符串中的JS(用于函数)
- Knockout克隆不适用于函数实例