Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 18.02.2009, 18:53
Barzometr вне форума Посмотреть профиль Отправить личное сообщение для Barzometr Найти все сообщения от Barzometr
  № 1  
Ответить с цитированием
Barzometr

Регистрация: Jun 2004
Сообщений: 121
По умолчанию Флэш и более 3.000 объектов.

Добрый день.

делал карту во флеше. И столкнулся с такой проблемой:

Накопилось на карте уже более 3000 объектов. И карта стала тормозить жутко.

Как можно облегчить жизнь карте?


ПОдумал, может создавать объекты только тогда, когда они в поле зрения должны быть.
Есть файл с коориднатами этих объектов.
Когда ролик загружается, он создает и размешает на карте эти объекты.

Вот думаю, сделать что-нить с hitTest.
Но как сделать, чтобы он по всей базе пробегал, и узнавал какие объекты сейчас в поле зрения должны быть?

Или может как-нить подругому можно сделать?

Добавлено через 21 минуту
Код AS1/AS2:
 
Stage.scaleMode = "noScale"
Stage.align = "TL";
var loadListener:Object = new Object();
loadListener.onLoadComplete = function(target_mc:MovieClip):Void  {
	bd_load_xml_street.load("street.xml");
};
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);
mcLoader.loadClip("street.swf", _root.map.map2.array_swf);
var bd_load_xml_street = new XML();
bd_load_xml_street.onLoad = function() {
	tmp_street = String(bd_load_xml_street.firstChild);
	_root.bd_xml_swf_street = new Array();
	_root.bd_xml_swf_street = tmp_street.split("\r\n");
	creatObj();
	SI_reSize = setInterval(creatObj, 100)
};
creatObj = function () {	
	_root.mc_hittest._width = Stage.width
	_root.mc_hittest._height = Stage.height
	for (i=0; i<_root.bd_xml_swf_street.length; i++) {
		tmp_street = _root.bd_xml_swf_street[i].split("|");
		if (_root.mc_hittest.hitTest(tmp_street[1],tmp_street[2],true)) {
			_root.map.map2.array_swf.attachMovie(tmp_street[0], tmp_street[0], i);
			_root.map.map2.array_swf[tmp_street[0]]._x = tmp_street[1];
			_root.map.map2.array_swf[tmp_street[0]]._y = tmp_street[2];
		}
	}
};


ну вот что получилось.

На поле есть объект, который масштабируется по размеру окна.

hitTest проверяет столкновение этого объекта с объектами из массива.


Какой-нить другой способ есть?


Последний раз редактировалось Barzometr; 18.02.2009 в 19:16.
Создать новую тему   Часовой пояс GMT +4, время: 21:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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