Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   getEmentById (http://www.flasher.ru/forum/showthread.php?t=144543)

diclofoss 14.09.2010 21:32

getEmentById
 
Как получить доступ к элементу, который был создан динамически, и ему был присвоен Id.

etc 15.09.2010 11:13

getChildByName.

alatar 15.09.2010 12:43

при компиляции id станет публичным свойством класса, т.е. можно просто обратиться к объекту myMXMLComponent.elementWithID

Добавлено через 6 минут
Цитата:

Сообщение от etc (Сообщение 936047)
getChildByName.

name не совпадает с id.

diclofoss 15.09.2010 13:55

При инициализации сцены по запросу с сервера приходят данные, которые отрисовываются на экране:

Код AS3:

var missGtMatrix:TileGroup = obj.missGtMatrix;
 
var borderContainer:BorderContainer = new BorderContainer();
borderContainer.width = 175;
borderContainer.height = 167;
borderContainer.id = "c" + idCounter;
trace ("new Border container with id = c" + idCounter);
....
missGtMatrix.addElement(borderContainer);

По событию после чего делаю:
Код AS3:

var missGtMatrix:TileGroup = obj.missGtMatrix;
var borderContainer:BorderContainer = missGtMatrix["c"+i];

и выскакивает Property c1 not found on spark.components.TileGroup

alatar 15.09.2010 14:14

Забыл уточнить, это только в mxml. В as id это просто свойство, обычный String, ничем особенно не отличающийся от name.
Цитата:

По событию после чего делаю
по какому событию? уточните чего вы хотите добиться.

diclofoss 15.09.2010 14:16

частично решил проблему заменив на
Код AS3:

borderContainer.getElementAt(num);

Но конечно это слишком рисковано, а вдруг потом добавление произойдет не в том порядке.

Добавлено через 4 минуты
Да у меня есть 5 картинок внутри borderContainer
каждая картинка создается динамически также как и borderContainer
каждой из картинок присваивается уникальный id
на каждую из этих картинок вешается событие onMouseOver

а в самой функции я получаю
Код AS3:

var image:Image = Image(event.currentTarget);
var id:String = image.id;

по потом разбирая id я понимаю к какому border оно относится:
Код AS3:

var i:int = int(id.charAt(2));
var k:int = int(id.charAt(1));

дальше дергаю:
Код AS3:

var missGtMatrix:TileGroup = obj.missGtMatrix;
var borderContainer:BorderContainer = BorderContainer(missGtMatrix.getElementAt(k-1));

ну а после выполняю необходимое действие со всеми картинками из текущего контейнера:
Код AS3:

for (var j:int = 1; j <=5; j++)
{
var onImage:Image = Image(borderContainer.getElementAt(j+7));
var offImage:Image = Image(borderContainer.getElementAt(j+2));
offImage.visible = true;
onImage.visible = false;
}


alatar 15.09.2010 14:22

Цитата:

частично решил проблему
Это не решение – это костыль. Еще раз. Уточните задачу. "Получить элемент" – это частности, какова конечная цель?

Добавлено через 7 минут
Это реализация, а задача какая? Скрыть одни картинки и показать другие?
Если вам нужна ссылка на контейнер, повесьте слушатель на контейнер.

Добавлено через 30 минут
Также ссылку на контейнер можно сохранить в свойстве owner вашего Image.


Часовой пояс GMT +4, время: 10:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.