Показать сообщение отдельно
Старый 04.08.2012, 14:54
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 14  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Согласен с strangedk, для карты лучше удалять объекты со сцены.
Но сейчас попробовал маленький тест на 10,000 объектов, и вариант с visible работает быстрее. Хотя так скорее всего израсходуется больше памяти. Потому что помню, как в советах от Adobe, говорили что лучше всё же удалять объекты.
Код AS3:
package 
{
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	import flash.events.Event;
 
	/**
	 * ...
	 * @author Samana
	 */
	public class Main extends Sprite 
	{
		private var box:Box;
		private var map:Vector.<Box> = new Vector.<Box>();
		private var onStage:Boolean = true;
 
		public function Main():void 
		{
			addChild(new FPS()).x = 600;
			// create boxes
			for (var i:int = 0; i < 100; i++) 
			{
				for (var j:int = 0; j < 100; j++) 
				{
					box = new Box();
					box.x = j * 5;
					box.y = i * 5;
					addChild(box);
 
					map.push(box);
				}
			}
			//event
			stage.addEventListener(Event.ENTER_FRAME, stage_enterFrame);
		}
 
		private function stage_enterFrame(e:Event):void 
		{
			for (var i:int = 0; i < map.length; i++) 
			{
				if (onStage)
				{
					removeChild(map[i]); // max 15 fps
					//map[i].visible = false; // max 20 fps
				}
				else
				{
					addChild(map[i]);
					//map[i].visible = true;
				}
			}
			onStage = !onStage;
		}
 
	}
 
}