Просмотр полной версии : Бесконечный Слайдшоу
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???
Не тупо, а посмотреть в хелпе (читать кстати тоже надо) примеры.
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
ок, если у вас нет желания помочь в написании кода, то подскажите хотя бы как сделать так чтобы он загружал сначала???
Arhitector получает плюс за мультипостинг.
На форуме помогают разобраться, а не делать за вас. "что-то не получается" - не содержит описание того, что именно не получается, поэтому вам никто и не отвечает.
Arhitector
14.01.2008, 18:06
человек мне подсказал и дал скрипт, я его вставил и заменил нужное, но не работает
И что вы от нас хотите?
Понятие "не работает" может означать все, что угодно.
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?! читайте код внимательнее!
Потому, что у вас там бред написан. Например, где строчки
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 и так далее, до бесконечности...
Я делал как вы написали, но безуспешно... может я не туда вставил ваш код?
неужели нет в сети готовых решений, я наверно не первый захотел сделать слайдщоу
Да в сети полно исхоников. Каждую неделю кто-то делает слайд шоу. Но у каждого свои запросы и код разный.
Вам нужно знать о:
- 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;
}
};
если все равно не так, укажите на ошибку, я просто хочу понять
я вот так сделалЯ не вижу, чтобы вы так сделали. И весь код сплошные ошибки.
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 вопросик, можно ли к этому движку прикрутить прелоадер к каждой подгружаемой картинке?
Можно. Внутри 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
ну это совсем сложно, мне так не нужно было, спасибо конечно
...да хотя бы эта (сделана за час, использован класс silin'a): http://www.flasher.pizza.ee/
А Вы можете открыть ваш код, если не жалко? А то и флешки самой уже не видно и код очень интересно посмотреть?
ок, спасибо :)
Некоторые изменения внес и сделал немного по другому... полноценное слайд шоу с прелоадером... кому нужно качайте, прошу администрацию как то выделить эту тему, так как на форуме еще не было такого слайд шоу, для удобства пользователей.
Код прелоадера никак не использовался в коде у слайд шоу.
Вот последний вариант слайд шоу.
В этой версии скрипта, когда слайдшоу доходит до конца и показывается первая фотка, она снова зачинается загружаться (хотя она уже была загружена в начале слайдшоу). Можно ли сделать так, чтобы фотографии загружались только один раз, в течение первого цикла, а потом уже крутились без загрузок?
тут кто то выкладывал чото оч похожее походу это галерея:away:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.