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

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

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

Сообщение 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.
или обращаюсь неверно или имя криво создано
поправьте, пожалуйста
Последний раз редактировалось agni 16 июл 2010, 15:41, всего редактировалось 1 раз.
sersche
FL Team
FL Team
Сообщения: 598
Зарегистрирован: 11 май 2010, 13:45

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

Сообщение sersche »

к temp1 надо обращаться..
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

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

Сообщение agni »

sersche писал(а):к temp1 надо обращаться..
мне надо обратиться к переменной box2_mc (как указано в коде), не к переменной temp1, которая используется в цикле и содержит его последнее значение
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

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

Сообщение bodnar »

Создавай массив куда запихивай создаваемые экземпляры
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

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

Сообщение agni »

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

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

Сообщение 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() контейнера.
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

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

Сообщение 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);            }
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

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

Сообщение bodnar »

agni писал(а):другой код перестал работать :( хотя никак не связано между собой
Вы хоть разобрались в том коде что я дал, или бездумное ctrl+с, ctrl+v
agni писал(а):как потом по этому имени обращаться?:
я уже дал ответ постом выше
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

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

Сообщение 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);            }
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

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

Сообщение 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; 
Ответить