TIPS OF WEB: продвинутый альбом с порнушкой Iv (dembicki@narod.ru) Спецвыпуск Xakep, номер #028, стр. 028-110-2 this.input_xml = new XML(); this.input_xml.load("album.xml"); this.input_xml.onLoad = function(success) { if (success) { if (this.status != 0) { trace("invalid xml"); } else { this.addID(); _root.preview.loadPictures(); } } else { trace("error opening URL"); } }; this.input_xml.addID = function() { var i = 0; var nod = this.firstChild; while (nod) { nod.attributes.ID = i++; nod = nod.nextNode(); } _root.preview_total = i; this.parseXML(this.firstChild); }; TIPSA 6 Юзай "умные" мувики! Для превьюшек сделай отдельным мувик - так ими легче управлять. Замутить мувик элементарно: _root.createEmptyMovieClip("preview", 1); Если ты захочешь изменить расположение твоих превьюшек на сцене, знай: тебе нужно будет задать новые координаты именно этому клипу. Следующим шагом зададим этому мувиклипу функцию добавления и размещения на сцене экземпляров мувиков для превьюшек. TIPSA 7 Если хочешь плодить клипы, тебе нужен базовый клипушник в библиотеке и линка на него! То есть, чтобы эта функция сработала правильно, ты должен создать в либе новый мувиклип и задать ему linkage name "pictureHolder" (без кавычек). Обрати внимание, что мувик "pictureHolder" мы дальше зарегим в классе, и он станет "умным". TIPSA 8 Кстати, если захочешь, чтобы превьюхи легли иначе, то тебе нужно будет подергать две последние строки этой функции, где этим мувикам в цикле задаются координаты _x и _y. Сейчас они сидят через 45 пикселов по высоте. По ширине четные в координате 10, а нечетные в координате 40 - я разделил их с помощью вычисления остатка от деления на 2 номера превьюшки (вот такой я извращен :)). Когда у тебя все получится и ты будешь экспериментировать с настройками, попробуй в строке mc._x = i%2*30+10; двойку заменить на тройку, четверку и т.п. и посмотри, какой эффект это даст. Также я вынес в отдельную переменную количество превьюшек на странице. Ее ты можешь менять по своему усмотрению. _root.preview.preview_step = 10; _root.preview.loadPictures = function() { var i = 1; for (i; i<=this.preview_step; i++) { var mc = this.attachMovie("pictureHolder", "p"+i, i, {num:i}); mc._y = 45*(i-1); mc._x = i%2*30+10; } }; TIPSA 9 Храните функции в сберегательном классе... и на пальцах не будет мозолей. Создать и зарегить класс легко: HolderClass = function () { }; Object.registerClass("pictureHolder", HolderClass); Создали и зарегили. Теперь, если приаттачить мувик "pictureHolder" из библиотеки, он автоматически будет принадлежать этому классу и унаследует от него все функции этого класса. То есть, если мы поместим в прототип класса некую функцию, она будет доступна этому экземпляру, как будто эта функция написана прямо в экземпляре. Короче, почкование копированием :). Мозги не сварились? Ведь еще надо разобраться, какие функции будут жить в этом классе. TIPSA 10 Юзай временные ссылки... и снова избежишь мозолей на пальцах! Поместим в прототип всю функциональную начинку мувиклипов и сделаем короткую ссылку (tmp) на прототип класса: tmp = HolderClass.prototype=new MovieClip(); TIPSA 11 |