![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2007
Сообщений: 61
|
Всем привет!
Есть такой многомерный массив. var style0:Array = new Array; style1[0] = "song0.mp3"; style1[1] = "song1.mp3"; var style1:Array = new Array; style2[0] = "song0.mp3"; style2[1] = "song1.mp3"; var style_name:Array = new Array; style_name[0] = style0; style_name[1] = style1; У меня никак не получается вывести трэйсом строчку "style0". То есть, когда я пишу trace (style_name[0]), выводит song0.mp3, song1.mp3. Как правильно вывести эту строчку? |
|
|||||
|
стервочка (я мужик)
|
правильно выводит. Вам как надо?
|
|
|||||
|
.
|
У style_name[0] неявно вызывается метод toString(). А так как значением style_name[0] является массив, то метод style_name[0].toString() возвращает список элементов, у каждого из которых также вызывается toString(). В итоге мы имеем то, что имеем =).
В Вашем коде я не нашел строки "style0". Поэтому сам вопрос не имеет смысла. |
|
|||||
|
Трейс, как ему и предписано, выдает содержимое элемента массива style_name в виде строки. Так как содержимым элемента является другой массив (style0), то в строке выдается он (опять же, его содержимое, т.е. song0.mp3, song1.mp3)
Для того, чтобы получить имя элемента, нужно, по крайней мере, чтобы у элемента было имя =). У массива такого свойства не наблюдается. Как вариант - можно либо расширить класс Array и добавить нужное свойство, либо вместо Array использовать Object, что позволит Вам задавать имена и добавлять элементы в виде свойств
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 61
|
Я в терминах пока не силен, заранее извиняюсь, если непонятно выражаюсь =)
Да еще и код написал непонятный и с ошибками. вот более понятный var house:Array = new Array; house[0] = "song0.mp3"; house[1] = "song1.mp3"; var trance:Array = new Array; trance[0] = "song0.mp3"; trance[1] = "song1.mp3"; var style:Array = new Array; style[0] = house; style[1] = trance; Потом идет такой путь То есть в этом пути в первом случае style[0] выступает как String, а во втором как Array. Мне нужно каким-то образом преобразовать имя массива house в строковое значение "house". Добавлено через 2 минуты Пока писал, gloomyBrain уже ответил =) А можно поподробнее про Object? |
|
|||||
|
стервочка (я мужик)
|
у массива нет имени
это имя переменной, которая нигде не хранится. |
|
|||||
|
ИМХО многомерные массивы это зло
принимаю только одномерные. Если много данных, то хранить некую структуру, по хорошему даже не Object, нетипизировванность это плохо. Последний раз редактировалось ramshteks; 16.02.2009 в 02:47. |
|
|||||
var a:Array = ["1.mp3", "2.mp3", "3.mp3"] var o:Object = new Object(); o.name = "house" o.songs = a; trace(o.name); // house trace(o.songs[2]); // 3.mp3 Цитата:
Или массивы во флеше - типизированные? =) ЗЫ но вообще-то, конечно, можно и по другому пути: 1) данные о песенках Вы же, вероятнее всего, из XML берете? Можно использовать сам XML 2) хранить имя массива в виде строки в 0-вом элементе массива 3) ... много как еще =)
__________________
...вселенская грусть Последний раз редактировалось gloomyBrain; 16.02.2009 в 03:03. |
|
|||||
|
ну Обжект тип. но вот данные в нем нетипизированны насколько я знаю. Поэтому я обычно создаю маленький класс только для данных реализуя структуру наподобие struct в си. Массив тоже не типизирован, но лучше в нетипизированном хранить структуры, вместо того чтобы в нетипизировванном нетипизированное. ну это я думаю не принципиально, но просто по мне это лучше и правильно, я это интуитивно что ли чувствую.
Но вообще конечно, все зависит от личных пристрастий и того что требуется, не всегда стоит наверное заморачиваться с подобным. |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 61
|
gloomyBrain, Гут! Спасибо за тутор по обжектам)
Выбрал второй вариант, так как по одной переменной можно сразу нырнуть в нужную папку. А до оставшихся двух вариантов пока еще далеко =) |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|