Показать сообщение отдельно
  #1 (permalink)  
Старый 03.01.2014, 01:14
Интересующийся
Отправить личное сообщение для literator Посмотреть профиль Найти все сообщения от literator
 
Регистрация: 18.08.2013
Сообщений: 13

Проблема с animate()
var array=new Array();// создаем новый массив, в который помещаем имена картинок в папке "galery"
<?php
$dir="../images/galery";
$files=scandir($dir);
echo "var count=".count($files).";";
echo "var count1=".count($files)."-1;";
for($i=2;$i < count($files); $i++){
echo "array[".$i."]='".$files[$i]."';";
}
?>
function panorama(){
$('.panorama').removeAttr("style");
$('.panorama').load(function(){ 
var ImgW=$(this).width();    //Размеры картинки галереи и соотношение ее сторон 
var ImgH=$(this).height();
var CenterW=$('#center').width();//размеры контента
var CenterH=$('#center').height();
var ImgWH=ImgH/ImgW;
var CenterWH=CenterH/CenterW;
var newImgW=CenterH/ImgWH;
var newImgH=CenterW*ImgWH;
if(ImgW > CenterW){ //Размещаем картинку внуттри контента по максимальным возможностям
	if(ImgH > CenterH){
		if(CenterWH >=ImgWH){
			ImgW = CenterW;
			ImgH = newImgH;
		}
		else{
			ImgH = CenterH;
			ImgW = newImgW;
		}
	}
	else{
		ImgW = CenterW;
		ImgH = newImgH;
	}
}
else{
	if(ImgH > CenterH){
		ImgH = CenterH;
		ImgW = newImgW;
	}
}
$('.panorama').animate({'width':ImgW, 'height':ImgH},15000);
});
};

panorama();


var time2=setInterval(function(){
$('.panorama').stop();
var way="/templates/neon/images/galery/"+array[Math.floor(Math.random() * (count1 - 2 + 1)) + 2];
$('.panorama').attr('src', way);
panorama();
},16000);

Вот такой код. Имеется некий блок center, в него изначально помещается некая картинка(для блока применяется overflow: hidden). Размеры картинки заранее неизвестны, так же как и оберточного блока center(задается в зависимости от разрешения экрана). Я выясняю размеры картинки и блока, нахожу самые приемлемые ширину и высоту для картинки(чтобы она по максимуму влезла в блок и сохранила соотношение). А дальше простая анимация, которая, собственно, и сужает размеры картинки до размеров блока( функция panorama()). Вызываю panorama() - все чудесно. Но мне надо, чтобы сменились картинки - вещаю Interval.Первые одна-две картинки(после смены) проходят нормально:анимация работает чудесно, но последующие... Анимация не работает. Выполняется сужение в миг, без эффекта анимации. Причем начиная с 3-й(со смены) картинки ширина и высота задаются такие, которые были заданы второй(словно выдирает из кэша значения). Анимация вроде и продолжается - изменение параметров идет, но величина настолько малая, что визуально не заметно.
В общем, сос!

P.S.Консоль js бывает выдает такое:
Resource interpreted as Script but transferred with MIME type text/html
Ругается на jquery библиотеку и на сам js.
Но это вроде как несмертельный загон хрома.

Последний раз редактировалось literator, 03.01.2014 в 01:17.
Ответить с цитированием