Несколько пользовательских компонентов и список отображения - PullRequest
0 голосов
/ 18 октября 2011

Я использую несколько экземпляров одного и того же пользовательского компонента в одном SWF. Компонент - это просто текстовое поле со специальными требованиями к размеру. У меня также есть другой компонент «обертка», который работает с информацией из компонентов текстового поля. Первоначально я планировал использовать индекс этапа, чтобы связать данные с компонентом текстового поля, из которого они получены. Это стало сложнее, чем я ожидал. Когда я прослеживаю из оболочки, я не могу получить индекс компонентов текстового поля. Поэтому я получил его в коде компонента и отправил его вместе с информацией в обертку через пользовательское событие. Проблема в том, что я не могу сказать, какой компонент какой, потому что они индексируются одинаково. Я также вижу подкладку компонента и текстовое поле. Я просто очень озадачен тем, как программные компоненты работают в списке отображения.

Мой главный вопрос. Есть ли лучший способ связать информацию с соответствующим компонентом? Я думаю, это мой единственный вопрос. Пожалуйста, укажите мне в правильном направлении.

РЕДАКТИРОВАТЬ: я забыл добавить, что мои компоненты должны быть перетащены на сцену. Большое спасибо за ответ, но он будет работать только для программного добавления компонентов. Любая помощь будет принята с благодарностью. Даже если это просто ссылка на возможное решение или информацию, которая поможет мне разобраться. Еще раз спасибо.

EDIT2: я создал фиктивный компонент-заполнитель, который просто рисует прямоугольник, а затем во время выполнения заменяет его программно сгенерированным компонентом текстового поля. Так что большое спасибо всем, кто помог мне на пути к этому решению. Если я придумаю что-нибудь получше, я обновлю это.

1 Ответ

1 голос
/ 18 октября 2011

Вы можете дать каждому TextField уникальное имя, например:

for(var i:int = 0; i < n; i++)
{
    var txt:TextField = new MyCustomTextField();
    txt.name = "txt_" + i.toString();
    stage.addChild(txt);
}

, например, txt[99] = stage.getChildByName("txt_" + 99);

... или вы можете использовать Array или Vector для храненияссылка на каждый TextField.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...