你说情理之中的事情。当你调用该函数通常情况下,“本”是你的对象时。您使用的setInterval运行它,你失去了参考你的“本”。
- 编辑根据意见,以帮助他人 -
这里有3种方法来解决这个问题:
这种方式涉及到传递 “这个” 给你的函数:
var that = this;
setInterval(function() {testing(that)}, 1000);
function testing(obj) {
for (a = 1; a <= 4; a++) {
obj["btn" + a].enabled = true;
}
}
这种方式涉及到传递 “这个” 给setInterval:
setInterval(this, "testing", 1000);
function testing() {
for (a = 1; a <= 4; a++) {
this["btn" + a].enabled = true;
}
}
第三种方式涉及Delagate类:
import mx.utils.Delegate;
setInterval(Delegate.create(this, testing), 1000);
function testing() {
for (a = 1; a <= 4; a++) {
this["btn" + a].enabled = true;
}
}
记得接受这个答案,如果你发现它有用。 – 2010-01-12 04:06:55
当按照你的例子设置的函数调用函数时,我传递“this”就像测试(this)一样;它是未定义的。你确实提醒我AS2支持eval,所以我简单地将这个[“btn”+ a]改为eval(“btn”+ a),它就可以工作。非常感谢提醒:) – 4imble 2010-01-12 04:44:45
我很高兴你找到了解决方案。如果您认为这有帮助,请接受此答案。 – 2010-01-12 04:48:22