Страница 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() контейнера.
Что не понятно? Ладно, держи пример, а то еще пару раз спросишь

...
Код: Выделить всё
var temp = new qwer();temp.name = "Qwerty";container.addChild(temp);container.getChildByName("Qwerty").x=50;