Как загрузить внешний mxml-файл Flex в родительский mxml-файл Flex?

[Это приведет вас к изображению моего проекта, чтобы вы могли увидеть код, потому что я не был участником достаточно долго, чтобы опубликовать его. :] 1

Это проект, над которым я работаю для простого демонстрационного учебного приложения на Flex. Я использую mxml-страницы. Вы можете видеть слева, что у меня будет мое основное приложение, а затем другие файлы mxml (в пакете примеров) в качестве примеров, которые будут загружены в основное приложение mxml. Как я могу динамически извлекать значение из объекта в списке, чтобы загрузить дочерний mxml-файл в контейнер, который находится ниже в приложении?


person GuateCoder    schedule 09.03.2012    source источник
comment
Это невозможно. ActionScript, а следовательно, и Flex - это компилируемый язык. Вы не можете просто загрузить файл mxml и запустить его; он должен быть сначала скомпилирован. Это означает, что если вы скомпилируете его в SWF-файл, вы можете загрузить этот SWF-файл и добавить его в свой список отображения.   -  person RIAstar    schedule 10.03.2012
comment
Что ж, на самом деле это можно сделать с помощью чего-то вроде as3-commons-bytecode, но это определенно не будет простым демонстрационным приложением.   -  person RIAstar    schedule 10.03.2012
comment
@RIAstar Я думаю, но не уверен, что вы его слишком усложняете. Если у него есть несколько компонентов MXML, почему бы просто не отобразить их в ViewStack и изменить ViewStack в зависимости от образца, который вы хотите показать?   -  person JeffryHouser    schedule 10.03.2012
comment
@ www.Flextras.com Действительно, я пропустил основной вопрос и сосредоточился только на точном вопросе, как описано в образце кода OP.   -  person RIAstar    schedule 10.03.2012


Ответы (1)


Я не совсем понимаю, что вы пытаетесь сделать; но, судя по фрагменту кода, я вижу две возможности.

Во-первых, если все ваши отдельные образцы скомпилированы в отдельные файлы SWF; затем вы можете загрузить их с помощью SWFLoader. Судя по XML в вашем фрагменте кода, кажется, что он ссылается на отдельные SWF-файлы.

Если ваши образцы кода просто скомпилированы в основное приложение, вы можете использовать ViewStack и переключить индекс ViewStack в зависимости от образца, который вы хотите показать. Концептуально что-то вроде этого:

<mx:ViewStack id="sampleViewStack">
  <myComps:Sample1 />
  <myComps:Sample2 />
  <myComps:Sample3 />
</mx:ViewStack>

Чтобы показать первый пример, просто сделайте это в ActionScript:

sampleViewStack.selectedIndex = 0;

Чтобы показать образец 2, сделайте следующее:

sampleViewStack.selectedIndex = 2;

И так далее...

Однако, если вы хотите скомпилировать каждый образец на лету и отобразить его в своем основном приложении, у вас будет гораздо более сложная работа.


Если я правильно понял, вы сказали, что вам трудно получить доступ к свойствам объекта, которые находятся в списках dataProvider. Судя по вашему снимку экрана с кодом, похоже, что ваш dataProvider состоит из общих объектов. Для доступа к свойствам метки или значения этих объектов; Вы будете; нужно сделать это:

list.selectedItem['label']
person JeffryHouser    schedule 09.03.2012
comment
Хорошо, что-то появляется, но теперь я не уверен, как получить доступ к значению моего объекта в списке. Вот фрагмент кода. plus.google.com/u/0/photos/113002783589802349422/113002783589802349422/113002783589802349422 альбомы / - person GuateCoder; 10.03.2012
comment
Вы можете получить доступ к selectedItem в списке с помощью list.selectedItem. К какой ценности вы хотите получить доступ? - person JeffryHouser; 10.03.2012
comment
Да, я могу получить доступ к выбранному элементу, но как я могу получить доступ к значению выбранного элемента? Метод .valueOf () не работает, и для значения объекта в списке нет средства доступа. - person GuateCoder; 11.03.2012
comment
Я не уверен, что понимаю, и понятия не имею, как перефразировать свой вопрос. list.selectedItem предоставит вам элемент, который в данный момент выбран в списке. Что такое dataProvider для вашего списка? И к какой ценности вы пытаетесь получить доступ? - person JeffryHouser; 11.03.2012
comment
В моем списке есть объекты. Каждый из этих объектов имеет строковое значение для значения атрибута. Я пытаюсь получить доступ к строковому значению выбранного элемента, но это не позволяет мне. - person GuateCoder; 11.03.2012
comment
На данный момент я предполагаю, но отредактировал свой ответ, чтобы показать вам, как получить доступ к свойствам общих объектов. Вы говорите, что в вашем списке есть объекты. Но я не уверен, что это значит. Это правда, но он не говорит мне, к чему вы хотите получить доступ. Вы имеете в виду, что dataProvider вашего списка состоит из объектов? Или вы имеете в виду элементы itemRenderers, отображающие данные? Или вы имеете в виду полосу прокрутки? Все это можно рассматривать как «объекты в списке». - person JeffryHouser; 11.03.2012
comment
Я имею в виду, что поставщик данных состоит из объектов. Если вы обратитесь к самому последнему фрагменту кода, в списке есть объекты, и каждый объект имеет метку и значение. Я пытаюсь получить доступ к значению, чтобы передать его и динамически изменить представление моего приложения. - person GuateCoder; 11.03.2012
comment
Я показал вам, как получить доступ к этому значению в моем отредактированном ответе. На самом деле, ваш код должен быть частью вопроса, а не связан со снимком экрана на каком-то внешнем сервисе. - person JeffryHouser; 11.03.2012
comment
Если бы я мог опубликовать его здесь, я бы это сделал, но я не был членом StackOverflow достаточно долго, потому что, когда я пытаюсь загрузить изображение, это не позволяет мне. - person GuateCoder; 11.03.2012
comment
Не загружайте изображение кода; добавьте фактический текст кода к вашему вопросу. - person JeffryHouser; 11.03.2012
comment
У меня в mxml есть следующий swfLoader: ‹mx: SWFLoader id = Load height = 100% width = 100% autoLoad = true /› Тогда у меня есть следующий код как событие, которое срабатывает при изменении индекса в списке. ‹Mx: List id = list width = 100% height = 100% change = swfLoader (event) showDataTips = true verticalAlign = top› Это функция события в моем теге скрипта ‹fx: Script› общедоступная функция swfLoader (событие: событие) : void {var item: String = list.selectedItem ['значение']; след (предмет); Load.source = @Embed (источник = '+ элемент +'); //Load.source = @Embed (source = 'example.swf'); } ‹/ Fx: Скрипт - person GuateCoder; 12.03.2012
comment
Извините, я должен включить вопрос. Когда я пытаюсь передать источник выбранного элемента в источник swfLoader, он загружается неправильно. Кажется, это правильно или я ошибаюсь? - person GuateCoder; 12.03.2012