Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Ограничение на время выполнения кода (http://www.flasher.ru/forum/showthread.php?t=44752)

Dagi 30.04.2003 05:21

Ограничение на время выполнения кода
 
Вложений: 1
Уважаемые гуру:) Существует ли способ, при помощи которого можно было бы приодолеть временное ограничение на исполнение кода. Я тут скрипт написал, решающий задачу эйлера об обходе шахматной доски конем. А он слишком долго выполняется. Дополнительная сложность - алгоритм рекурсивный, так что разбросать код по кадрам не получится.
Что делать? Исходник в аттаче.

Usnul 01.05.2003 01:17

элементарно ватсон, нужно использовать не for, а onClipEvent(enterFrame){}; у него нет лимита на выполнение :) там пиши if и изминения, можно даже ввести маленькие циклы, но не такие как у тебя :)

Dagi 03.05.2003 08:41

Ну вы меня вообще за идиота держите. Как можно организовать рекурсивный алгоритм с onClipEvent? Бредовость этой идеи не имеет границ. Настоящие спецы - скажите, как победить 15-секундное ограничение на выполнение кода в одном кадре?
p.s. Кстати, уважаемый Usnul, код желательно централизовать, поэтому про onClipEvent забудьте - умные дяди для вас новую модель событий придумали. :)

Dagi 03.05.2003 08:49

А вот что про это дело пишет Macromedia:
Issue
While viewing a Flash movie in any Flash Player environment (browser, standalone, or projector), an error message appears indicating that a script is causing the Player to run slowly. Additionally, the message box gives the viewer the option to abort the script, as can be seen in Example 1.


Reason
The Flash Player itself provides this option to abort the script. The Flash Player will do this when it plays a movie which contains a one-frame ActionScript loop which can repeat itself indefinitely or for too long. A movie with such a loop can tax the resources of the computer system playing it. Giving viewers the option to end the script helps the Flash Player prevent an SWF file from freezing the viewer's browser or system.

Solution
To avoid creating a movie that triggers this error message when it is played in the Flash Player, create a loop that goes through frames. You can do this by evaluating a variable in an if statement and, if the variable conditionalizes as true, then have the movie break the loop by going to the next frame. If the variable does not conditionalize as true, then have the movie loop back to the first frame (usually two to three frames back) of the movie.

Usnul 03.05.2003 15:49

лимит не побить, и я пытался с тобой как с человеком :mad:
если тебя не устраивают копромисы пиши свой флэш

Dagi 03.05.2003 20:34

Просто, прежде чем давать советы, нужно убедиться, что они верны

Usnul 04.05.2003 01:20

короче так, если тебе все же охото чтобы "все работало" то делай без for а если нет, то садись за програминг :)

Dagi 04.05.2003 07:33

Без циклов - элементарно. А вот без рекурсии - никак. А ведь время ограничено и на выполнение функции. Кстати, я этот же код загнал в HTML как JavaScript - так там то же ограничение. В общем, не решить задачу Эйлера на Actionscript

Usnul 04.05.2003 14:55

Знаешь, мне жуууутко неохото разбераться, но по моему у тебя там есть несколько простейших ошибок, то есть строчки не там стоят некоторые, посмотри по внимательнее

TTS 04.05.2003 18:15

Можно эмулировать рекурсию.
По-моему, не так сложно.


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

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