Amra Kimmerian
18.04.2007, 11:35
Здравствуйте!
Зависает (выдает предложение остановить выполнение скрипта) компьютер при исполнении вот этого кода:
picPrewLoad = function (way:String) {
var mc_loader:MovieClipLoader = new MovieClipLoader();
var mc_Listener:Object = new Object();
mc_loader.addListener(mc_Listener);
while (_global.picPrewFlag) {
//_global.picPrewFlag = false;
_global.picPrewCounter++;
trace(_global.picPrewCounter);
_root.mc_picPrew.createEmptyMovieClip("picPrew"+_global.picPrewCounter, _global.picPrewCounter);
mc_loader.loadClip(way+_global.picPrewCounter+".jpg", _root.mc_picPrew["picPrew"+_global.picPrewCounter]);
mc_Listener.onLoadError = function() {
_global.picPrewFlag = false;
trace("picPrew load error!");
};
}
};
Картинки специально нет - хочу чтобы цикл прерывался сразу. Функция вызывается нажатием на кнопку. Трассировщик успевает отобразить значения _global.picPrewCounter до 7000-8000. Но вот trace("picPrew load error!") никогда не появлялся - т.е. события onLoadError как будто не было.
Если активизирую неактивную в коде строку, не виснет, ну оно понятно.
Если цикл while ставлю в /* ... */ ничего, естественно не виснет.
Искал по поиску слово "while" - нет ни в одном подразделе раздела Flash.
Почитал help, livedoc - все ясно и понятно.
С MovieClipLoader()-ом посложнее, взял их хелпа пример и переделал под свои клипы. Причем сначала инициализация mc_loader, mc_Listener и mc_loader.addListener стояла в коде в цикле while. Зависало. Подумал, что возможно это из-за постоянного их объявления в цикле, убрал их наверх (как сейчас) - не помогло. По умолчанию _global.picPrewFlag = true при загрузке всего проекта. Вместо него пробовал использовать местную переменную - не помогло.
1. Наверняка уверен что неправильно использую класс MovieClipLoader.
2. Или может листенер с ошибкой используется.
3. А может быть mc_Listener.onLoadError не успевает получить (или отдать) в тело своей функции событие об ошибке, потому что вызывается снова тут же, если вообще так можно сказать.
4. Ну или с адресами напутал (такие конструкции [...]+"...").
Уважаемые форумчане, подскажите, где ошибка/ошибки?
Зависает (выдает предложение остановить выполнение скрипта) компьютер при исполнении вот этого кода:
picPrewLoad = function (way:String) {
var mc_loader:MovieClipLoader = new MovieClipLoader();
var mc_Listener:Object = new Object();
mc_loader.addListener(mc_Listener);
while (_global.picPrewFlag) {
//_global.picPrewFlag = false;
_global.picPrewCounter++;
trace(_global.picPrewCounter);
_root.mc_picPrew.createEmptyMovieClip("picPrew"+_global.picPrewCounter, _global.picPrewCounter);
mc_loader.loadClip(way+_global.picPrewCounter+".jpg", _root.mc_picPrew["picPrew"+_global.picPrewCounter]);
mc_Listener.onLoadError = function() {
_global.picPrewFlag = false;
trace("picPrew load error!");
};
}
};
Картинки специально нет - хочу чтобы цикл прерывался сразу. Функция вызывается нажатием на кнопку. Трассировщик успевает отобразить значения _global.picPrewCounter до 7000-8000. Но вот trace("picPrew load error!") никогда не появлялся - т.е. события onLoadError как будто не было.
Если активизирую неактивную в коде строку, не виснет, ну оно понятно.
Если цикл while ставлю в /* ... */ ничего, естественно не виснет.
Искал по поиску слово "while" - нет ни в одном подразделе раздела Flash.
Почитал help, livedoc - все ясно и понятно.
С MovieClipLoader()-ом посложнее, взял их хелпа пример и переделал под свои клипы. Причем сначала инициализация mc_loader, mc_Listener и mc_loader.addListener стояла в коде в цикле while. Зависало. Подумал, что возможно это из-за постоянного их объявления в цикле, убрал их наверх (как сейчас) - не помогло. По умолчанию _global.picPrewFlag = true при загрузке всего проекта. Вместо него пробовал использовать местную переменную - не помогло.
1. Наверняка уверен что неправильно использую класс MovieClipLoader.
2. Или может листенер с ошибкой используется.
3. А может быть mc_Listener.onLoadError не успевает получить (или отдать) в тело своей функции событие об ошибке, потому что вызывается снова тут же, если вообще так можно сказать.
4. Ну или с адресами напутал (такие конструкции [...]+"...").
Уважаемые форумчане, подскажите, где ошибка/ошибки?