Вот очень упрощенная версия моего проекта.Свойство класса потеряет область И не может быть установлено после setTimeout
У меня есть файл класса:
class MyClass{
public var myNumberStoredInClass:Number;
// constructor
function MyClass(myNumber:Number){
this.myNumberStoredInClass = myNumber;
};
// some method
function DoStuffMethod(){
trace(this.myNumberStoredInClass);
};
}; // end class
У меня есть файл нормальный .as, из которого я могу получить доступ this.myNumberStoredInClass без каких-либо проблем с MyClass.myNumberStoredInClass, пока я не позову SetTimeout для метода в классе:
function ASFileFunction(){
trace(MyClass.myNumberStoredInClass); // works fine
setTimeout(MyClass.DoStuffMethod, 7500);
};
Когда DoStuffMethod запускается в файле класса след myNumberStoredInClass возвращает «Неопределенный». Я использовал значение во многих других функциях в .as-файле просто отлично, но после того, как setTimeout потерян.
Что действительно странно, что я могу изменить DoStuffMethod к следующему и myNumberStoredInClass еще Undefined:
function DoStuffMethod(){
// I've tried watching this in debug mode and it just won't set, remains Undefined
myNumberStoredInClass = 10;
trace(myNumberStoredInClass); // returns Undefined
};
Я попытался с помощью this.myNumberStoredInClass в DoStuffMethod, но результат тот же. Я просто не могу установить или получить переменную! Если я делаю трассировку сразу после setTimeout, это значение существует, но после запуска setTimeout значение не может быть установлено.
Я должен использовать AS2 для этого.
Любые идеи? Большое спасибо.
EDIT: Пробовал добавлять объект к вызову setTimeout в соответствии с документацией, предложенной Sant gMirian, но все тот же результат.
Это проблема SetTimeout сфера, смотрите здесь, это setInterval страница, но сфера SetTimeout работает одинаково http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000600.html – gMirian
Благодарю. Пробовал добавлять объект к аргументам, но по-прежнему не может изменить переменную из Undefined. Не могли бы вы разместить пример с моим кодом, если бы у меня не было синтаксиса? – Absinthe
К сожалению, у меня нет Flash CS6 для проверки кода, поэтому можно дать просто предложение, попытаться сделать переменную и функцию static, например. статическая публичная функция DoStuffMethod() и static public var myNumberStoredInClass: Number; – gMirian