Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как заэдчаилдить 1 000 000 квадратов. (http://www.flasher.ru/forum/showthread.php?t=202781)

Chelovek 09.08.2013 19:36

Как заэдчаилдить 1 000 000 квадратов.
 
Здравствуйте. Мне нужно на сцену добавить 1 000 000 квадратов 150х150 пикселей, но естественно начинает всё лагать. Подскажите как это исправить. Может заставить их исчезать при выходе за пределы сцены.
P.S. Все они находятся в контейнере MovieClip, который перетаскивается.

KumoKairo 09.08.2013 19:42

Если они не двигаются по отдельности (не вращаются относительно своей оси допустим), можно использовать .cacheAsBitmap = true
линк

Dukobpa3 09.08.2013 19:45

Давайте начнем с вопроса: "ЗАЧЕМ может понадобиться добавлять на сцену лям спрайтов?"

Chelovek 09.08.2013 19:48

Цитата:

Давайте начнем с вопроса: "ЗАЧЕМ может понадобиться добавлять на сцену лям спрайтов?"
это секрет.
KumoKairo, нет они двигаются все вместе и не вращаются, а как использовать .cacheAsBitmap = true.

Dukobpa3 09.08.2013 19:49

Ну тогда я бы ответил, но это тоже секрет.

Chelovek 09.08.2013 19:49

Контейнер зуммируется.

Dukobpa3 09.08.2013 19:50

И еще - я более чем уверен что абсолютно не обязательно их добавлять на сцену. Вариантов решения вопроса куча, но знать бы собственно вопрос.

KumoKairo 09.08.2013 19:54

Цитата:

а как использовать .cacheAsBitmap = true.
Специально для этого я и скинул ссылку)

Chelovek 09.08.2013 19:54

Dukobpa3, мне нужно чтобы они перетаскивались и масштабировались.

KumoKairo 09.08.2013 20:00

Добавляете картинки в MovieClip, после чего на этот родительский MovieClip применяете cacheAsBitmap = true;

Код AS3:

var myLittleMovieClip:MovieClip = new MovieClip();
for(var i:uint = 0; i < 1000000; i++)
{
    myLittleMovieClip.addChild(new MySprite()); //Или какой у вас там объект
}
myLittleMovieClip.cacheAsBitmap = true;
addChild(myLittleMovieClip);


Aquahawk 09.08.2013 20:28

миллион никак. Забудьте. Надо при зуммировании правильно отображать то что видно.

Dukobpa3 09.08.2013 20:28

Мой вопрос остается в силе.
Озвучте полный кейс и получите адекватный ответ.

А мульен клипов как бы вы не добавляли - все-равно будет висеть. С этим остается только смириться.
Скорее всего как минимум не весь мульен одновременно должен быть на екране. Есть еще пути для оптимизации.

expl 09.08.2013 21:26

Цитата:

Добавляете картинки в MovieClip, после чего на этот родительский MovieClip применяете cacheAsBitmap = true;
Нельзя стока на экран добавлять - обработка мыши начинает лагать, не отрисовка даже.
Надо убирать элементы вне экрана.
Я уж про память не говорю и про то, что вряд ли оно впишется в максимальные размеры битмапы.
Надо убирать из списка отображения то, что вне экрана.
Сам массив/вектор из 1 000 000 элементов-спрайтов в принципе создать можно (по крайней мере 100 000 примитивнейших спрайтов у меня проблем не вызывало), а вот в списке отображения их держать не надо

Если в отзуме надо показывать большую часть этой сетки (или всю) - делайте другие квадраты 150x150, в которые предварительно отрендерите, например сетку 10x10 и подменяйте эти 10x10=100 квадратов одним при отзуме (гугл-карты же не грузят и тем более не показывают уменьшенные в 10000 раз куски с наивысшим разрешением, когда вы материки целиком рассматриваете)

shaman4d 11.08.2013 18:40

миллион? смешно

SvetozarPNZ 12.08.2013 16:15

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

shaman4d 13.08.2013 01:44

Если карта, то там не надо миллион кусочков, там нужно грамотно показывать и масштабировать. Т е иметь разрезаную одну и ту же карту в разном масштабе и подгружать когда нужно необходимые куски.


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

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