Анимация картинки при наведении курсора на javascript.
Ротатор rotator картинок на javascript.
Я не раз встречал сайты с картинками, при наведении курсора на которые, картинка превращалась в анимацию.
Для чего это нужно?
В первую очередь для того чтобы сайт быстрее загружался.
Ведь намного проще вначале показать пользователю первый кадр из покадровой анимации
|1кадр|
чем сразу загружать целиком картинку с кадрами
|1кадр|2кадр|3кадр|4кадр|5кадр|...|
Допустим на сайте у нас находится много картинок, представляющих из себя один кадр из какого нибудь фильма.
И вот наша задача сделать так чтобы при наведении на этот кадр курсора мыши, подгрузилось изображение анимации с кадрами и началась анимация.
Пока идет загрузка изображения с кадрами, мы должны показать пользователю что идет загрузка.
Обычно такой эффект достигается flash анимацией.
Но я решил реализовать это дело на javascript.
Чтобы упростить программирование, я включил в свой проект scriptjava фреймворк, а так же движок покадровой анимации из топика
http://javascript.ru/blog/gordon-freeman/Kartinka-s-kadrami-javascript-S...
В итоге у меня получился следующий код
<script type="text/javascript" src="core_engine/scriptjava.js"></script>
<script type="text/javascript" src="core_engine/cartoon_image.js"></script>
<style type="text/css">
#r_pic1 {
position:relative;
border:1px solid #000000;
cursor:pointer;
width:160px;
height:120px;
background-image:url(ss1.jpg);
}
#r_pic2 {
position:relative;
top:10px;
border:1px solid #000000;
cursor:pointer;
width:160px;
height:120px;
background-image:url(ss1.jpg);
}
</style>
<div id="r_pic1">
<img id="r_img_pic1" border="0" />
</div>
<div id="r_pic2">
<img id="r_img_pic2" border="0" />
</div>
<script type="text/javascript">
//сначала прописываем по порядку
//1- id div элемента
//2- id img элемента
//3- адрес на картинку с кадрами
//4- ширина картинки с кадрами в пикселях
//5- высота картинки с кадрами в пикселях
//6- число кадров по горизонтали
//7- число кадров по вертикали
//8- скорость анимации, количество кадров в секунду
//9- изображение загрузки
//10- смещение изображения загрузки слева в пикселях
//11- смещение изображения загрузки сверху в пикселях
var settings = [];
settings[0] = ['r_pic1','r_img_pic1','s1.jpg',1600,120,10,1,5,'l1.gif',72,52];
settings[1] = ['r_pic2','r_img_pic2','s2.jpg',1600,120,10,1,5,'l1.gif',72,52];
//все что дальше не трогаем!!!
for(var i=0;i<settings.length;i++) {
(function (id_div,id_img,src_img,img_w,img_h,img_x,img_y,img_fps,src_img_l,img_l_l,img_l_t) {
var slide_img;
var load_img = function () {
slide_img=new Image()
slide_img.onload = function () {
$$(id_img,'visibility','visible');
r_pic1_set();
$$(id_div).removeChild(load_pic);
}
slide_img.src=src_img;
}
var cartoon_image1;
var r_pic1_set = function() {
cartoon_image1=new cartoon_image();
cartoon_image1.play({
id:[id_div,id_img],//id div элемента и img элемента
src:slide_img.src,//ссылка на изображение
frames_x:img_x,//количество кадров на изображении по x
frames_y:img_y,//количество кадров на изображении по y
width:img_w,//ширина изображения
height:img_h,//высота изображения
fps:img_fps,//скорость показа кадров в секунду, можно писать дробные числа
reverse:false,//если true то проигрывается с конца в начало
playandstop:false,//если true то проиграть 1 раз и передать управление функции next
next: function () {//выполнится только если playandstop==true
//сюда можно пысать следующий код который будет выполняться после завершения анимации
}
});
}
var load_pic;
var on_mouseover_1 = function () {
load_pic=$$i({
create:'img',
attribute: {
'style':'position:absolute; left:'+img_l_l+'px; top:'+img_l_t+'px;','src':src_img_l
},
insert:$$(id_div)
});
//настройки для старого осла
$$(load_pic).$$('position','absolute').$$('left',img_l_l+'px').$$('top',img_l_t+'px');
$$(load_pic).src=src_img_l;
load_img();
}
var on_mouseout_1 = function () {
cartoon_image1.stop();
$$(id_img,'visibility','hidden');
}
$$r(function() {//если документ полностью загрузился выполняю код
//добавляю события кнопкам при нажатии
$$e.add($$(id_div),'mouseover',on_mouseover_1);
$$e.add($$(id_div),'mouseout',on_mouseout_1);
$$(id_img,'visibility','hidden');
});
})(settings[i][0],settings[i][1],settings[i][2],settings[i][3],settings[i][4],settings[i][5],settings[i][6],settings[i][7],settings[i][8],settings[i][9],settings[i][10]);
}
</script>
На самом деле, здесь нет ничего сложного, и программировать ничего не нужно
Вот действия которые необходимо предпринять чтобы добавить новый элемент на страницу:
Вначале нам нужно разместить новый элемент
<div id="r_pic1">
<img id="r_img_pic1" border="0" />
</div>
и прописать для него css стиль
#r_pic1 {
position:relative;
border:1px solid #000000;
cursor:pointer;
width:160px;
height:120px;
background-image:url(ss1.jpg);
}
далее нужно прописать его в скрипте, добавив строку с необходимыми параметрами
settings[0] = ['r_pic1','r_img_pic1','s1.jpg',1600,120,10,1,5,'l1.gif',72,52];
что означает каждый параметр?
1- id div элемента
2- id img элемента
3- адрес на картинку с кадрами
4- ширина картинки с кадрами в пикселях
5- высота картинки с кадрами в пикселях
6- число кадров по горизонтали
7- число кадров по вертикали
8- скорость анимации, количество кадров в секунду
9- изображение загрузки
10- смещение изображения загрузки слева в пикселях
11- смещение изображения загрузки сверху в пикселях
Вот и все.
Рабочий пример вы можете скачать по ссылке:
Скачать пример
Благодаря scriptjava и готовому движку мы получили простой рабочий код.
|
Здравствуйте, вот не совсем понимаю как зацикливать?
Посмотрите пожалуйста код,как зациклить показ изображения?
Roksa pl pszczyna
Anonse erotyczne kujawsko pomorskie
Roksa swietokrzyskie
Excellent details! I'll check your website more frequently to stay informed. I cannot exchange money for the concepts I learn buildnow gg from this place. Many thanks!
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.