這是我的項目的一個非常簡化的版本。類屬性丟失範圍AND不能在setTimeout後設置
我有一個類文件:
class MyClass{
public var myNumberStoredInClass:Number;
// constructor
function MyClass(myNumber:Number){
this.myNumberStoredInClass = myNumber;
};
// some method
function DoStuffMethod(){
trace(this.myNumberStoredInClass);
};
}; // end class
我有,我可以等到我打電話的setTimeout在類中的方法與MyClass.myNumberStoredInClass沒有問題訪問this.myNumberStoredInClass正常。至於文件:
function ASFileFunction(){
trace(MyClass.myNumberStoredInClass); // works fine
setTimeout(MyClass.DoStuffMethod, 7500);
};
當在類文件中觸發DoStuffMethod時,myNumberStoredInClass的跟蹤返回'未定義'。我已經在.as文件中的許多其他函數中使用了該值,但是在setTimeout之後它已經丟失了。
什麼是真正奇怪的是,我可以改變DoStuffMethod以下和myNumberStoredInClass仍然未定義:
function DoStuffMethod(){
// I've tried watching this in debug mode and it just won't set, remains Undefined
myNumberStoredInClass = 10;
trace(myNumberStoredInClass); // returns Undefined
};
我在DoStuffMethod使用this.myNumberStoredInClass嘗試,但結果是一樣的。我只是無法設置或檢索變量!如果我在setTimeout之後立即執行跟蹤,那麼該值將在那裏,但是一旦setTimeout觸發,則無法設置該值。我不得不使用AS2來做到這一點。
任何想法?非常感謝。
編輯:試圖添加對象到setTimeout調用根據聖米格爾建議的文檔,但仍然是相同的結果。
這是一個setTimeout範圍問題,看這裏,它是setInterval頁面,但setTimeout的範圍工作原理相同 http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000600.html – gMirian
謝謝。嘗試將對象添加到參數中,但仍然無法將該變量從Undefined更改。你是否介意在我的代碼中發佈一個例子,以防我沒有正確的語法? – Absinthe
不幸的是我沒有Flash CS6來測試代碼,所以只能給出建議,嘗試使變量和函數靜態,例如靜態公共函數DoStuffMethod()和靜態公共var myNumberStoredInClass:Number; – gMirian