Сайт журнала WebDix
Фотогалерея в виде буквы (часть 2)
Колонка редактора Веб-дизайн Раскрутка Раскрутка Программирование Уроки Photoshop Уроки Flash Журнал Софт Юмор

Menu:


Лучший интернет магазин по лучшей цене!

Индивидуальные уроки по Flash-технологиям в онлайн режиме. 1 занятие - 2 часа. Индивидуальная программа обучения. Написать

Блог журнала
Официальный блог журнала WebDix. Все события из закулисной жизни журнала.
Подробнее

Jinfo.ru
Информационно-развлекательный портал обо всём, что интересно
Подробнее


БЫСТРЫЙ ПЕРЕХОД

Фотогалерея в виде буквы (часть 2)

Автор: Nikitar
Сайт: Rusforumz.com


Мы продолжаем делать фотогалерею, которую начали создавать в первой части. Напомню, что в результате у нас получилась буква (например, "W"), которая полностью состоит из небольших картинок. В принципе, можно было на этом и остановиться и разместить подобные буквы на сайте в виде иллюстраций. Однако мы пойдём дальше и сделаем то, что вы видите внизу этой страницы. Букву можно будет увеличивать, нажатием на колёсико мыши ("средняя кнопка"), и уменьшать нажатием на правую кнопку, двигать целую букву по экрану левой кнопкой мыши. А также можно будет кликнуть по любой картинке и увидеть картинку в увеличенном виде в отдельном окошке. То есть полностью функциональная фотогалерея. Что ж, продолжим.

1. Прежде всего, давайте сделаем так, чтобы при определённом увеличении (увеличение мы сделаем чуть позже) у нас была возможность кликнуть по картинке. Сразу скажу, что обычным способом это сделать нельзя. Так как у нас ещё заявлено перетаскивания буквы с помощью той же левой мыши. Следовательно, необходимо сделать ещё один мувиклип, который полностью будет совпадать с каждой точкой буквы, единственное отличие, что вместо картинок на ролике будет загружаться специальная кнопка. Так, ближе к делу.

2. Создайте новый слой на главной сцене. Нарисуйте полностью прозрачный квадрат размерами 100x100 (обязательно чтобы был квадрат). Выделите его и нажмите F8. В открывшемся диалоговом окне поставьте галочку рядом с надписью Export for ActionScript и в поле Identifier введите pix_link. Теперь зайдите в этот мувиклип. В правом верхнем углу нарисуйте кнопку, по нажатию на которую будет увеличиваться картинка. Я, например, нарисовал лупу. Затем выделите вашу кнопку и сделайте из неё мувиклип. В instance name напишите btn. Затем выделите кадр в этом мувиклипе и введите следующий код:

function tr(){
   mc_name=this._name;
   mc_frame=_root.big[mc_name]._currentframe
   _root.big_photo.photo.gotoAndStop(mc_frame);
   _root.big_photo._visible=true;
}
btn.onRelease=function(){
   tr();
}

Кнопка увеличение картинки

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

4. Теперь настало время сделать копию нашего основного мувиклипа. На главной сцене выделите мувиклип big (прописано в instance name), выберите Правая кнопка - Copy. Затем создайте новый слой, который выше этого и на нём выберите Правая кнопка - Paste in place. Теперь у нас есть два экземпляра одного мувиклипа. Скройте нижний слой (в котором мувиклип big), затем выделите мувиклип, который мы только что вставили, выберите Правая кнопка - Duplicate Symbol (этим самым мы сделали новый мувиклип, который идентичен предыдущему). Далее назовите этот мувиклип proz в instance name.

Duplicate Symbol

5. Зайдите в мувиклип proz. Выделите кадр, откройте панель Actions и удалите оттуда весь код. Теперь вставьте следующий код.

for(ss=0; ss<_root.ff_x.length; ss++){
   big_pix=this.attachMovie("pix_link","b"+ss, ss+25);
   big_pix._width=12
   big_pix._height=big_pix._width
   big_pix._x=Number(_root.ff_x[ss])*big_pix._width
   big_pix._y=Number(_root.ff_y[ss])*big_pix._width
}

6. Как вы видите мы присоединяем мувиклип, сделанный во втором пункте, на те же координаты, на которых у нас находятся картинки, в другом мувиклипе. Таким образом, присоединённые мувиклипы (с лупой) совпадают по расположению с картинками, и накладываются на них.

7. Выйдите опять на главную сцену и будем делать то, что появится, если кликнуть по кнопке увеличить. Нарисуйте квадрат и сделайте из него мувиклип. В instance name введите big_photo. Теперь заходим в мувиклип и делаем в нём 3 слоя. Вы видите на скриншоте как это выглядит. На нижнем слое - мувиклип с фоном, instance name - fon_mc. Второй слой - собственно мувиклип с картинкой. Перетащите из библиотеки мувиклип, который мы создали ещё в первой части урока, и в которм находятся все наши картинки. Увеличьте его до оригинального размера картинки. И в instance name пропишите photo. Это нам понадобится, когда мы будем отображать картинку, по которой кликнули. И, наконец, третий слой. В нём мы разместим кнопку закрыть. Кнопка, естественно, не кнопка, а мувиклип с instance name - close_btn. После того, как это всё создали. Сделайте четвёртый слой, в этом же кадре. В нём мы разместим следующий код:

Увеличенная картинка

fon_mc.useHandCursor=false
fon_mc.onPress=function(){
_parent.big_photo.startDrag();
}
fon_mc.onRelease=function(){
_parent.big_photo.stopDrag();
}
close_btn.onRelease=function(){
_root.big_photo._visible=false;
}

8. Данным кодом мы скрываем курсор руки, который появляется при наведении на мувиклип fon_mc. Нам это совершенно ни к чему. Далее код для кнопки закрытия мувиклипа (точнее просто мувиклип будет скрыт), а также для того, чтобы можно было перетаскивать этот мувиклип так как хочется.

9. Наконец-то, приступим к основной части нашего урока. То есть к написанию кода, который всё это дело автоматизирует. Код немаленький, поэтому будем его добавлять небольшими частями в 1 кадр главной сцены (там у нас уже есть кое-какой код, который мы вписали туда в первой части урока). Продолжаем писать наш скрипт:

proz._visible=false
big_photo._visible=false
a=0

10. Мы скрываем наши дублированные мувиклипы, которые содержат кнопку для увеличения картинки. Это нужно для того, чтобы не было грязи. При определённом увеличении буквы, мы их сделаем видимыми. Вторая строчка скрывает мувиклип, в котором у нас отображается большая картинка. Он будет виден только при нажатии на кнопку увеличить. И третья строчка - это временная переменная, которая нам понадобится в последующем коде.

this.onEnterFrame = function() {
a++;
proz._x=big._x;
proz._y=big._y;

if(big._xscale>500){
   proz._visible=true;
}
else{
   proz._visible=false;
}

if(a>2){
  if (ASnative(800, 2)(4)) {
     big._xscale*=2
     big._yscale*=2
    proz._xscale=big._xscale
    proz._yscale=big._yscale
   if(big._width<550){
     big._x=(550-big._width)/2
     big._y=(400-big._height)/2
   }
   else{
     big._x-=big._width/5
     big._y-=big._height/5
   }
}
else if (ASnative(800, 2)(2)) {
   big._xscale/=2
   big._yscale/=2
  proz._xscale=big._xscale
  proz._yscale=big._yscale
   big._x=(550-big._width)/2
   big._y=(400-big._height)/2
}
a=0
}
};

11. Как вы видите, этот код позволяет перемещать букву, увеличивать её при нажатии на колёсико мыши (причём можно держать это колёсико, чтобы оно всё увеличивалось и увеличивалось, но не сразу, а постепенно), а при нажатии и удерживании правой кнопки мыши будет буква уменьшаться. при этом стоит заметить, что как только увеличится буква до определённой степени (в данном случае в 5 раз), то кнопки для увеличения картинки будут видны. Ну и закончим этот код собственно перемещением большой буквы. Для этого после всего добавьте следующий код.

big.onPress=function(){
   this.startDrag();
}
big.onRelease=function(){
   this.stopDrag();
}
big.onRollOut=function(){
   this.stopDrag();
}

12. Хочу вас поздравить и сказать, что вот теперь всё! Можете нажимать ctrl+Enter и проверять работает или нет. По идее, должно работать так же, как и на ролике ниже. Если же нет, значит где-то ошибка. Либо сделайте всё ещё раз. Либо скачайте исходник из Школы Флэша, и посмотрите, что там и как. Маленький совет. Если публиковать под 8-й плеер, то ролик выглядит намного лучше. В журнале я опубликовал под 7-й флэш, поэтому вокруг картинок появляются такие чёрные рамки. При публикации под 8-й флэш, такого не произойдёт. Ещё момент с правой кнопкой, так как при нажатии на неё появляется контекстное меню, то можно либо сократить это меню, либо поменять правую кнопку на что-то другое.



ВНИМАНИЕ: Вы можете скачать исходник к данному уроку и самостоятельно разобраться что, куда и сколько раз. Исходники всех уроков выложены в Школе Флэша, которая располагается на портале RusForumz.com. Условия доступа в Школу Флэша

СКАЧАТЬ ИСХОДНИК