PDA

Просмотр полной версии : Бесконечный Слайдшоу


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

Arhitector
14.01.2008, 21:26
можете поздравить МЫ решили проблему и написали новый движок для слайд шоу...

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
ок, спасибо :)

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

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

Вот последний вариант слайд шоу.
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
...да хотя бы эта (сделана за час, использован класс silin'a): http://www.flasher.pizza.ee/

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

jon!Ck
30.07.2009, 14:42
ок, спасибо :)

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

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

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

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

Maloun
30.07.2009, 18:53
тут кто то выкладывал чото оч похожее походу это галерея:away: