![]() |
Ограничение на время выполнения кода
Вложений: 1
Уважаемые гуру:) Существует ли способ, при помощи которого можно было бы приодолеть временное ограничение на исполнение кода. Я тут скрипт написал, решающий задачу эйлера об обходе шахматной доски конем. А он слишком долго выполняется. Дополнительная сложность - алгоритм рекурсивный, так что разбросать код по кадрам не получится.
Что делать? Исходник в аттаче. |
элементарно ватсон, нужно использовать не for, а onClipEvent(enterFrame){}; у него нет лимита на выполнение :) там пиши if и изминения, можно даже ввести маленькие циклы, но не такие как у тебя :)
|
Ну вы меня вообще за идиота держите. Как можно организовать рекурсивный алгоритм с onClipEvent? Бредовость этой идеи не имеет границ. Настоящие спецы - скажите, как победить 15-секундное ограничение на выполнение кода в одном кадре?
p.s. Кстати, уважаемый Usnul, код желательно централизовать, поэтому про onClipEvent забудьте - умные дяди для вас новую модель событий придумали. :) |
А вот что про это дело пишет 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. |
лимит не побить, и я пытался с тобой как с человеком :mad:
если тебя не устраивают копромисы пиши свой флэш |
Просто, прежде чем давать советы, нужно убедиться, что они верны
|
короче так, если тебе все же охото чтобы "все работало" то делай без for а если нет, то садись за програминг :)
|
Без циклов - элементарно. А вот без рекурсии - никак. А ведь время ограничено и на выполнение функции. Кстати, я этот же код загнал в HTML как JavaScript - так там то же ограничение. В общем, не решить задачу Эйлера на Actionscript
|
Знаешь, мне жуууутко неохото разбераться, но по моему у тебя там есть несколько простейших ошибок, то есть строчки не там стоят некоторые, посмотри по внимательнее
|
Можно эмулировать рекурсию.
По-моему, не так сложно. |
| Часовой пояс GMT +4, время: 06:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.