Динамическое создание обьектов, получение их ID

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
magsim
Сообщения: 13
Зарегистрирован: 09 авг 2012, 22:11

Динамическое создание обьектов, получение их ID

Сообщение magsim »

Всем доброе время суток.
На сцене имется одна кнопка btn , в библиотеке один элемент прямоуголсник под именем класс Mc
Код:

Код: Выделить всё

import flash.events.MouseEvent;var arr:Array = [];var id:int = 0;btn.addEventListener(MouseEvent.CLICK, fun); function  fun (e:MouseEvent):void{    var ID:int = 0;    var XX:int = 0;    var YY:int = 0;    for(var i:int = 0; i < 4; i++){        for(var j:int = 0; j < 5; j++){          // Вычисляем уникальный идентификатор          // от 0 до 11          ID = id+1;          // Координата X          XX = 10 + (10 + 10)*i;          // Координата Y          YY = 10 + (10 + 10)*j;          id++;                      new_o (XX, YY, ID);       trace(ID ,"-", YY );                  }    }                  }var element: Mc;function new_o (mX:int, mY:int, id:int):void{    var element: Mc = new Mc();    element.width = 20;    element.x = mX;    element.y = mY;    element.id = id;    element.addEventListener(MouseEvent.CLICK, fun_clik);    arr[id] =element ;    addChild(element);        }  
По нажатию на кнопку появляются 20 прямоугольников, все норм. поместил в массив, могу допустим изменить ширину любого: arr[2].width = 10 (третий по списку будет изменен)
Правильно ли я обращась к обьектам, или это делается не через массив?
И Самое главное как сделать по событиб CLIK выводить ID выбранного элемента?
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Динамическое создание обьектов, получение их ID

Сообщение Alazaur »

Да все правильно, только уникальный ID вычислять не обязательно, можно так:

Код: Выделить всё

arr.push(element);
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Динамическое создание обьектов, получение их ID

Сообщение sanych_dv »

Мда..

Код: Выделить всё

 private var _loc:Object = {};... for (var i:int = 0; i < 20; i++) {   _loc["mc" + i] = new Mc;   _loc["mc" + i].x = _loc["mc" + i].width * ( i % 5 );   _loc["mc" + i].y = _loc["mc" + i].height * Math.floor( i / 5 );   addChild(_loc["mc" + i]); } 
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Динамическое создание обьектов, получение их ID

Сообщение Alazaur »

Чем Object лучше чем Array?
По поводу того что в цикле на полмиллиона-миллион итераций, я в курсе, что Object обгонит Array.
Но блин кто-нить юзает такие циклы при реальной разработке, чтоб почувствовать эту разницу в пару десятков миллисекунд? Кроме полубредовых тестеров. Да там и так только один "new MovieClip()" флеш-плеер положит.
А при реальной разработке, где создаем пусть даже 1000 мувиков разница между тем в Array их пихать или в Object нулевая.
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Динамическое создание обьектов, получение их ID

Сообщение sanych_dv »

Я очень рад, что вы воинственно убеждены в своей правоте ) Но все же останусь при своей стилистике кода.

Я просто показал, как не плодить абсолютно излишнего кода и как удобно расположить объекты по сетке.
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Динамическое создание обьектов, получение их ID

Сообщение sanych_dv »

Ну кстати, если уж по гамбургскому счету ) , то в данном примере объект _loc - это не более, чем многомерный массив со ссылками. Object в AS3 весьма многолик ).
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Динамическое создание обьектов, получение их ID

Сообщение Alazaur »

Дело не в воинственном убеждении в правоте) Меня просто задело
Мда..
Отсюда и был вопрос, в чем такое уж существенное преимущество объектов как хранилища клипов перед массивами, что у вас такая реакция?
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Динамическое создание обьектов, получение их ID

Сообщение Alazaur »

Просто надо код тс привести к божескому виду) По аналогии с вашим

Код: Выделить всё

var arr:Array = new Array();for (var i:int = 0; i < 20; i++) {   arr[i] = new Mc();   arr[i].x = arr[i].width * ( i % 5 );   arr[i].y = arr[i].height * Math.floor( i / 5 );   addChild(arr[i]);}
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Динамическое создание обьектов, получение их ID

Сообщение sanych_dv »

Если вас задевает мое "мда.." по отношению к стилистике чужого кода, то этот факт в компетенции не этого форума, а, скорее, форума по вопросам психологии:).
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Динамическое создание обьектов, получение их ID

Сообщение Alazaur »

Вообще я думал, что "мда.." относилось к использованию массивов) :D В таком случае приношу извинения.
Да кстати, вон там выше я написал:
Но блин кто-нить юзает такие циклы при реальной разработке, чтоб почувствовать эту разницу в пару десятков миллисекунд?
Признаю с такими высказываниями я поспешил) Если хранить скажем вершины полигонов в объекте вместо массива, то можно значительно выиграть в производительности.
Ответить