Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Смена картинки (беспрерывно).
 
 автор: Indemion   (03.06.2009 в 11:54)   письмо автору
 
 

Клиент захотел чтобы 2 картинки по очереди сменяли друг друга по кругу. Flash он не хочет и gif не хочет (потеря качества). Придумал ему вариант на Javascript. Нашел наработки в интернете и чуть подправил. Но смущает небольшая проблема в начале - картинка пытается смениться, но не выходит, и лишь со второй попытки получается. Так как в javascript не силен, прошу вашего совета. Пока 2 картинки, но возможно будет и больше. Вот код.


<script language="JavaScript">
var slide = new Array;
var pictureName = new Array("1.jpg", "2.jpg");
for (var i = 0; i < pictureName.length; i++)
    {
    slide[i] = new Image();
    slide[i].src = pictureName[i];
    }
var m = new Array(0, 100);
var nextImage = 0;
var t = "";
function next(step)
    {
    if (t != "") return;
    m[0] = 0;
    m[1] = 100;
    nextImage = nextImage + step;
    if (nextImage == pictureName.length)
        {
        nextImage = 0;
        }
    if (nextImage == -1)
        {
        nextImage = pictureName.length - 1;
        }
    document.getElementById("after").src = slide[nextImage].src;
    change_slide();
    }
function change_slide()
    {
    m[0] += 1;
    m[1] -= 1;
    document.getElementById("before_div").style.opacity = m[1]/100;
    document.getElementById("after_div").style.opacity = m[0]/100;
    document.getElementById("after_div").style.filter="alpha(opacity="+m[0]+")";
    document.getElementById("before_div").style.filter="alpha(opacity="+m[1]+")";
    t = setTimeout("change_slide()",5);
    if (m[0] > 98)
        {
        clearTimeout(t);
        document.getElementById("before").src = slide[nextImage].src;
        document.getElementById("before_div").style.opacity = 100;
        document.getElementById("before_div").style.filter="alpha(opacity=0)";
        t = "";
        }
    }
function f1 (){
b=setTimeout("f1()",2500); next(1);
 } 
f1();
</script>
<div id="after_div" style="position: absolute; top: 0px; left: 130px;"><img id="after" src="2.jpg"></div>
<div id="before_div" style="position: absolute; top: 0px; left: 130px;"><img id="before" src="1.jpg"></div>

  Ответить  
 
 автор: Рома   (03.06.2009 в 19:04)   письмо автору
4.8 Кб
 
   для: Indemion   (03.06.2009 в 11:54)
 

может это?

  Ответить  
 
 автор: Indemion   (04.06.2009 в 11:53)   письмо автору
 
   для: Рома   (03.06.2009 в 19:04)
 

Почти. У меня плавный переход. Я поработал на своим и вашим кодом, и добился нужного результата. Большое спасибо! :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования