|
|
|||||
[+1 09.03.11]
Регистрация: Mar 2010
Сообщений: 128
|
10k объектов в массиве, тормоза
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 + ")"); } } 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;; } } |
|
|||||
Я думаю можно воспользоваться одним циклом, вместо 2ух, возможно это снизит нагрузку. Ну а вообще 10к объектов на сцене это конечно перебор.
В догонку пару советов: вместо называйте классы с заглавной буквы и ставте скобки когда создаёте новый экземпляр 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;
__________________
O God! The Aftermath. Последний раз редактировалось dmitriev; 07.04.2010 в 14:23. |
|
|||||
[+1 09.03.11]
Регистрация: Mar 2010
Сообщений: 128
|
dmitriev спасибо
чтоб флэшка была похоже на Excel, позже спрайты буду чилдиться в отдельный мувик. |
|
|||||
Думаю, не нужно вам столько объектов. Сократите до видимых. Вообще вариантов решений масса.
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
BitmapData, heyeyeyey!
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Даже единственно правильный.
Это очень глупо, рисовать сетку из TextFieldoв (!!!). Я бы нарисовал сетку с помощью Bitmap`ы, и текстфилды бы добавлял по клику - вычисляем позицию куда кликнули и влепляем текстфилд, удаляем если текстфилд пустой - тем самым если у нас есть всего 4 записи на экране хранится 4+битмапа = 5 дисплейобджектов, а вам для этого 10к надо. Оптимизации
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
random13 - неа, объекты будут как битмапы - 10к битмапов на сцене тоже не айс)
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 09:05. |
|
« Предыдущая тема | Следующая тема » |
|
|