Доступ к дочерним элементам в SWC

Кто-нибудь знает, можно ли получить доступ к дочерним элементам в SWC? Я создал несколько MC, и внутри некоторых из этих MC у меня есть динамические текстовые поля. Я экспортирую контент в SWC и загружаю его в свой проект Flex. Нет проблем с загрузкой или доступом к родительским элементам, они отображаются нормально. Но я хочу получить доступ к текстовым полям, которые есть в MC, и изменить текст. Когда я отлаживаю приложение, я вижу текстовые поля как дочерние элементы. Он набирается как TextField, а имя экземпляра совпадает с вводом во Flash IDE, но я не могу получить к нему доступ. Когда Flex компилирует, он выдает ошибку, говоря, что он не распознает метод. Я попытался вставить сценарий действий на шкалу времени, связанные внешние классы, и ни к чему нельзя было получить доступ. Кто-нибудь знает, как это сделать?


person Daniel Dunn    schedule 17.02.2010    source источник
comment
Я думаю, вам нужно будет показать нам, что вы пытаетесь - из вашего комментария к Кори создается впечатление, что вы просто пытаетесь получить доступ к полям импортированного класса. Они публичные? Их типы экспортируются в SWC?   -  person Michael Brewer-Davis    schedule 17.02.2010
comment
Я знаю, проблема в том, что я не знаю, как показать вам, это не весь код, может быть, скриншот? Я экспортирую каждый компонент для выполнения во Flash IDE с помощью параметра Linkage на каждом MC, так что экспортируемый класс - это то, к чему я могу получить доступ через swc. Я не уверен, как сделать таким образом дочерний элемент (текстовое поле) общедоступным. Я впервые использую swc. Это правильный способ? Я помещаю каждый из этих компонентов в другой родительский элемент контейнера и экспортирую его как файл swc.   -  person Daniel Dunn    schedule 17.02.2010


Ответы (2)


Трудно сказать, поскольку вы не показываете свой код, который не работает, но я подозреваю, что вы делаете:

import myswc.*;

myswc.Symbol1.myTextField.text = "Foo"

вместо

var clip:MovieClip = new myswc.Symbol1();
clip.myTextField.text = "Foo"
person Cory Petosky    schedule 17.02.2010
comment
Я разместил свой swc в моем пути сборки Flex под путем к библиотеке. Поэтому компоненты, к которым я пытаюсь получить доступ, мгновенно доступны с помощью var comp: Sprite = new componentFromSWC (); тогда я могу получить доступ к этому элементу, указав переменную comp. Импорт не требуется, потому что он находится в пути сборки. Когда я попробовал ваш метод ссылки на символ / элемент через swc, он не смог его распознать - выдает ошибку компилятора. Есть ли еще одна причина, по которой я должен настроить импорт swc? Сначала казалось, что это сработало, и я предположил, что он может получить доступ ко всем элементам. - person Daniel Dunn; 17.02.2010
comment
Импорт необходим только в том случае, если вы экспортировали свои символы в пакете помимо пакета по умолчанию. Хорошая практика - правильно упаковать ваши классы. myswc - здесь не магическое имя, это был заполнитель для любого пакета, который вы использовали при экспорте символов. Более того, Sprite не является динамическим классом, поэтому вместо comp.myTextField.text попробуйте comp["myTextField"].text. - person Cory Petosky; 17.02.2010
comment
Я с той же проблемой. Опять же, это не совсем проблема кода, но я попытаюсь объяснить: - person Alex Miller; 18.01.2011

Я только что наткнулся на это, и мне любопытно, почему вы предлагаете, чтобы он НЕ использовал имя экземпляра, поскольку myTextField, очевидно, является именем экземпляра для TextField, который он использует ...

person Kevin Remisoski    schedule 01.10.2011