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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.04.2010, 14:10
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 1  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
По умолчанию 10k объектов в массиве, тормоза

Код AS3:
public class Main extends Sprite
	{
		public var aCp:ColorPicker = new ColorPicker();
		private var trtd: Array = new Array;
		public function Main():void
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void
		{
			var i:int;
			var j:int;
			removeEventListener(Event.ADDED_TO_STAGE, init);
			addChild(aCp);
			aCp.addEventListener(ColorPickerEvent.CHANGE, changecolor);
 
			for (i = 0; i <= 100;i++ )
			{
				trtd[i] = new Array;
			}
			for (i = 0; i <= 100; i++)//выполняется несколько секунд
			for ( j = 0; j <= 100; j++)
			{
				trtd[i][j] = new tableObj;
				addChild(trtd[i][j]);
				trtd[i][j].x = j * 100;
				trtd[i][j].y = i * 100;
				trtd[i][j].resaze(0, 70);
				trtd[i][j].aCp = aCp;
			}
		}
 
		private	function changecolor(event:ColorPickerEvent):void {
			trace("color changed:", event.color, "(#" + event.target.hexValue + ")");
 
		}
 
	}
Код AS3:
public class tableObj extends Sprite
	{
		public var padding:int;
		public var aCp:ColorPicker;
		private var  H, W:int;
		private var time:Timer = new Timer(100);
		public var getColor:*;
		public function tableObj()
		{
			//time.start();
			//time.addEventListener(TimerEvent.TIMER, onChange);
			//tableText.addEventListener(FocusEvent.FOCUS_IN, onFocusIn);
			//tableText.addEventListener(FocusEvent.FOCUS_OUT, onFocusOut);
			tableText.addEventListener(Event.CHANGE, onChange);
		}
 
		public function setColor(scolor:*) : void
		{
			var Color:ColorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, 0);
			Color.color = scolor;
			getColor = scolor;
			tableBagr.transform.colorTransform = Color;
		}
		public function resaze(h, w:int) : void
		{
			H = h; W = w;
			tableText.autoSize =TextFieldAutoSize.LEFT;
			tableText.x = padding;
			tableText.y = padding;
			tableText.width = w - padding*2;
			tableBagr.width  = w;
			tableBorder.width  = w;
			if(tableText.height<( h - padding)){
				tableBagr.height = h;
				tableBorder.height = h;
			}
			else {
				tableBagr.height = tableText.height + padding*2;
				tableBorder.height = tableText.height + padding*2;
			}
		}
 
		private function onChange(e:Event):void
		{
			resaze(H,W);
		}
 
		private function onFocusIn(e:FocusEvent) {
			tableText.border = true;
			aCp.selectedColor = getColor;
		}
		private function onFocusOut(e:FocusEvent) {
			tableText.border = false;;
		}
 
	}
Почему то очень тормозит, в чем может быть дело?

Старый 07.04.2010, 14:21
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 2  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
Я думаю можно воспользоваться одним циклом, вместо 2ух, возможно это снизит нагрузку. Ну а вообще 10к объектов на сцене это конечно перебор.

В догонку пару советов:

Код AS3:
trtd[i] = [];
вместо
Код AS3:
trtd[i] = new Array;
называйте классы с заглавной буквы и ставте скобки когда создаёте новый экземпляр

Код AS3:
var newTableObj:TableObj = new TableObj();
newTableObj.x = j * 100;
newTableObj.y = i * 100;
newTableObj.resaze(0, 70);
newTableObj.aCp = aCp;
addChild(newTableObj);
trtd[i][j].x = newTableObj;
вместо

Код AS3:
trtd[i][j] = new tableObj;
addChild(trtd[i][j]);
trtd[i][j].x = j * 100;
trtd[i][j].y = i * 100;
trtd[i][j].resaze(0, 70);
trtd[i][j].aCp = aCp;
__________________
O God! The Aftermath.


Последний раз редактировалось dmitriev; 07.04.2010 в 14:23.
Старый 07.04.2010, 14:28
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 3  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Один вопрос... для чего вам 10000 sprite на сцене?

Старый 07.04.2010, 14:41
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 4  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
dmitriev спасибо

Цитата:
Сообщение от Партизан Посмотреть сообщение
Один вопрос... для чего вам 10000 sprite на сцене?
чтоб флэшка была похоже на Excel, позже спрайты буду чилдиться в отдельный мувик.

Старый 07.04.2010, 15:04
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 5  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от medvedya2 Посмотреть сообщение
чтоб флэшка была похоже на Excel, позже спрайты буду чилдиться в отдельный мувик.
Думаю, не нужно вам столько объектов. Сократите до видимых. Вообще вариантов решений масса.

Старый 07.04.2010, 15:13
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
BitmapData, heyeyeyey!

Старый 07.04.2010, 15:18
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 7  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
BitmapData, heyeyeyey!
кстати, тоже отличный вариант...

Старый 07.04.2010, 15:54
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Даже единственно правильный.
Это очень глупо, рисовать сетку из TextFieldoв (!!!).
Я бы нарисовал сетку с помощью Bitmap`ы, и текстфилды бы добавлял по клику - вычисляем позицию куда кликнули и влепляем текстфилд, удаляем если текстфилд пустой - тем самым если у нас есть всего 4 записи на экране хранится 4+битмапа = 5 дисплейобджектов, а вам для этого 10к надо. Оптимизации

Старый 07.04.2010, 15:58
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 9  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
Код AS3:
cacheAsBitmap=true;
тож поможет
__________________
Коллекционирую чужие ActionScript Блоги

Старый 07.04.2010, 16:38
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
random13 - неа, объекты будут как битмапы - 10к битмапов на сцене тоже не айс)

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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