Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите, пожалуйста с галереей (http://www.flasher.ru/forum/showthread.php?t=87052)

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

Вложений: 1
Предлагаю такое:
Код:

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
Это обычная форма вставленая во флэш. Стиль меняешь вставляешь свои фотки вот и все. Все вообщем легко!


Часовой пояс GMT +4, время: 20:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.