Просмотр полной версии : [AS 2.0] Большое кол-во однотипных MovieClip'ов, увеличение производительности
Добрый день. Имеется, к примеру, большое игровое поле 100x100. Каждая клетка это экземпляр класса, который наследуется от MovieClip'a. Внутри происходит простая заливка цветом beginFill и т.п. Проблема в том что при большом кол-ве таких объектов (>5000) все это дело начинает здорово тормозить. Вопрос: уменьшатся ли тормоза если использовать заливку beginBitmapFill? Как в данной проблеме может помочь классы Bitmap'a? И как вообще можно увеличить FPS при таком большом кол-ве объектов, видимых одновременно на экране? (от MovieClip отказаться не могу - должен регировать на события Mouse и т.п.)
Заранее спасибо Вам за ответы.
Спасибо за совет. Стало лучше, но не достаточно (окошко что скрипт слишком долго работает все же вываливается). Есть еще способы ускорить работу?
Автор темы может мне объяснить причем тут AS2 ?
Наверное потомучто это объекты наследники MovieClip'oв,а не сами MovieClip'ы в чистом виде - хотя по сути, это накак не влияет на проблему.
попробуй уйти от использования большого количества мувиков, сделай 1 а в нем в зависимости от положения/нажатия мыши рисуй квадраты
Да к сожалению с таким кол-вом объектов (10000) тормозит всегда - даже если это просто квадратики. Решение придумал немного другое. Поскольку все поле состоит клеток, то я изменил класс GameCell на простой класс с данными GameCellData (GameCell был наследником MovieClip) и также создаю экземпляры этого класса и присваиваю им те же свойства что были у класса GameCell. Только поле сейчас создается как простая сетка и клетка на которой находится Mouse определяется исходя из размера клетки и т.п. параметров - математически.
Из любопытсва , а зачем тебе 10тысяч квадратиков 100х100 ?
Игровое поле с фишками, состоящее из клеток. При небольших размерах 3x3 - 70x70. Все работет красиво и хорошо, а уже при 70x70 становится уже плохо - выпадает алерт о слишком долгой работе, вот и приходится прибегать к таким вот извращениям.
А с чего это выпадает алерт? Ты разве выполняешь какие-то длинные вычисления? Или у тебя алерт при построении вылетает? Если да, то строй блоками, скажем, 5x5 за кадр.
У меня нет кадров, все делает в одном первом кадре. Точнее там инициализируются классы необходимые для работы. После получения необходимых данных от сокет-сервера, инициализируется класс GameField который и занимается построением поля и инциализацией GameCell'ов. Построение и ициализация в цикле. Но даже если мы отказывает от цикла и строим постепенно с помощью какого-нибудь setInterval(); то при построении всего поля, тормозит уже все (из-за 10000 GameCell'ов - которые еще в свою очередь могут содержать вложенные - например с номером ячейки). А при дальнейшей работе - когда добавляем фишки - то объектов становится еще больше, и все работает еще медленне. Поэтому кроме как сетки - другого способа ускорить работу при таком кол-ве объектов я пока не вижу.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.