PDA

Просмотр полной версии : Помогите, пожалуйста с галереей


ryzhkou
27.10.2006, 18:05
Ребят, помогите пожалуйста. Дело в следующем.
Есть н-ное количество (больше 20) изображений одинакового размера в пикселях, хранящихся в библиотеке мувика. Нужно, чтобы при нажатии кнопок влево-вправо (вверх-вниз), эти изображения соответственно сменялись (и были, так сказать, в замкнутом круге).
Я так понимаю, что их можно "загнать в массив", но как это реализовать не имею понятия. :umnik2:

Пробовал один из примеров, предложенных в разделе "Исходники" (без массива), - получается нерентабельно; т.е. приходится разбивать фотки на группы 1..5, 5..9 и т.д.

Если Вам несложно, покажите на примере (или напишите, что где прописывать (включая кнопки "вперёд-назад")). Заранее благодарен. :rolleyes:

Wolsh
27.10.2006, 22:23
var maxframe = 6 // количество картинок (кадров в my_mc)
next_btn.onPress = function(){
if (my_mc._currentframe == maxframe) {
my_mc.gotoAndStop(1);
} else {
my_mc.nextFrame();
}
}
prev_btn.onPress = function(){
if (my_mc._currentframe == 1) {
my_mc.gotoAndStop(maxframe);
} else {
my_mc.prevFrame();
}
}

Все картинки загрузи в мувиулип покадрово, на каждый кадр повесь stop();
Мувиклип затащи на сцену и обзови там my_mc
Сделай две кнопки, назови их соотв. next_btn и prev_btn
Скрипт повесь на первый кадр, укажи в нем кол-во картинок maxframe и наслаждайся листалкой :)

Хемуль
28.10.2006, 00:07
Предлагаю такое:

var pictureBaseName:String = "pic";
var picturesNum:Number = 3;
var currentPicture:Number = 1;

attachCurrentPicture();

function updatePictureIndicator()
{
this.indicator.text = currentPicture + "/" + picturesNum;
}

function attachCurrentPicture()
{
var newPictureName:String = pictureBaseName + currentPicture;
this.attachMovie(newPictureName, newPictureName, this.getNextHighestDepth(), {_x:this.frame._x + 1, _y:this.frame._y + 1});
updatePictureIndicator();
}

function nextPicture()
{
var oldPictureName:String = pictureBaseName + currentPicture;
currentPicture = currentPicture + 1 > picturesNum ? 1 : currentPicture + 1;
attachCurrentPicture();
this[oldPictureName].removeMovieClip();
}

function previousPicture()
{
var oldPictureName:String = pictureBaseName + currentPicture;
currentPicture = currentPicture - 1 < 1 ? picturesNum : currentPicture - 1;
attachCurrentPicture();
this[oldPictureName].removeMovieClip();
}

this.nextButton.onRelease = function()
{
nextPicture();
}

this.previousButton.onRelease = function()
{
previousPicture();
}

Переменная pictureBaseName задаёт префикс идентификатора картинки в библиотеке. То есть, строка, содержащаяся в этой переменной, служит началом linkage id'а мувиклипов картинок в библиотеке. К этой строке прибавляется номер от 1-го до количества картинок (переменная picturesNum) и получается идентификатор необходимой картинки. Соответственно, картинки должны иметь идентификаторы для данного случая: pic1, pic2, pic3.
Исходник прикрепляю... Если будут вопросы, спрашивайте...

Wolsh
28.10.2006, 00:46
Я тоже так хотел :) Только необходимость создавать более 20-ти клипов в библиотеке меня остановила. Зачем, если можно один и с кодом, в котором даже котёнок разберется?

ryzhkou
28.10.2006, 01:03
Ребят, спасибо огромное! Очень выручили (вдвоём).
Вопросов больше пока нет.
Ещё раз спасибо!

ryzhkou
28.10.2006, 01:05
Wolsh, насчёт котёнка верно подмечено!

Хемуль
28.10.2006, 01:13
2 Wolsh:
Зачем 20? о_0
Для примера и 3-х хватит...

ded1488
31.10.2006, 00:46
Открываешь file> new> Там будет вкладка >templates далее выбираешь в меню >foto Sladeshows
Это обычная форма вставленая во флэш. Стиль меняешь вставляешь свои фотки вот и все. Все вообщем легко!