我的代碼AS3:爲什麼「this」會在函數內部改變它指的是什麼?
for each(var enemy in RhythmGame.npcs) {
if(this.hitTestObject(enemy)) {
enemy.step(distance, axis, origin);
enemy.damage(power);
}
}
正常工作,直到我把它放在一個函數
separate();
function separate():void {
for each(var enemy in RhythmGame.npcs) {
if(this.hitTestObject(enemy)) {
enemy.step(distance, axis, origin);
enemy.damage(power);
}
}
}
,然後我得到的錯誤
TypeError: Error #1006: hitTestObject is not a function.
我發現this
指的是[object global]
當它在函數中而不是類實例時它應該是。爲什麼會發生?我在這裏不瞭解範圍如何工作?
診斷它:**跟蹤(本); ** **跟蹤(typeof運算(本)); ** **跟蹤(的getQualifiedClassName(本)); ** * * trace(這是DisplayObject); **兩種情況並比較(並更新您的問題)。 – Organis
好的電話。它確實失去了「這是什麼」的蹤跡。 –
您是否在其他函數中定義了此函數? – Organis