如何为多个属性调用函数?
类似:
fillTween (
option1.scale, 1;
option2.scale, 7;
option3.scale, 4;
option4.scale, 2;
)
function fillTween(attr, y) {
var tween = new TWEEN.Tween(attr).to({
y: y
}, 1000);
tween.easing(TWEEN.Easing.Elastic.InOut);
tween.start();
}
$("input[name='radiogroup1']").change(function() {
if ($('#radio1').is(":checked")) {
fillTween(option1.scale, 1);
fillTween(option2.scale, 7);
fillTween(option3.scale, 4);
fillTween(option4.scale, 2);
...
}
});
答案 0 :(得分:4)
你不能。解决方案就是重写函数以接受参数数组。
function fillTween(attributes) {
attributes.map(function(x) {
var attr = x[0];
var y = x[1];
var tween = new TWEEN.Tween(attr).to({
y: y
}, 1000);
tween.easing(TWEEN.Easing.Elastic.InOut);
tween.start();
})
}
并称之为:
fillTween ([
[option1.scale, 1],
[option2.scale, 7],
[option3.scale, 4],
[option4.scale, 2]
])
答案 1 :(得分:3)
如果您不想修改您的功能和/或可能希望针对不同的功能执行类似的操作,您可以修改功能原型以创建新的"多个"功能如下:
Function.prototype.multiple = function() {
for (var i = 1; i < arguments.length; i++) {
this.apply(arguments[0],arguments[i]);
}
}
然后您可以使用以下内容多次调用该函数:
fillTween.multiple(this,
[ option1.scale, 1 ],
[ option2.scale, 7 ],
[ option3.scale, 4 ],
[ option4.scale, 2 ]
);