Показать сообщение отдельно
Старый 13.03.2013, 00:38
dvrbear вне форума Посмотреть профиль Отправить личное сообщение для dvrbear Найти все сообщения от dvrbear
  № 1  
Ответить с цитированием
dvrbear
 
Аватар для dvrbear

Регистрация: Oct 2003
Адрес: Moldova, Kishinev
Сообщений: 133
Отправить сообщение для dvrbear с помощью ICQ Отправить сообщение для dvrbear с помощью Skype™
По умолчанию "for" сильно тормозит при создание 10.000 объектов

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

Всебы хорошо, строится небо, перегонятеся нужный bitmap кусок, НО...
При конструирование 10.000 простых квадратиков, флеш сильно подвисает. (просто в процессе их создания)
А ежели выставить 100.000 звезд то и вовсе выпадает собщение о прекращение кода.

Можно ли как-то ускорить процесс создания не разбивая на куски создание "рэндомной вселенной" ?
На всякий случай приведу кусок своего кода с функцией конструирования.

Код AS3:
protected function buildUni():void
{
 
				var num:Number = 10000;
				var rand:Number = num/20;
				var dist:Number = 10;
 
				for(var i:Number=0; i<num; i++){
					var nSec:BSector = new BSector();
					nSec.x = (Math.random()*rand - rand/2) * dist;
					nSec.y = (Math.random()*rand - rand/2) * dist;
					container.addChild(nSec);
					var pid:Number = 0;
 
					for(var yy:Number=0; yy<5; yy++){	
						for(var xx:Number=0; xx<5; xx++){	
							var nPix:BPix = new BPix();
							MovieClip(nPix).gotoAndStop(1);
							nPix.x = xx - 5;
							nPix.y = yy - 5;
							nSec.addChild(nPix);
							pid++;
						}
					}
				}
				var res:MovieClip = new MovieClip();
				bmd = new BitmapData(100, 80, false, 0);
				bmd.draw(container);
				res.graphics.beginBitmapFill(bmd);
				res.graphics.drawRect(0, 0, 100, 100);
				res.graphics.endFill();
				res.x = 200;
				uni.addChild(res);
				//uni.addChild(container);
				addElement(uni);
			}
П.С.
Если закоменчиваю объекты и подставляю простейшее забитие координат в массив, то работает конечно пошустрей.
Но если ставлю число 1.000.000 то тоже довольно-таки сильно тормазит, а при 10.000.000 вылетает.

Неужели даже координаты более миллиона объектов записать не удастся?

Ведь есть нереально обширные проекты в которых еще больше объектов встречается не говоря о элементарных координатах...
__________________
http://apa-noua.com/portfolio