Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   скрипт заставляет компьютер работать медленно (http://www.flasher.ru/forum/showthread.php?t=109562)

Fann 17.03.2008 01:09

скрипт заставляет компьютер работать медленно
 
всем привет. проблема такая: при открытии флешки при большой загруженности компа, ну или если сразу несколько одновременна открывать, вылазиет сообщение о том, что скрипт заставляет компьютер работать медленно, если отвечаешь 'нет', то все ок(окно плеера открывается и нормал дальше). Вопрос: могу ли я как то разрешить скрипту выполняться подольше, до того как плеер решит что он завис? Пробовала в сетингсах увеличить время, но почему-то это не помогло.

greenya 17.03.2008 02:03

Не знаю на счет "как попросить плеер разрешить клипу дольше 'висеть'?", но могу посоветовать разбить "зависание" на несколько частей (прописать код на отдельных последовательных кадрах).

CorC 17.03.2008 10:05

Что хоть у вас за код то написан? Можно не for или while использовать а setInterval для итерации...

WindWalker 17.03.2008 10:14

В самой среде разработки Flash вроде бы такой опции нет.
Насколько я знаю, можно изменить это значение (время, которое даётся скрипту на выполнение) с пощью flasm.
Но это всё-таки довольно спорное решение.
Лучше действительно разбить цикл так, чтобы он делал паузы.
Либо через sertInterval/setTimeout, либо через onEnterFrame, это уж кому как нравится.

Вариант 1:
Код:

function startLoop() {
        i = 0;
        loopStep();
}

function loopStep() {
        if (i<100) {
                trace (i);
                i++;
                setTimeout(loopStep, 1);
        } else {
                endLoop();
        }
}

function endLoop() {
        trace ("finished")
}

startLoop();

Вариант 2:
Код:

function startLoop() {
        i = 0;
        onEnterFrame = loopStep;
        loopStep();
}

function loopStep() {
        if (i<100) {
                trace (i);
                i++;               
        } else {
                endLoop();
        }
}

function endLoop() {
        delete onEnterFrame;
        trace ("finished")
}

startLoop();


Fann 17.03.2008 13:01

так как это просто модуль большого приложения, то размазывать по кадрам не хотелось бы. CorC, код обычный, заполнение датапровайдеров листов, поиск, сортировка и т.д., у меня нет длительных форов, поэтому что то бить на части тоже нет смысла, да и к тому же все функции с циклами запускаются после ответа сервера. Я проста хотела увеличить время инициализации. И мне не понятна почему я не могу этого сделать с помощью Script time limit. Для чего тогда вообще разрешили менять эту настройку(Script time limit)?

Fann 18.03.2008 01:08

WindWalker, спс за ответ, я слышала о flasm, вроде и рекурсию можна увеличить с его помощью. Но у меня вопрос: насколько это безопасна и хорошо использовать его?

WindWalker 18.03.2008 02:22

Ну если декомпилировать с помощью flasm и тут же обратно скопилировать с его же помощью, то практически почти получается точно по функциональности .swf (но на десякок байт короче :)).
Исключение состовляют файлы, по которым прошлись хорошим обфускатором - с ними, разумеется, могут быть проблемы.
Это по поводу безопасности...

А по поводу, хорошо это или плохо...
От изменения одной лишь этой опции ничего плохого не произойдёт.

Вот для чего-то более серьёзного его редко получалось использовать. Потому что коллеги просто не поняли бы, если бы вместо .fla и набора .as они получили бы в качестве исходников .swf и один большой .flm :)
Вообще именно как компилятор по работе он пригодился один только раз, когда не было исходников (предыдущий разработчик их не оставил), но нужно было внести небольшие изменения.

А так, исключительно для души, делал пару флешек почти чисто на flasme. Геморрно это конечно - шаг вправо, шаг влево приводит к непредсказуемым последствиям.

Ну, короче, для того чтобы чисто поменять эту опцию - безопасно и хорошо :)

http://www.nowrap.de/flasm.html

Цитата:

scriptLimits tag

Introduced with Flash Player 7, scriptLimits tag gives you control about the maximum recursion depth and the maximum time before the famous "Script causes the movie to run slowly.." message appears. So far I know, these settings can not be changed in Flash IDE. The following syntax is used:

scriptLimits recursion 2000 timeout 10

While increasing recursion depth (256 by default) is surely useful in some situations, you may actually want to decrease the time-out for ActionScript for testing purposes. Instead of standard 15 or 20 seconds, setting the value to 1 or 2 will immediately show you where the bottlenecks are.


Часовой пояс GMT +4, время: 12:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.