Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2011, 11:36
Интересующийся
Отправить личное сообщение для kent666 Посмотреть профиль Найти все сообщения от kent666
 
Регистрация: 19.04.2011
Сообщений: 27

Помогите разобраться с анимацией
всем привет. С книжки Девида Фланегена решил протестировать скрипт, но почему то он не работает.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
/**
* AnimateCSS.js:
* Этот файл определяет функцию с именем animateCSS(), служащую основой
* для создания анимации на базе CSS. Аргументы функции:
*
* element: Анимируемый HTML-элемент.
* numFrames: Общее число кадров в анимации.
* timePerFrame: Количество миллисекунд отображения каждого кадра.
* animation: Объект, определяющий анимацию; описывается далее.
* whendone: Необязательная функция, вызываемая по завершении анимации.
* Если функция указана, ей в качестве аргумента передается
* значение аргумента element.
*
* Функция animateCSS() просто определяет платформу для анимации. Выполняемую
* анимацию определяют свойства объекта animation. Каждое свойство должно
* иметь то же имя, что и свойство CSS-стиля. Значением каждого свойства
* должна быть функция, возвращающая значения для этого свойства стиля.
* Каждой функции передается номер кадра и общий промежуток времени, прошедший
* с начала анимации, а функция может использовать это для вычисления
* значения стиля, которое она должна вернуть для данного фрейма.
* Например, чтобы анимировать изображение так, чтобы оно передвигалось
* из левого верхнего угла, вы можете вызвать функцию animateCSS так:
*
* animateCSS(image, 25, 50, // Анимировать изображение в течение 25 кадров
* // по 50 мс каждый
* { // Установить атрибуты top и left для каждого кадра:
* top: function(frame,time) { return frame*8 + "px"; },
* left: function(frame,time) { return frame*8 + "px"; }
* });
*
**/
function animateCSS(element, numFrames, timePerFrame, animation, whendone) {
	var frame = 0; // Текущий номер кадра
	var time = 0; // Общее время анимации, прошедшее с начала
		// Определить вызов displayNextFrame() каждые timePerFrame миллисекунд.
		// Так будет отображаться каждый кадр анимации.
	var intervalId = setInterval(displayNextFrame, timePerFrame);
		// На этом работа animateCSS() завершается, но предыдущая строка гарантирует,
		// что следующая вложенная функция будет вызываться для каждого кадра анимации.
	function displayNextFrame() {
		if (frame >= numFrames) { // Проверить, не закончилась ли анимация
			clearInterval(intervalId); // Если да - прекратить вызовы
			if (whendone) whendone(element); // Вызвать функцию whendone
			return; // И завершить работу
		}
		// Обойти в цикле все свойства, определяемые объектом анимации
		for(var cssprop in animation) {
				// Для каждого свойства вызвать его функцию анимации, передавая
				// ей номер кадра и прошедшее время. Используем возвращаемое
				// функцией значение в качестве нового значения соответствующего
				// свойства стиля для указанного элемента. Используем блок
				// try/catch, чтобы игнорировать любые исключительные ситуации,
				// возникающие из-за неверных возвращаемых значений.
			try {
				element.style[cssprop] = animation[cssprop](frame, time);
			} catch(e) {}
		}
		frame++; // Увеличить номер кадра
		time += timePerFrame; // Увеличить прошедшее время
	}
}	
</script>
</head>
<body>
<div id="title" style="                
                position: absolute;
                top: 300px;
				width: 300px;
				height: 300px;
				background-color: green;
                clip: rect(auto 10px auto auto);">Текст</div>
<script>
	// Анимируем элемент с идентификатором "title", используя 40 кадров
	// по 50 миллисекунд каждый
animateCSS(document.getElementById("title"), 40, 50,
	{ // Так устанавливаются свойства top и clip для каждого кадра:
		top: function(f,t) { return 300f*5 + "px"; }
		clip: function(f,t) {return "rect(auto "+f*10+"px auto auto)";}
	});	
</script>
</body>
</html>

Заранее спасибо! Я уже пол дня не могу понять в чем загвоздка

Последний раз редактировалось kent666, 26.10.2011 в 11:47.
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2011, 12:08
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

А в книжке не было советов, как отлаживать скрипты? =)
Firebug, например, что пишет?
Ответить с цитированием
  #3 (permalink)  
Старый 26.10.2011, 12:13
Интересующийся
Отправить личное сообщение для kent666 Посмотреть профиль Найти все сообщения от kent666
 
Регистрация: 19.04.2011
Сообщений: 27

Я разобрался) Ошибка банальная)))
animateCSS(document.getElementById("title"), 40, 50,
	{ // Так устанавливаются свойства top и clip для каждого кадра:
		top: function(f,t) { return f*5 + "px"; },
        clip: function(f,t) {return "rect(auto "+f*10+"px auto auto)";}});

перенес }); и ВСЕ!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчёт дней до конца акции - помогите разобраться со скриптом Chataine Общие вопросы Javascript 0 24.07.2011 14:48
Помогите разобраться с this Nigga2102 Элементы интерфейса 4 04.05.2011 18:28
Помогите оптимизировать скрипт смены изображений с анимацией Khmelevsky Элементы интерфейса 5 06.03.2010 19:02
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44
Помогите разобраться с галереей IMAGIN yana_studio Общие вопросы Javascript 4 12.12.2009 17:24