Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #28, МАРТ 2003 г.

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

Назад на стр. 028-110-1  Содержание  Вперед на стр. 028-110-3