Хакер №024. Спецвыпуск

       

Хакер №024. Спецвыпуск


][-desktop



stickers

Спецвыпуск Xakep, номер #024, стр. 024-088-3

_name = "temp";

_root["st"+(j+1)]._name = "st"+j;

_name = "st"+(j+1);

}

j++;

}

//comments 2

startDrag("");

}

on (release, releaseOutside) {

stopDrag();

}

В принципе, практически все - за исключением того, что находится между комментариями, - тебе должно быть известно (при нажатии начинаем таскать мувик, при отпускании кнопки бросаем. Я использовал не только просто отпускание, но и отпускание за пределами кнопки из-за того, что startDrag() не обеспечивает безукоризненного следования мувика за курсором: если тачка тормозит, а с руками у тебя вдруг ни с того ни с сего приключилась большая трясучка, клип может просто не поспевать за мышой). Этого хватило бы для вполне успешного использования данных стикеров кому угодно, но не тебе.

Как ты помнишь, каждая копия мувика "st" (именно так будет называться клип стикера) располагается на новой глубине (новом уровне), ибо на одной глубине может располагаться лишь один клип :(. Не буду вдаваться в детали, короче говоря, практически это выглядит так, что каждый вновь созданный стикер у тебя будет над остальными. Т.е. задавая мувику глубину, ты на самом деле указываешь его высоту. Основная сцена находится на нулевом уровне, именно поэтому отсчет глубин для новых стикеров мы ведем, начиная с единицы. Что происходит у тебя на экране, когда ты в Виндах кликаешь по неактивному окну, наполовину скрытому другими окнами? Оно становится активным, самым верхним.

Так вот, скрипт, помещенный между комментариями, делает с нашими стикерами приблизительно то же самое. А делает он это следующим извращенным способом. Если ты обратил внимание, имя копии стикера состоит из двух частей: имени предка - "st" и номера. Вначале это был просто порядковый номер, чтобы различать имена клипов, а здесь мы его используем чуть-чуть по-другому. Ведь он совпадает с глубиной, на которой находится соответствующий клип. Вот здесь дали о себе знать мой воспаленный долгим компьютеризированным времяпрепровождением мозг и моя врожденная тяга к извращенному. Я сомневаюсь, что ты когда-нибудь сделаешь у себя на Рабочем столе настолько большое число стикеров, чтобы хотя бы наполовину приблизиться к максимально допустимому числу мувиков во Flash ролике. Поэтому достаточно было бы просто вынести конкретный выделяемый мувик на самую большую глубину (например, root.i+1).

Я даже вначале и хотел было так и сделать. Но потом я все же решил, что из нас двоих не я самый большой извращенец - вдруг ты и правда после прочтения данного материала приступишь к активным кликам в области Рабочего стола :). И решил слои на всякий случай экономить. Кусок кода между комментариями переносит текущий (т.е. тот, на шапке которого кликнули) клип на самый верхний уровень (_root.i), оставляя при этом порядок остальных клипов неизменным.

Для кнопки "B - StickerClose" вводи:

on (press) {

this.removeMovieClip()

}

Думаю, это тебе знакомо. Удаляется клип, в котором вызван скрипт, т.е. текущий стикер. Здесь можно было бы тоже сэкономить на слоях и отсортировать стикеры по глубинам так, чтобы усе было чики-пики, т.е. рационально. Попробуй сделать это самостоятельно и (если получится :)) пришли мне.

Назад на стр. 024-088-2  Содержание  Вперед на стр. 024-088-4


 

Содержание раздела