![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 14
|
Доброго Времени суток, долго меня терзает данный вопрос - не как не могу решить.
Каким способом можно получить значение - элемента внутри массива объекта, мне это нужно для правильного вывода нужного мне объекта, ибо способ , не подходит - поскольку объекты индексируются 1 за другим, по мере длины коллекции, то есть нужный мне объект имеет Index 100, а ID его 20, и указав в , я получу совсем другой объект(А не тот который мне нужен), как мне обратиться напрямую к значению элемента(ID) внутри Объекта. Объекты в моем случае это маркеры xml.
for (var i:uint=0; i < markersCount; i++) { var markerXml:XML = markers[i]; acMarkers.addItem({label: markerXml.@name, scale: markerXml.@scale, address: markerXml.@address,image: markerXml.@image, type: markerXml.@type, descript:markerXml.@descript,zip:markerXml.@zip }); } <mx:DataGrid id="myDataGrid" dataProvider="{this.acMarkers}" itemClick="showInfo(event)" height="423.65" y="61" x="10" width="162.55" alternatingItemColors="[#F7F7F7, #EFE4E4]" sortableColumns="false"> По сути я хочу иметь возможность указывать значение ID, для того объекта который хочу вызвать, для загрузки. Надеюсь все нормально объяснил! Буду очень рад если помогут, мучаюсь уже пару дней. Полный сурс проекта что я использую http://pastebin.com/nfuC1Hzy |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Массив можно отсортировать по id
но это Вам поможет только если в id есть настоящий порядок, то есть имеется весь ряд чисел по-порядку.
__________________
Reality.getBounds(this); |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Товарищ создает массив (markers) XML-ек и затем в цикле запихивает в DataProvider (acMarkers) итемы на основе этих XML-ек.
И затем хочет выковыривать итемы из DataProvider по их индексу, который бы совпадал с id.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 14
|
Цитата:
И скажем так, возможно ли использовать совсем другой поставшик данных, не dataProvider, цель лишь 1 - загрузить в сцену модель из списка .xml, по определенному ID, по сути это своего рода ModelViewer на Flash, типа такого http://goo.gl/C9vFk0. Заранее спасибо, очень приятно что ответили так быстро! P.S. но ведь индекс добавляется к каждому объекту по порядку, как сделать значение индекса равным значению ID самого итема, то есть не по порядку - Object(a)index(1),Object(b)index(2),Object(c)index(3); А Object(a)Index=Ojbect(a).Id, Object(b)Index=Ojbect(b).Id и тд , ведь сам id храниться в XML-Файле для каждого объекта свой. Последний раз редактировалось LighFusion; 29.03.2015 в 01:05. Причина: Добавлено сообщение |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
1/
Цитата:
2/ Пользователь выбрал итем из списка — посылается Событие? В нем есть индекс итема или ссылка на него? Как-то же Вы узнаете, что пользователь сделал выбор? По этому индексу или ссылке можно достучаться до ID? А то Ваш вопрос зыучит в какой-то обратной логике — типа "у меня есть ID но я не знаю как найти элемент в ДатаПровайдере по этому ID, чтобы... УЗНАТЬ ЕГО ID". Если ID известен, то что мешает найти в XML нужную ноду и взять адрес? Если индекс известен, то что мешает найти объект в ДатаПровайдере по этому индексу и взять адрес?
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 14
|
Цитата:
Пользователю заранее предоставляется страница с той вещью которую он хочет просмотреть в 3D, при нажатии на кнопку, заранее заготовленный JS, передает вписанное значение - подобным образом <a href="javascript:aionModelViewer.openWindow(600,525,4,110900069,'ru_RU');"><img src="/img/aion/viewin3d_ru_RU.png" border="0"></a> Напрямую к адрессу/пути(до модели) не обратиться. Объекты же ведь идут подобным образом
Последний раз редактировалось LighFusion; 29.03.2015 в 20:33. |
|
|||||
|
а запрос не поможет xml.marker.(@id==110900069)?
Добавлено через 5 минут Или можно сделать словарь: var acMarkersDict:Object ={}; for (var i:uint=0; i < markersCount; i++) { var markerXml:XML = markers[i]; var id:uint = uint(markerXml.@id); var obj:Object = {id: id, label: markerXml.@name, scale: markerXml.@scale, address: markerXml.@address,image: markerXml.@image, type: markerXml.@type, descript:markerXml.@descript,zip:markerXml.@zip }; acMarkersDict[id] = obj; acMarkers.addItem(obj); }
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 14
|
НУ в принципе наверное поможет, если обращение идет по всем объектам внутри .xml, и при нахождении нужного оно присваивается, в переменную которую можно использовать как Index.
Вообще я по-моему понял как это решить, но не знаю как это представить в коде. Суть в том чтоб загрузить все объекты из .xml в массив обычным образом, то есть OBJ1,OBJ2,OBJ3,OBJ4, А дальше прочесть у всех объектов параметр(id), и сделать что-то типа If Equals requestid == id(из объектов), то вернуть index Объекта на котором этот id Был найден, а дальше уже подставить Index в GetobjectAt(index) и все. Но вроде только я не шарю как это лучше представить в коде ? |
|
|||||
|
Я не очень понимаю, что вы делаете.
Вы можете описать логику ГУЯ нормально? Просто то что описано я вижу так: Есть таблица заполненная массивом, который был собран из хмл. Вам почему-то нужно взять инфу о каком то объекте по ид, но вы лезете в датапровайдер таблицы (хотя там уже даже не ваш массив, а ArrayCollection по идее) Или вам нужно по выбранному элементу в таблице показать инфу о нем, передав ид во внешний ЖС? Добавлено через 4 минуты Но в любом случае словарь решает вашу задачу, по-моему.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 14
|
Цитата:
жс возвращает в ActionScript - RequestID(через FlashVars), этот RequestID указывает на ID модели которую нужно будет загрузить, через хмл - <marker id="20" adress="mymodels/model.md2" >OBJ1,<marker id="25" adress="mymodels/model2.md2" >OBJ2, на сколько я понял, через словари - можно прочесть значение маркера id, и обратно вернется порядковый номер самого объекта, если будет if statement equals, которое уже потом будет возвращаться в глобал переменную - само значение, которое можно подставить в getItemAt, надеюсь я вас правильно понял ? P.S. Или оно сразу использует ID(acMarkersDict[id] = obj из xml- как значение порядкового номера ? |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|