Форум 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=106560)

Arhitector 14.01.2008 15:30

Бесконечный Слайдшоу
 
Добрый день!

Облазил весь форум, пользовался поиском - нашел кучу примеров к слайдшоу, но к сожалению подошел мне только один, но он и то не полный.

Вот скрипт:
Код:

square._alpha = 0;
whichPic = 1;
a = new Array();

my_interval = setInterval(automat, 2500);

function automat() {
        if (!fadeIn && !fadeOut) {
                fadeOut = true;
                whichpic++;
                input = whichPic;
        }
}
_root.onEnterFrame = function() {
        if (square._alpha>10 && fadeOut) {
                square._alpha -= 10;
        }
        if (square._alpha<10) {
                loadMovie("images/image"+whichPic+".jpg", "square");
                fadeOut = false;
                fadeIn = true;
        }
        if (square._alpha<100 && fadeIn && !fadeOut) {
                square._alpha += 10;
        } else {
                fadeIn = false;
        }
};

Скрипт грузит картинки в бесконечном порядке, то есть - 1.jpg, 2.jpg, 3.jpg и так далее...

Мне нужно чтобы если в папке картинок 10, то он проигрывает 10 картинок и возвращается на 1 картинку и все заново...

Но ограничивать кол-во картинок не нужно, то есть, сколько картинок в папке столько и проигрывает...

Как сделать что бы он определял есть ли картинка или нет, если нет то возвращаемся на 1 картинку, а если есть, то идем дальше...
Парюсь уже давно и не получается, помогите пожалуйста...

CrazyFlasher 14.01.2008 15:59

загружаем картинки с помощью MovieClipLoader.loadClip (про LoadMovie забываем)...в событии onLoadError проверяем, если getBytesLoaded() == 0, то значит картинки нет...и начинаем грузить опять первую

Arhitector 14.01.2008 16:02

большое спасибо, а как это сделать??? просто тупо поменять LoadMovie на MovieClipLoader.loadClip???

iNils 14.01.2008 16:07

Не тупо, а посмотреть в хелпе (читать кстати тоже надо) примеры.

Arhitector 14.01.2008 16:16

я вставил вот так вот:
вроде работает, но еще на ошибки проверку не сделал
Код:

if (square._alpha<10) {
                var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());
                var mcLoader:MovieClipLoader = new MovieClipLoader();
                loadMovie("images/image"+whichPic+".jpg", "square");
                fadeOut = false;
                fadeIn = true;
        }

а вот как сделать проверку???

возможно ли к этому коду прикрепить еще и прелоадер???

CrazyFlasher 14.01.2008 16:26

Код:

var mcLoader:MovieClipLoader = new MovieClipLoader();
var mcListener:Object = new Object();
mcLoader.addListener(mcListener);
               
mcListener.onLoadError = function(){
        if(picHolder.getBytesLoaded() == 0){
                //gruzim sna4ala
        }
}
       
mcLoader.loadClip("myFolder/" + index + ".jpg", picHolder);

//picHolder - имя мувика на сцене, в который грузится картинка
//index - индекс картинки, который надо увеличивать, а когда ошибка - обнулять


Arhitector 14.01.2008 16:46

что-то не получается

для вас это пару минут работы... для меня вечность... помогите пожалуйста...

Arhitector 14.01.2008 17:49

ок, если у вас нет желания помочь в написании кода, то подскажите хотя бы как сделать так чтобы он загружал сначала???

iNils 14.01.2008 18:03

Arhitector получает плюс за мультипостинг.
На форуме помогают разобраться, а не делать за вас. "что-то не получается" - не содержит описание того, что именно не получается, поэтому вам никто и не отвечает.

Arhitector 14.01.2008 18:06

человек мне подсказал и дал скрипт, я его вставил и заменил нужное, но не работает

iNils 14.01.2008 18:10

И что вы от нас хотите?
Понятие "не работает" может означать все, что угодно.

Arhitector 14.01.2008 18:32

помощи хочу.

вот мой нынешний код...
Код:

square._alpha = 0;
whichPic = 1;
a = new Array();

my_interval = setInterval(automat, 1000);

function automat() {
        if (!fadeIn && !fadeOut) {
                fadeOut = true;
                whichpic++;
                input = whichPic;
        }
}
_root.onEnterFrame = function() {
        if (square._alpha>3 && fadeOut) {
                square._alpha -= 3;
        }
        if (square._alpha<3) {
        var mcListener:Object = new Object();
        var mcListener:Object = new Object();
        mcLoader.loadClip("images/image"+whichPic+".jpg", square);
        mcListener.onLoadError = function(){
        if(square.getBytesLoaded() == 0){
                trace("good");
                }
        }
                fadeOut = false;
                fadeIn = true;
        }
       
        if (square._alpha<100 && fadeIn && !fadeOut) {
                square._alpha += 3;
        } else {
                fadeIn = false;
        }
};

сделал как и говорил CrazyFlasher, и после того как я вставил код CrazyFlasher'а флэшка перестала подгружать картинки из папки.

я попробовал заменить эту строчку:
Код:

mcLoader.loadClip("images/image"+whichPic+".jpg", square);
на эту:
Код:

loadMovie("images/image"+whichPic+".jpg", square);
то есть поменял только mcLoader.loadClip на loadMovie картинки стали подгружаться, но как написал CrazyFlasher - //gruzim sna4ala, я попробовал поменять на trace("good"); и трэйса нет.

вот в чем проблема не пойму... уже бъюсь с самого утра с этой проблемой...

я просто хочу понять и разобраться сам, чтобы в дальнейшем знать что к чему.

CrazyFlasher 14.01.2008 18:38

а почему вы 2 раза создаёте mcListener и ниразу mcLoader?! читайте код внимательнее!

iNils 14.01.2008 18:44

Потому, что у вас там бред написан. Например, где строчки
Код:

var mcLoader:MovieClipLoader = new MovieClipLoader();
и
Код:

mcLoader.addListener(mcListener);
которые были у CrazyFlasher?
Если вы хотите разобраться, то это делается так. Вы откладываете в сторону то, что вы сейчас делаете. Идете и читает все об MovieClipLoader на русском http://flash-mx.ru/help/ Разбираете простые примеры, события. А потом задаете себе вопрос: "Зачем я всю загрузку засунул в событие onEnterFrame?"

Arhitector 14.01.2008 19:10

ну это не мой бред, а CrazyFlasher :)

CrazyFlasher 14.01.2008 19:16

мда...видать тут всё туго...если даже не получается сравнить то, что я написал и вы. Плюс ко всему покажите, где я использовал событие onEnterFrame

Arhitector 14.01.2008 19:20

согласен вы этого не писали, но мне это нужно по другому никак...

у меня стоит задача, сделать слайдшоу с альфа каналом при появлении и исчезновении картинки, и все картинки должны лежать в папке с названием image1.jpg, image2.jpg, image3.jpg и так далее, до бесконечности...

Я делал как вы написали, но безуспешно... может я не туда вставил ваш код?

неужели нет в сети готовых решений, я наверно не первый захотел сделать слайдщоу

iNils 14.01.2008 19:45

Да в сети полно исхоников. Каждую неделю кто-то делает слайд шоу. Но у каждого свои запросы и код разный.
Вам нужно знать о:
- MovieClipLoader
- Tween
Алгоритм такой:
1. Формируете имя
2. Загружаете картинку
3. Если картинка не вернула ошибку, то после загрузки запускаете Tween для _alpha и переходите к пункту 1. Если вернула ошибку, то идем к пункту 4.
4. Конец слайд-шоу

Arhitector 14.01.2008 20:03

я вот так сделал и все равно не работает...

Код:

square._alpha = 0;
whichPic = 1;
a = new Array();

var mcLoader:MovieClipLoader = new MovieClipLoader();
var mcListener:Object = new Object();
mcListener.onLoadError = function(){
        if(square.getBytesLoaded() == 0){
                whichPic = 1;
        }
}
mcLoader.addListener(mcListener);
this.createEmptyMovieClip("square", this.getNextHighestDepth());

mcLoader.loadClip("images/image"+whichPic+".jpg", square);

my_interval = setInterval(automat, 1000);

function automat() {
        if (!fadeIn && !fadeOut) {
                fadeOut = true;
                whichpic++;
                input = whichPic;
        }
}

onEnterFrame  = function() {
        if (square._alpha>3 && fadeOut) {
                square._alpha -= 3;
        }
        if (square._alpha<3) {
                fadeOut = false;
                fadeIn = true;
        }
       
        if (square._alpha<100 && fadeIn && !fadeOut) {
                square._alpha += 3;
        } else {
                fadeIn = false;
        }
};

если все равно не так, укажите на ошибку, я просто хочу понять

iNils 14.01.2008 20:24

Цитата:

Сообщение от Arhitector
я вот так сделал

Я не вижу, чтобы вы так сделали. И весь код сплошные ошибки.
1. Вы картинку грузите только один раз.
2. У вас есть функция которая увеличивает значения счетчика, но при этом загрузку не запускает.
3. Даже если она и будет запускать, то ровно через секунду, и не важно загрузилась картинка или нет.

Arhitector 14.01.2008 21:26

Вложений: 1
можете поздравить МЫ решили проблему и написали новый движок для слайд шоу...

iNils большое спасибо, этого мне и не хватало...

Код:

//примечание: в папке картинки должны начинатся с названия image1.jpg

var my_mcl:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();
myListener.onLoadStart = function(target_mc:MovieClip) {
  var loadProgress:Object = my_mcl.getProgress(target_mc);
};
myListener.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) {
};
myListener.onLoadComplete = function(target_mc:MovieClip) {
  var loadProgress:Object = my_mcl.getProgress(target_mc);
};
myListener.onLoadInit = function(target_mc:MovieClip) {
        target_mc._alpha = 0;
        fade_dir = true;
        my_interval = setInterval(fade, fade_time);
};
myListener.onLoadError = function(target_mc:MovieClip, errorCode:String) {
        whichPic=1;
        my_mcl.loadClip("images/image"+whichPic+".jpg", clip1_mc);
        //whichPic - нумерация картинок
        //"images/image"+whichPic+".jpg" - путь к картинкам
                // clip1_mc - мувик в который производится загрузка
};
my_mcl.addListener(myListener);


var my_interval;
var pause_interval;
var whichPic = 1;
var fade_dir = true;
var fade_step = 10; //кол-во альфа
var fade_time = 50; //время исчезновения
var pause_time = 2000; //задержка во времени при альфа=100

function pause_me()
{
        clearInterval(pause_interval);
        my_interval = setInterval(fade, fade_time);
}

my_mcl.loadClip("images/image"+whichPic+".jpg", clip1_mc);
//whichPic - нумерация картинок
//"images/image"+whichPic+".jpg" - путь к картинкам
                // clip1_mc - мувик в который производится загрузка

function fade() {
        if(clip1_mc._alpha>=100 && fade_dir==true)
        {
                fade_dir = false;
                clearInterval(my_interval);
                pause_interval = setInterval(pause_me, pause_time);
                return;
        }
       
        if (clip1_mc._alpha<100 && fade_dir==true) {
                clip1_mc._alpha+=fade_step;
        }
        else {
                fade_dir=false;
                if(clip1_mc._alpha>0)
                {
                        clip1_mc._alpha-=fade_step;
                } else {
                clearInterval(my_interval);
                whichPic++;
                my_mcl.loadClip("images/image"+whichPic+".jpg", clip1_mc);
                //whichPic - нумерация картинок
                //"images/image"+whichPic+".jpg" - путь к картинкам
                // clip1_mc - мувик в который производится загрузка
                }
        }
       
}

Вложение 18671

Arhitector 15.01.2008 11:48

iNils вопросик, можно ли к этому движку прикрутить прелоадер к каждой подгружаемой картинке?

iNils 15.01.2008 12:00

Можно. Внутри myListener.onLoadProgress = ... сейчас пусто, но там можно код разместить, который будет отображать процесс загрузки.

Arhitector 15.01.2008 12:10

Вложений: 2
ок, спасибо :)

Некоторые изменения внес и сделал немного по другому... полноценное слайд шоу с прелоадером... кому нужно качайте, прошу администрацию как то выделить эту тему, так как на форуме еще не было такого слайд шоу, для удобства пользователей.

Код прелоадера никак не использовался в коде у слайд шоу.

Вот последний вариант слайд шоу.
Вложение 18682

CrazyFlasher 15.01.2008 16:18

я смотрю вы высокого мнения о своей работе...есть намного больше более сложных...да хотя бы эта (сделана за час, использован класс silin'a):
http://www.flasher.pizza.ee/

P.S. уже давно пора писать на классах, а не пихать весь код во fla. Ваша работа может оказаться вредной, т.к. показывает "как не надо писать код". Имхо.

По поводу вопроса...в условиях надо указывать знак равенства "==", а не присваивания

Arhitector 15.01.2008 16:24

ну это совсем сложно, мне так не нужно было, спасибо конечно

Gut 06.08.2008 19:47

Цитата:

Сообщение от CrazyFlasher (Сообщение 710922)
...да хотя бы эта (сделана за час, использован класс silin'a): http://www.flasher.pizza.ee/

А Вы можете открыть ваш код, если не жалко? А то и флешки самой уже не видно и код очень интересно посмотреть?

jon!Ck 30.07.2009 14:42

Цитата:

Сообщение от Arhitector (Сообщение 710774)
ок, спасибо :)

Некоторые изменения внес и сделал немного по другому... полноценное слайд шоу с прелоадером... кому нужно качайте, прошу администрацию как то выделить эту тему, так как на форуме еще не было такого слайд шоу, для удобства пользователей.

Код прелоадера никак не использовался в коде у слайд шоу.

Вот последний вариант слайд шоу.

В этой версии скрипта, когда слайдшоу доходит до конца и показывается первая фотка, она снова зачинается загружаться (хотя она уже была загружена в начале слайдшоу). Можно ли сделать так, чтобы фотографии загружались только один раз, в течение первого цикла, а потом уже крутились без загрузок?

Maloun 30.07.2009 18:53

Вложений: 1
тут кто то выкладывал чото оч похожее походу это галерея:away:


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

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