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

обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 14:26
agni
подскажите пожалуйста, как обратится к динамически созданному объекту
пробовал следующим образом:

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

package{    import flash.net.*;    import flash.display.*;    import flash.events.*;    import flash.text.*;     public class present_my extends MovieClip    {        public function present_my():void        {            for (var i1:int = 1; i1 < 5; i1++)            {                var temp1:box=new box();                temp1.x = -431 + 148 * i1;                temp1.y = -100;                temp1.name = 'box' + i1 + '_mc';                trace(temp1.name);                addChild(temp1);            }            box2_mc.addEventListener(MouseEvent.MOUSE_OVER,mouse_over);            function mouse_over(Event:MouseEvent):void            {                box2_mc.play();            }         }    }}
пишет
1120: Access of undefined property box2_mc.
или обращаюсь неверно или имя криво создано
поправьте, пожалуйста

Re: обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 14:34
sersche
к temp1 надо обращаться..

Re: обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 15:07
agni
sersche писал(а):к temp1 надо обращаться..
мне надо обратиться к переменной box2_mc (как указано в коде), не к переменной temp1, которая используется в цикле и содержит его последнее значение

Re: обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 15:37
bodnar
Создавай массив куда запихивай создаваемые экземпляры

Re: обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 15:51
agni
bodnar писал(а):Создавай массив куда запихивай создаваемые экземпляры
создать массив объектов, каждым элементом которого будет размещенный на сцене мувиклип?
обращаться к нему можно будет из любой другой функции класса?
обращаться придется по номеру или по имени можно?
правильно ли я создаю имя для размещаемого через цикл мувиклипа, если правильно - отчего потом в коде не могу обратиться по имени?
temp1.name = 'box' + i1 + '_mc';

Re: обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 16:22
bodnar
Массивом так:

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

for  (var i1:int = 1; i1 < 5; i1++){arrayOfBox.push(new box());addChild(arrayOfBox[i1]);}
Через имя это документацию читать нужно:
name:String [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: 1.0 9

Указывает имя экземпляра DisplayObject. Объект можно найти в списке потомков родительского контейнера экранных объектов путем вызова метода getChildByName() контейнера.

Re: обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 19:19
agni
после добавления

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

            var arrayingBox:Array = new Array  ;            for (var i1:int = 1; i1 < 5; i1++)            {                arrayingBox.push(new box()  );                addChild(arrayingBox[i1]);            }
другой код перестал работать :( хотя никак не связано между собой

так можно создавать объекты на сцене и назначать им имена? как потом по этому имени обращаться?:

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

            for (var i1:int = 1; i1 < 5; i1++)            {                var temp1:box=new box();                temp1.name = 'box' + i1 + '_mc';                addChild(temp1);            }

Re: обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 19:43
bodnar
agni писал(а):другой код перестал работать :( хотя никак не связано между собой
Вы хоть разобрались в том коде что я дал, или бездумное ctrl+с, ctrl+v
agni писал(а):как потом по этому имени обращаться?:
я уже дал ответ постом выше

Re: обращение к динамически созданному объекту

Добавлено: 16 июл 2010, 21:48
agni
bodnar писал(а):
agni писал(а):другой код перестал работать :( хотя никак не связано между собой
Вы хоть разобрались в том коде что я дал, или бездумное ctrl+с, ctrl+v
добавление в цикле, в конец массива объекта - что значит в нем "разобраться"?

bodnar писал(а):
agni писал(а):как потом по этому имени обращаться?:
я уже дал ответ постом выше
я имел в виду тот код который у меня не работал, который приведен в первом сообщении:

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

            for (var i1:int  = 1; i1 < 5; i1++)            {                var temp1:box=new box();                temp1.name = 'box' + i1 + '_mc';                addChild(temp1);            }

Re: обращение к динамически созданному объекту

Добавлено: 17 июл 2010, 05:38
bodnar
Разобраться это значит понять что изменилось, в частности как нужно обращаться к элементам массива (т.е. объектам), где ты к этим объектам обращаешься не так, и всё исправить.

agni писал(а): я имел в виду тот код который у меня не работал, который приведен в первом сообщении:
agni писал(а):как потом по этому имени обращаться?:
Я даже специально жирным выделил... ладно, процитирую еще раз:
bodnar писал(а):Через имя это документацию читать нужно:
name:String [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: 1.0 9

Указывает имя экземпляра DisplayObject. Объект можно найти в списке потомков родительского контейнера экранных объектов путем вызова метода getChildByName() контейнера.
Объект можно найти в списке потомков родительского контейнера экранных объектов путем вызова метода getChildByName() контейнера.
Объект ... найти ... путем вызова метода getChildByName() контейнера.
Что не понятно? Ладно, держи пример, а то еще пару раз спросишь :lol: ...

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

 var temp =  new qwer();temp.name = "Qwerty";container.addChild(temp);container.getChildByName("Qwerty").x=50;