|
|
|||||
Регистрация: Feb 2012
Сообщений: 205
|
xml динамическая галерея
есть задача - создать динамическую галерею со сложной структурой: Разделение по темам, внутри деление по слайдам, в каждом слайде n-ное количество картинок.
в общем, первая цель - при входе создать галерею, соответствующую первой теме, внутри неё слайды, на них по 3 картинки (если не хватает для последнего слайда картинок - то там 1 или 2). объект item лежbт в библиотеке и имеtт соответствующиq идентификатор Сразу проблема при подгрузке символа Item из библиотеки kv=1; this =game; function addslide(mc:MovieClip) { xmlfile='data'+kv+'.xml'; dr.load(xmlfile); } dr.onLoad = function(success) { //создаём галерею gal=game.createEmptyMovieClip("gallery"+kv, game.getNextHighestDepth());//_root.attachMovie("gallery", "gallery"+kv);//создаём символ галереи for (q=0; q<Math.ceil(dr.firstChild.childNodes.length/3); q++) //определяем количество слайдов в галерее { slide=game.gal.createEmptyMovieClip("slide"+q, game.getNextHighestDepth())//создаём слайд внутри галереи for (k=q*3; k<q*3+3; k++) { if(k<dr.firstChild.childNodes.length) {picHolder = this.firstChild.childNodes[k]; item = game.gal.slide.attachMovie("item", "item"+k, k); trace(item)//UNDEFINED item._x += q*40; item.url = picHolder.attributes.url; } }//цикл для добавления картинок на слайд } } кто бы - кто бы мне помог? Последний раз редактировалось Маруська; 23.10.2014 в 03:47. |
|
|||||
1. Нарисуйте структуру будущей XML, описывающей галерею.
2. Напишите КОД, загружающий эту XML и распознающий её элементы. 3. Напишите код, создающий "сетку", "шаблон" галереи для произвольного слайда (с эН картинок), который начинает работать после того, как п.2 полностью отработал. 4. После этого уже грузИте туда картинки..... п.4. - самое простое, с миллионами примеров по форуму..... Вы же все сразу свалили в одну кучу, пронеслись галопом по европам, накидали каких-то малосвязанных и неудобочитаемых кусков кода, непонятно где и отчего поймали грабли, сказали "ааа, помогите, горе, F1" и ждете теперь чего? Что кто-то сядет, домыслит нехватающие фрагменты общей картины, угадает с одного раза содержимое п.п.1-3 и изречет вам свет истины? И не публикуйте такие скрижали, пожалейте глаза читателей. for (q=0; q<Math.ceil(dr.firstChild.childNodes.length/3); q++) //определяем количество слайдов в галерее //определяем количество слайдов в галерее var drNodeLength = Math.ceil(dr.firstChild.childNodes.length/3) for ( var q=0; q<drNodeLength ; q++){ } Ну и разумеется, в вашем месиве искать ошибки малореально. Вот что вы тут делаете? Глубину вы откуда берете? gal=game.createEmptyMovieClip("gallery"+kv, game.getNextHighestDepth()); slide=game.gal.createEmptyMovieClip("slide"+q, game.getNextHighestDepth()) cl = game.gal.slide.attachMovie("item", "item"+k, k); - вторнули на стэйдж клип в нём, как я понимаю (догадываюсь, читаю ваши мысли()пытаюсь типа)) вы СОЗДАЕТЕ пустой клип "pic" Зачем? Нарисуйте в нем РАМОЧКУ, обзвите ее "pic" и всё уже будет визуально установлено по своим местам. А поскольку после аттача клипа в нем уже все есть, передавайте загрузчику имя этого клипа. А так как они у вас все одинаковые, загрузчик уже там сам найдет куда ему чего грузить. mcl.loadClip(url, cl.pic); |
|
|||||
Регистрация: Feb 2012
Сообщений: 205
|
1. Структура xml примитивная. просто перечисление Item url.
2, 3, 4. Код, который отлично загружает элементы xml dr = new XML(); dr.ignoreWhite = true; dr.onLoad = function(success) { for (q=0; q<this.firstChild.childNodes.length; q++) { _root.picHolder = this.firstChild.childNodes[q]; trace(_root.picHolder.attributes.url); item= _root.attachMovie("item", "item"+q, q); item._x += q*40; item.url = _root.picHolder.attributes.url; } } dr.load("data.xml"); грабли поймала в конкретном месте подгрузки символа из библиотеки. И в коде масса комментариев - всё очень логично. Добавлено через 33 минуты в общем. как справлюсь - выложу исходники Добавлено через 1 час 4 минуты и могли бы мне подсказать, что символы createEmptyMovieClip это не просто символы, а пути. поэтому иерархия ни к чему. dr.onLoad = function(success) { //создаём галерею gal=game.createEmptyMovieClip("gallery"+kv, game.getNextHighestDepth()); for (q=0; q<Math.ceil(dr.firstChild.childNodes.length/3); q++) { slide=gal.createEmptyMovieClip("slide"+q, game.getNextHighestDepth())//создаём слайд slide._y+=q*20; trace("slide._y "+slide._y); for (k=q*3; k<q*3+3; k++) { if(k<dr.firstChild.childNodes.length) {_root.picHolder = this.firstChild.childNodes[k]; cl = slide.attachMovie("item", "item"+k, k); cl._x += (k-q*3)*100; trace("cl._x "+cl._x); cl.url = _root.picHolder.attributes.url; } } } } Последний раз редактировалось Маруська; 23.10.2014 в 04:32. |
|
|||||
Ваш вопрос выглядит следующим образом:
Я пишу MMORPG с серверами и блэкджеком на 10005000 тыщ онлайна, там есть аудио, видео, 3Д, юнити, яваскрипт, перл, пхп, пир2пир, видеочат и телемаркет. Почему переменная А класса chtoNiJama и переменная Б класса toKanava в сумме дают 3, хотя должны давать 2? Цитата:
|
Часовой пояс GMT +4, время: 02:40. |
|
« Предыдущая тема | Следующая тема » |
|
|