Страница 2 из 3

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

Добавлено: 12 авг 2012, 09:21
magsim
Alazaur писал(а):Да все правильно, только уникальный ID вычислять не обязательно, можно так:

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

arr.push(element);
Хорошо, только вот как всетаки обращаться к обьктам созданным динамически? По событию мыши CLIK допустим выводился его id в вывод.

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

Добавлено: 12 авг 2012, 10:46
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 );    arr[i].id = i;    arr[i].addEventListener(MouseEvent.CLICK, clickHandler);    addChild(arr[i]);} function clickHandler(e:MouseEvent):void {    trace(e.target.id);}

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

Добавлено: 12 авг 2012, 13:46
magsim
Большое спасибо, а если не сложно можно еще пример:
как по нажатию добавляется один обьект, а при последующих нажатиях еще обьет рядом через 10 пикс ( в строке может бвть максимум 4 )

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

Добавлено: 12 авг 2012, 13:56
Alazaur
По нажатию куда на определенную кнопку? И что должно быть, когда пользователь нажал 5й раз - просто не добавлять объект или добавлять его в начальную позицию первого, но ниже?

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

Добавлено: 12 авг 2012, 14:33
magsim
Alazaur писал(а):По нажатию куда на определенную кнопку? И что должно быть, когда пользователь нажал 5й раз - просто не добавлять объект или добавлять его в начальную позицию первого, но ниже?
Забудим тот пример, есть просто кнопка пользватель нажал один раз добавился один обьект, еще раз нажал добавилься еще один правее, и так далее.
но в одной строке может быть максимум 4 обьекта. да если жалал 5-й раз то ниже и так далее

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

Добавлено: 12 авг 2012, 14:55
sanych_dv
Впору новый термин вводить: "форумное иждивенчество" ).

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

Добавлено: 12 авг 2012, 15:15
magsim
sanych_dv писал(а):Впору новый термин вводить: "форумное иждивенчество" ).
Почему же, просто тот пример мне очень помог, темболее я прошу лишь пример в виде части кода.
От темы я вроде не отошел.

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

Добавлено: 12 авг 2012, 15:43
Alazaur

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

var count:int = 0;btn.addEventListener(MouseEvent.CLICK, addObject); function addObject(e:MouseEvent) {    var mc:Mc = new Mc();    mc.x = mc.width * (count%4);    mc.y = mc.width * Math.floor(count/4);    addChild(mc);    count++;}
sanych_dv, ога, и кнопку "Make App" придумывать

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

Добавлено: 12 авг 2012, 21:30
magsim
Большое спасибо, но в продолжение темы (чтобы новую несоздавать)

Создаем динамически обькт:

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

var arr:Array = [];var count:int = 0;btn.addEventListener(MouseEvent.CLICK, fun);function fun(e:MouseEvent):void{    var mc:Mc = new Mc();    mc.x = mc.width * (count%4);    mc.y = mc.width * Math.floor(count / 4);    arr[count] = mc;    arr[count].id = count;    sp.addChild(arr[count]);    arr[count].addEventListener(MouseEvent.CLICK, clickHandler);    trace(count);    count++;} 
правильно ли я поместил в массив?

Но теперь я немного изменил обьект mc (был квадрат 20х20)
Сделал 20х40, и теперь они при добавлениее расходятся дург от друга где на пикс-40 (т.е не вплотну ю друг к другу) или как их например разместить 10 пикс друг от друга?

И и так же добавил в прямоугольник компонент NumericStepper - имя экземпляра дал num
и Пытаюсь ему передать id элемента:

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

 mc.y = mc.width * Math.floor(count / 4);    mc.num.value =count;    arr[count] = mc;

Выдает ошибку в вывод:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at _000_fla::MainTimeline/fun()
В чем может быть дело? как правильно обращаться к дочерним обьектам?

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

Добавлено: 12 авг 2012, 21:46
Alazaur
По поводу расхождения друг от друга вот тут

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

mc.y = mc.width * Math.floor(count / 4);
надо вот так конечно же

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

mc.y = mc.height * Math.floor(count / 4);
Мой косяк, машинально написал)))
По поводу второго проверьте еще раз имя экземпляра. Обращаетесь вы верно.