<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Уроки PHP, Mootools, JavaScript, ActionScript, HTML, CSS &#187; эффекты</title>
	<atom:link href="http://php.infoniac.ru/tag/%d1%8d%d1%84%d1%84%d0%b5%d0%ba%d1%82%d1%8b/feed" rel="self" type="application/rss+xml" />
	<link>http://php.infoniac.ru</link>
	<description>Уроки программирования от новичка новичкам</description>
	<lastBuildDate>Thu, 09 Sep 2010 18:22:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Уроки Mootools – Использование Fx.Morph, Fx.Options и Fx.Events – Урок 11</title>
		<link>http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html</link>
		<comments>http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html#comments</comments>
		<pubDate>Thu, 17 Dec 2009 19:09:59 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[fx.events]]></category>
		<category><![CDATA[fx.morph]]></category>
		<category><![CDATA[fx.options]]></category>
		<category><![CDATA[анимация]]></category>
		<category><![CDATA[уроки mootools]]></category>
		<category><![CDATA[эффекты]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=586</guid>
		<description><![CDATA[Mootools 1.2 Fx.Morph, Fx.Options, и Fx.Events Сегодня продолжим исследовать раздел спец. эффектов нашей любимой библиотеки. Вначале, мы научимся тому, как использовать библиотеку Fx.Morph (которая, по сути, позволяет изменять несколько свойств объектов), после чего посмотрим на несколько примеров использования общих параметров спец. эффектов, применимых как к Fx.Tween и Fx.Morph. Ну а в конце, рассмотрим такие события [...]]]></description>
			<content:encoded><![CDATA[<h2>Mootools 1.2 Fx.Morph, Fx.Options, и Fx.Events</h2>
<p>Сегодня продолжим исследовать раздел спец. эффектов нашей любимой библиотеки. Вначале, мы научимся тому, как использовать библиотеку Fx.Morph (которая, по сути, позволяет изменять несколько свойств объектов), после чего посмотрим на несколько примеров использования общих параметров спец. эффектов, применимых как к Fx.Tween и Fx.Morph. Ну а в конце, рассмотрим такие события раздела Fx как &laquo;<strong>onComplete</strong>&raquo; и &laquo;<strong>onStart</strong>&laquo;. Все эти параметры и события позволят нам получить больше контроля над анимированными переходами.</p>
<h3>Fx.Morph</h3>
<h4>Создание нового эффекта Fx.Morph</h4>
<p>Запуск нового превращения (<em>morph</em> с англ. – превращение) происходит примерно также, как и запуск нового <a href="http://php.infoniac.ru/mootorials-special-effects-day10.html" title="Спец. Эффекты в Mootools – Уроки Mootools – Урок 10">эффекта tween</a>, с той разницей, что указывать изменения нужно в нескольких свойствах.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//вначале, назначим нашему элементу переменную</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_element'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//теперь создаем объект превращения</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//далее задаем параметры свойств, также как в случае с Fx.Tween</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//только сейчас можно будет устанавливать несколько свойств</span>
morphObject.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">100</span><span style="color: rgb(51, 153, 51);">,</span>
    <span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">100</span><span style="color: rgb(51, 153, 51);">,</span>
    <span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#eeeeee'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//еще можно начать превращение также, как и в случае с tween</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//с помощью функции start, но назначить изменения в нескольких свойствах</span>
morphObject.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">300</span><span style="color: rgb(51, 153, 51);">,</span>
    <span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">300</span><span style="color: rgb(51, 153, 51);">,</span>
    <span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#d3715c'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Вот это и есть тот минимум, который необходим для создания, настройки и запуска эффекта morph – превращения.</p>
<p>Ну, а для того, что бы сделать всё по-хорошему, нужно создать еще несколько переменных, отделить функции друг от друга, создать несколько событий и прослушек для хорошего контроля всего процесса:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphSet <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//далее задаем параметры свойств стилей, также как в случае с Fx.Tween</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//только сейчас можно будет устанавливать несколько свойств стилей</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">100</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">100</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#eeeeee'</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphStart <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//еще можно начать превращение также, как и в случае с tween</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//с помощью функции start, но назначить изменения в нескольких свойствах</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">300</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">300</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#d3715c'</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphReset <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//устанавливаем первоначальные значения</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#ffffff'</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_element'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//тут добавляем прослушку соответствующим кнопкам</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//и соединяем переменную morphObject с функцией</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//что позволяет нам использовать "this"</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_set'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> morphSet.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>morphObject<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_start'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> morphStart.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>morphObject<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_reset'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> morphReset.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>morphObject<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"morph_element"</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"morph_set"</span>&gt;</span>Установить<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"morph_start"</span>&gt;</span>Запустить<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"morph_reset"</span>&gt;</span>Сбросить<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span></pre>
</p></div>
</div>
<div id="morph_element"></div>
<p>
  <button id="morph_set">Установить</button><br />
  <br />
  <button id="morph_start">Запустить</button><br />
  <br />
  <button id="morph_reset">Сбросить</button>
</p>
<h2>Fx Options</h2>
<p>Вот несколько параметров, которые принимаются как Fx.Tween, так и Fx.Morph. Их просто использовать и они дают массу возможностей по управлению над вашими эффектами. Для использования этих настроек, нужно использовать конструкции такой формы:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//объявляем объекты morph и tween</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//а все параметры вставляем в фигурные скобки</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//вначале объявляем название параметра</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//потом двоеточие - :</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//и значение параметра</span>
    duration<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'long'</span><span style="color: rgb(51, 153, 51);">,</span>
    transition<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'sine:in'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>fps (frames per second) – кадры в секунду</h3>
<p>Данный параметр определяет скорость анимации. По умолчанию скорость анимации установлена на 50 кадров в секунду и этот параметр может принимать данные в виде чисел и переменные, содержащие числа.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//определяем объект, а параметры в фигурные скобки { }</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    fps<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">60</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//или</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> framesPerSecond <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">60</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>tweenElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    fps<span style="color: rgb(51, 153, 51);">:</span> framesPerSecond
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>unit</h3>
<p>Параметр <strong>unit</strong> определяет единицу измерения. Например, нужно, чтобы число 100 означало px – пиксели, % – проценты или что-лобо еще.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//все как и выше</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    unit<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'%'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>link</h3>
<p>Параметр <strong>link</strong> позволяет управлять несколькими вызовами эффекта. Например, если имеется объект с эффектом mouseover, вы же не хотите начинать его каждый раз, как пользователь наводит на него указатель? Или, если пользователь наводит мышь на объект дважды, нужно ли игнорировать следующий вызов эффекта или его нужно поставить в очередь и запустить сразу по окончании первого вызова? У параметра link есть 3 возможных значения: </p>
<ul>
<li>&#8216;ignore&#8217; (по умолчанию) – это значение игнорирует все вызовы пока предыдущее выполнение эффекта не выполнено.</li>
<li>&#8216;calcel&#8217; – отменяет текущее выполнение эффекта и запускает его с начала.</li>
<li>&#8216;chain&#8217; – позволяет чередовать вызовы эффектов и выполнять каждый из них по очереди.</li>
</ul>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//и снова назначаем объект в переменную</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'chain'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>duration – длительность</h3>
<p>Параметр <strong>duration</strong> определяет длительности анимации. Этот параметр не является идентичным параметру <strong>speed</strong> (<em>скорость</em>), но пока всей разницы лично я пока не понял. Может кто объяснит? <img src="11_files/icon_smile.gif" alt=":)" class="wp-smiley"/> Этот параметр принимает числа (милисекунды), переменную, содержащую числа, или же одно из ключевых слов, обозначающих длительность в милисекундах:</p>
<ul>
<li>&#8216;short&#8217; = 250</li>
<li>&#8216;normal&#8217; = 500 (по умолчанию)</li>
<li>&#8216;long&#8217; = 1000</li>
</ul>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//определяем объект и вставляем его параметры в фигурные скобки</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    duration<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'long'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//или</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    duration<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">1000</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>transition – переход</h3>
<p>И последний параметр, который мы рассмотрим, это параметр <strong>transition</strong>, который определяет тип перехода. Например, это должен быть плавный переход или он должен начинаться плавно, а потом ускориться под конец. В полиграфии есть штука под названием «пантонница». Предлагаю вашему вниманию <em>«транзитницу»</em> библиотеки Mootools <img src="11_files/icon_smile.gif" alt=":)" class="wp-smiley"/> :</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>tweenElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    transition<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'quad:in'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p><strong><em>Примечание</em></strong>: Первая полоса перехода оснащена зарядом красного highlight, переходящий в оранжевый highlight (мы о нем говорили <a href="http://php.infoniac.ru/mootorials-special-effects-day10.html" title="Спец. Эффекты в Mootools – Уроки Mootools – Урок 10">в прошлом уроке</a>). А вот и она, «транзитница», собственно:</p>
<div style="width: 300px; background-color: rgb(102, 102, 102);" id="quadin" class="trans">&#8216;quad:in&#8217;</div>
<div style="width: 300px;" id="quadout" class="trans stripe">&#8216;quad:out&#8217;</div>
<div style="width: 300px;" id="quadinout" class="trans">&#8216;quad:in:out&#8217;</div>
<div style="width: 300px;" id="cubicin" class="trans stripe">&#8216;cubic:in&#8217;</div>
<div style="width: 300px;" id="cubicout" class="trans">&#8216;cubic:out&#8217;</div>
<div style="width: 300px;" id="cubicinout" class="trans stripe">&#8216;cubic:in:out&#8217;</div>
<div style="width: 300px;" id="quartin" class="trans">&#8216;quart:in&#8217;</div>
<div style="width: 300px;" id="quartout" class="trans stripe">&#8216;quart:out&#8217;</div>
<div style="width: 300px;" id="quartinout" class="trans">&#8216;quart:in:out&#8217;</div>
<div style="width: 300px;" id="quintin" class="trans stripe">&#8216;quint:in&#8217;</div>
<div style="width: 300px;" id="quintout" class="trans">&#8216;quint:out&#8217;</div>
<div style="width: 300px;" id="quintinout" class="trans stripe">&#8216;quint:in:out&#8217;</div>
<div style="width: 300px;" id="expoin" class="trans">&#8216;expo:in&#8217;</div>
<div style="width: 300px;" id="expoout" class="trans stripe">&#8216;expo:out&#8217;</div>
<div style="width: 300px;" id="expoinout" class="trans">&#8216;expo:in:out&#8217;</div>
<div style="width: 300px;" id="circin" class="trans stripe">&#8216;circ:in&#8217;</div>
<div style="width: 300px;" id="circout" class="trans">&#8216;circ:out&#8217;</div>
<div style="width: 300px;" id="circinout" class="trans stripe">&#8216;circ:in:out&#8217;</div>
<div style="width: 300px;" id="sinein" class="trans">&#8216;sine:in&#8217;</div>
<div style="width: 300px;" id="sineout" class="trans stripe">&#8216;sine:out&#8217;</div>
<div style="width: 300px;" id="sineinout" class="trans">&#8216;sine:in:out&#8217;</div>
<div style="width: 300px;" id="backin" class="trans stripe">&#8216;back:in&#8217;</div>
<div style="width: 300px;" id="backout" class="trans">&#8216;back:out&#8217;</div>
<div style="width: 300px;" id="backinout" class="trans stripe">&#8216;back:in:out&#8217;</div>
<div style="width: 300px;" id="bouncein" class="trans">&#8216;bounce:in&#8217;</div>
<div style="width: 300px;" id="bounceout" class="trans stripe">&#8216;bounce:out&#8217;</div>
<div style="width: 300px;" id="bounceinout" class="trans">&#8216;bounce:in:out&#8217;</div>
<div style="width: 300px;" id="elasticin" class="trans stripe">&#8216;elastic:in&#8217;</div>
<div style="width: 300px;" id="elasticout" class="trans">&#8216;elastic:out&#8217;</div>
<div style="width: 300px;" id="elasticinout" class="trans stripe">&#8216;elastic:in:out&#8217;</div>
<p>Всего существует 30 видов переходов, которые состоят из 10 основных типов, имеющих каждый по 3 параметра.</p>
<p><strong>Основные типы</strong>:</p>
<ul>
<li>Quad</li>
<li>Cubic</li>
<li>Quart</li>
<li>Quint</li>
<li>Expo</li>
<li>Circ</li>
<li>Shine</li>
<li>Back</li>
<li>Bounce</li>
<li>Elastic</li>
</ul>
<p><strong>Параметры</strong>:</p>
<ul>
<li>Ease In</li>
<li>Ease Out</li>
<li>Ease In Out</li>
</ul>
<p>Эти три параметра отвечают за следующее: при использовании параметра <strong>In</strong> спец.эффект перехода будет использоваться только при увеличении некоторых свойств объекта, тогда как параметр <strong>Out</strong> отвечает за спец.эффект перехода при уменьшении свойствf (знаю, что звучит немного непонятно, но обратите внимание на то, как себя ведут объекты с переходом одного типа с параметрами in и out нашей «транзитницы» при наведении курсора и при его заборе с объекта). <strong>InOut</strong>, соответственно, определяет использование спец. эффекта перехода, в обоих случаях, т.е. как при увеличении определенных свойств, так и при их уменьшении.</p>
<h3>Fx Events – события</h3>
<p>События спец. эффектов позволяют выполнять определенный код в различные стадии анимационного эффекта. Эти события могут быть очень полезны для создания обратной связи с пользователями и создает еще один уровень управления над своими эффектами:</p>
<ul>
<li>onStart – срабатывает при начале эффекта</li>
<li>onCancel – срабатывает при отмене эффекта</li>
<li>onComplete – срабатывает при завершении эффекта</li>
<li>onChainComplete – срабатывает при завершении поочередных эффектов.</li>
</ul>
<p>При создании эффекта tween или morph, события определяются по тому же принципу, что и параметры эффекта, только в качестве значения событию передается функция:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//определяем новый объект переменной</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и объявляем его новым объектом класса Fx.Tween</span>
quadIn <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>quadIn<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут выставляем опции</span>
	link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'cancel'</span><span style="color: rgb(51, 153, 51);">,</span>
	transition<span style="color: rgb(51, 153, 51);">:</span> 'quad<span style="color: rgb(51, 153, 51);">:</span><span style="color: rgb(0, 0, 102); font-weight: bold;">in</span>'<span style="color: rgb(51, 153, 51);">,</span>
&nbsp;
       <span style="color: rgb(0, 102, 0); font-style: italic;">//несколько событий</span>
	onStart<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>passes_tween_element<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">//эти события применяются к нашему объекту</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">//потому эффект "highlight" применяется к</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">//началу анимации</span>
	        passes_tween_element.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#C54641'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
&nbsp;
        <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на разделители между функциями, в виде запятых,</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тогда как, после последнего параметра или события</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//запятые не ставятся</span>
        onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>passes_tween_element<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">//а тут мы применяем эффекст highlight к завершению анимации </span>
	        passes_tween_element.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#C54641'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h2>Пример</h2>
<p>Попробуем сгенерировать все переходы, показанные выше и попробуем использовать наши функции немного другими методами, какими ранее еще не пользовались. Все элементы переходов используют по две функции: одна функция запускает анимацию по наведению курсора, другая при его отводе.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//эту функцию будем запускать по событию mouseenter</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> enterFunction <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'700px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//эту функцию будем запускать по событию mouseleave</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> leaveFunction <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//определим переменными некоторые элементы на странице</span>
    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> quadIn <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadin'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> quadOut <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadout'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> quadInOut <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadinout'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    <span style="color: rgb(0, 102, 0); font-style: italic;">//потом создаем по одному элементу tween каждой переменной, объявленной выше</span>
    quadIn <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>quadIn<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'cancel'</span><span style="color: rgb(51, 153, 51);">,</span>
	transition<span style="color: rgb(51, 153, 51);">:</span> Fx.<span style="color: rgb(102, 0, 102);">Transitions</span>.<span style="color: rgb(102, 0, 102);">Quad</span>.<span style="color: rgb(102, 0, 102);">easeIn</span><span style="color: rgb(51, 153, 51);">,</span>
	onStart<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>passes_tween_element<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
		passes_tween_element.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#C54641'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
	onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>passes_tween_element<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
		passes_tween_element.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#E67F0E'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
   quadOut <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>quadOut<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'cancel'</span><span style="color: rgb(51, 153, 51);">,</span>
	transition<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'quad:out'</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    quadInOut <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>quadInOut<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'cancel'</span><span style="color: rgb(51, 153, 51);">,</span>
	transition<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'quad:in:out'</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    <span style="color: rgb(0, 102, 0); font-style: italic;">//теперь добавим каждому элементу по прослушке на события</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на использование функции .addEvents</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//которая работает также, как и .addEvent</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//только можно добавлять несколько событий, используя определённый шаблон</span>
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadin'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvents</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//вначале нужно объявить событие, поместив его в единичные кавычки,</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//отделить их двоеточием (":")</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//и объявить функцию, которая будет выполняться при этом событии.</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//в данном случае, это функция, которая связана с эффектом tween</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//разделения событий производится с помощью запятой;</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//после последнего события запятая НЕ ИСПОЛЬЗУЕТСЯ</span>
        <span style="color: rgb(51, 102, 204);">'mouseenter'</span><span style="color: rgb(51, 153, 51);">:</span> enterFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadIn<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">,</span>
        <span style="color: rgb(51, 102, 204);">'mouseleave'</span><span style="color: rgb(51, 153, 51);">:</span> leaveFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadIn<span style="color: rgb(0, 153, 0);">)</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadout'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvents</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание, как мы снова используем те же функции в этом коде</span>
        <span style="color: rgb(51, 102, 204);">'mouseenter'</span><span style="color: rgb(51, 153, 51);">:</span> enterFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadOut<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">,</span>
        <span style="color: rgb(51, 102, 204);">'mouseleave'</span><span style="color: rgb(51, 153, 51);">:</span> leaveFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadOut<span style="color: rgb(0, 153, 0);">)</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadinout'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvents</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут мы также используем те же функции</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//просто они каждый раз вызываются для работы с событием над разными элементами</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//и привязаны они к разным объектам tween</span>
        <span style="color: rgb(51, 102, 204);">'mouseenter'</span><span style="color: rgb(51, 153, 51);">:</span> enterFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadInOut<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">,</span>
        <span style="color: rgb(51, 102, 204);">'mouseleave'</span><span style="color: rgb(51, 153, 51);">:</span> leaveFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadInOut<span style="color: rgb(0, 153, 0);">)</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Спец. Эффекты в Mootools – Уроки Mootools – Урок 10</title>
		<link>http://php.infoniac.ru/mootorials-special-effects-day10.html</link>
		<comments>http://php.infoniac.ru/mootorials-special-effects-day10.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 18:26:24 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[уроки mootools]]></category>
		<category><![CDATA[эффекты]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=582</guid>
		<description><![CDATA[Библиотека Mootools, будучу основанной на Javascript, имеет довольно серьезные средвства для создание простынх и не очень спец. эффектов для придания красоты и удобства использования страницы пользователем. В этом уроке речь пойдет оь одной из самых интересных (мне лично) сторон Javascript и Mootools в частности - создание и управление спец. эффектами. Сейчас мы поговорим о самых простых эффектах, таких, как изменение размера, формы, цвета элемента, но чем дальше мы зайдем, тем больше всего интересного узнаем. Интрига? Тогда читаем дальше!]]></description>
			<content:encoded><![CDATA[<p>Еще раз добро пожаловать в наш класс по изучению библиотеки Mootools 1.2. Если вы пришли сюда впервые, советую посмотреть и предыдущие уроки, особенно, если вы не совсем знакомы с этой библиотекой (внизу страницы, около комментариев есть специальная ссылка).</p>
<p>Итак, сегодня мы рассмотрим возможности создания спец. эффектов в Mootools из библиотеки эффектов Fx.Tween. Функции этого дополнения, как и многие другие функции библиотеки, очень просты в применении, но при этом дают разработчикам очень большую свободу действий, позволяя улучшить эстетичность веб-приложений и конечно же «юзабилити» (очень модное слово сегодня в интернете; в переводе с англицкого: <strong>usability</strong> – «<em>удобство (ис)пользования</em>«).</p>
<h2>Быстрые спец.эффекты</h2>
<p>Обычно я начинаю с основ той или иной темы, но функции работы со спец. эффектами так просты в использовании, что не могу удержаться от того, чтобы именно их поставить на передовую рассмотрения.</p>
<h3>.tween();</h3>
<p>Английское слово <em>tween</em> означает мягкий переход из одного свойства в другое. В нашем случае можно сказать, что переход осуществляется от одного значения свойства, к другому. Например можно сделать так, чтобы блок <strong>div</strong> мягко и красиво растянулся с ‘width:100px’ до ‘width:300px’. А фреймворк Mootools позаботился о том,<br />
  чтобы создание таких эффектов не занимало более секунды!</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//создаем функцию</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenerFunction  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//выбираем элемент, над которым будем издеваться</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//и добавляем к нему .tween</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//а в качестве атрибутов добавляем свойство, которое будет изменяться</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//и значение на которое это свойство нужно мягко изменить</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">tween</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут мы добавляем прослушку на определенное событие (в нашем случае click)</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//к кнопке, которая должна вызвать эффект</span>
        $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_button'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenerFunction<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Ну а HTML код для этой функции выглядит так:</p>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"tween_button"</span>&gt;</span>растянуть до 300 px<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span></pre>
</p></div>
</div>
<h3>.fade();</h3>
<p>Еще одна потрясающая функция, которая позволяет тонко настроить прозрачность элемента. А настройка выглядит примерно также, как показано в коде выше:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//создаем функцию</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenFadeFifty <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
       <span style="color: rgb(0, 102, 0); font-style: italic;">//выбираем объект</span>
       <span style="color: rgb(0, 102, 0); font-style: italic;">//добавляем к нему .fade</span>
       <span style="color: rgb(0, 102, 0); font-style: italic;">//и задаем значение между 0 и 1, к которому нужно привести прозрачность элемента</span>
       <span style="color: rgb(0, 102, 0); font-style: italic;">//(0 - невидимка, 1 - полный видимка)</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">fade</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'.5'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут мы добавляем прослушку на определенное событие (в нашем случае click)</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//к кнопке, которая должна вызвать эффект</span>
        $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_fade_fifty'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenFadeFifty<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Вот и HTML код:</p>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"tween_fade_fifty"</span>&gt;</span>Снижаем видимость до 50%<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span></pre>
</p></div>
</div>
<h3>.highlight();</h3>
<p>Снова не могу обойтись без слова «замечательная»! <strong>.highlight()</strong> – это замечательная функция! Она очень узконаправленная, при этом также очень полезна. Она имеет две функции:</p>
<ol>
<li>Использование для мягкого перехода к иному цвету фона (можно посмотреть пример немногой ниже).</li>
<li>Мгновенно изменяет цвет фона, потом мягко переходит к другому цвету.</li>
</ol>
<p>Если спросите, зачем вообще тратить время на создание и потом еще и изучение таких функции, могу сказать в их оправдание, что они очень полезны, когда создаешь обратную связь с пользователями. Например, можно привлечь внимание к определенному элементу, когда что-нибудь выделяется; или изменяете цвет, потом этот цвет вспыхивает когда элемент  сохраняется и закрывается. Вообще, возможностей уйма. Все зависит от опыта и воображения разработчика.</p>
<p>А пока предлагаю рассмотреть пример использования функции. Создадим два блока <strong>div</strong>, и применим к ним оба типа функции <strong>.highlight()</strong>.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//создаем функцию</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenHighlight <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>event<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут мы будем использовать конструкцию, которую пока еще не использовали - event.target</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//которая будет передаваться как параметр функции</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//на человеческом языке это звучит как "цель события"</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//а так как эффект применим к тому же элементу, к которому прикреплена прослушка на событие</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//не нужно будет снова создавать селектор.</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание, что addEvent автоматически передаст объект события в качестве параметра</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//в функцию, которую вызывает... оч полезно <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span>
	event.<span style="color: rgb(102, 0, 102);">target</span>.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#eaea16'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//создаем вторую функцию</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//тут нужно передать сразу параметр</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//так как функция будет вызываться при определенном событии</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и ей в параметры автоматически припишут событие (как в функции выше)</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//а элемент можно вызывать с помощью конструкции .target</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//(цель события)</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenHighlightChange <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 102); font-weight: bold;">item</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут, вместо одного значения цвета, через запятую добавляем второй цвет</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//что установит первый цвет, и целевой цвет перехода</span>
        <span style="color: rgb(0, 0, 102); font-weight: bold;">item</span>.<span style="color: rgb(102, 0, 102);">target</span>.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#eaea16'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'#333333'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'mouseover'</span><span style="color: rgb(51, 153, 51);">,</span> tweenHighlight<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweenerChange'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'mouseover'</span><span style="color: rgb(51, 153, 51);">,</span> tweenHighlightChange<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>Вкусные примеры</h3>
<p>Вот она – самая интересная часть любого урока. Помните, еще со школы – все что там училка трындит, очень часто кажется бессмыслицей, но если правильно подобрать пример – все обретает очень четкий смысл. Вот они наши примеры. Понажимайте на кнопки в разном порядке и обратите внимание на поведение объекта:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenerFunction  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">tween</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenerGoBack  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">tween</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'100px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//функция .fade еще принимает ключевые слова 'out' и 'in',</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//что эквивалентно 0 и 1 соответственно</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenFadeOut <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">fade</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'out'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenFadeFifty <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">fade</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'.5'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenFadeIn <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">fade</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'in'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenHighlight <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>event<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	event.<span style="color: rgb(102, 0, 102);">target</span>.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#eaea16'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_button'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenerFunction<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_reset'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenerGoBack<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_fade_out'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenFadeOut<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_fade_fifty'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenFadeFifty<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_fade_in'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenFadeIn<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'mouseover'</span><span style="color: rgb(51, 153, 51);">,</span>tweenHighlight<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>При наведении курсора, кстати, работает первый тип функции <strong>.highlight()</strong>.</p>
</p>
<div id="tweener"></div>
<p><span class="pseudobutton" id="tween_button">Ширина 300</span> &#8212; <span class="pseudobutton" id="tween_reset">Ширина 100</span> &#8212; <span class="pseudobutton" id="tween_fade_out">В невидимку</span> &#8212; <span class="pseudobutton" id="tween_fade_fifty">На половину видно/невидно</span> &#8212; <span class="pseudobutton" id="tween_fade_in">Видимка</span></p>
<p>А этот одинокий квадратик иллюстрирует работу второго типа функции <strong>.highlight()</strong>.</p>
<div id="tweenerChange" style="border: 1px solid black; background-color: rgb(255, 255, 255); width: 100px; height: 100px;"></div>
<h2>И это еще не всё…</h2>
<h3>Создание нового эффекта</h3>
<p>Если потребовалось больше гибкости в управлении эффектами, или еще какие-то дополнительные возможности, а такое бывает, скажу я вам,  нужно будет всего навсего создать новый эффект, вместо использования уже имеющихся эффектов в Mootools. Ниже пример создания нового эффекта. Обратите внимание на ключевое слово <strong>new</strong>, которое используется для создания нового объекта Fx.Tween:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//вначале назначаем объект, над которым собираемся издеваться своим новым эффектом,</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и назначаем этот объект новой переменной</span>
        <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTweenElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'newTween'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
       <span style="color: rgb(0, 102, 0); font-style: italic;">//теперь создаем новый эффект, которому передаем переменную с объектом в качестве параметра</span>
       <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTween <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>newTweenElement<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"newTween"</span>&gt;</span><span style="color: rgb(128, 128, 128); font-style: italic;">&lt;!-- это элемент, к которому применим новый Tween эффект--&gt;</span><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(128, 128, 128); font-style: italic;">&lt;!-- а это кнопка, которая очень скоро сыграет свою главную роль --&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"netTween_set"</span>&gt;</span>Назначить<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span></pre>
</p></div>
</div>
<h3>Установка стилей</h3>
<p>При создании нового объекта Tween из элемента, можно начинать назначать свойства стилей с помощью функции <strong>.set();</strong>. Эта функция работает моментально и прицип ее работы практически ничем не отличается от <strong>.setStyle();</strong>, рассмотренной нами в <a title="Манипулирование стилями элементов страницы с помощью Mootools" href="http://php.infoniac.ru/mootools-day7-styles.html">7-м уроке</a>:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTweenSet <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на использование ключевого слова "this"</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//немного далее рассмотрю более подробно использование этого слова</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</p></div>
</div>
<p>Когда-то, уже очень давно, я говорил, что определять функции нужно за пределами события domready, но в этом случае, мы создадим эффект внутри этого события, после чего сошлемся на него извне. Мы уже также как-то говорили о том, как можно передавать параметры извне события domready (путем созания анонимной функции).</p>
<h3>.bind()</h3>
<p>С помощью функции <strong>.bind();</strong> можно сделать любой параметр равным ключевому слову &laquo;<strong>this</strong>&raquo; в спектре работы определенной функции:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//вначале добавляем событие клика к кнопке, которую видели немного выше</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//потом, помимо простого вызова функции</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//мы добавляем к ней ".bind()"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и помещаем в скобки все, что мы хотим передать этой функции</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и теперь, внутри функции "newTweenSet," ключевое слово "this"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//будет относиться к переменной "newTween"</span>
$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'netTween_set'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> newTweenSet.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>newTween<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Таким образом, если взглянем на функцию выше, &laquo;this&raquo; теперь ровняется тому, что мы говорим «newTween» (который, по совместительству, и является нашим объектом классса tween)</p>
<p>А теперь, соединим все это в единое целое:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//вот наша функция</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTweenSet <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//так как мы использовали bind, "this" теперь относится к "newTween"</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//т.е. на самом деле мы говорим</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//newTween.set('width', '300px')</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//вначале назначаем нашему элементу переменную</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTweenElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'newTween'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    <span style="color: rgb(0, 102, 0); font-style: italic;">//потом создаем новый эффект FX.Tween и назначаем его своей собственной переменной</span>
    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTween <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>newTweenElement<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    <span style="color: rgb(0, 102, 0); font-style: italic;">//а сейчас добавляем наше событие, в котором связываем newTween и newTweenSet с помощью bind</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'netTween_set'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> newTweenSet.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>newTween<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>Запуск эффекта tween</h3>
<p>А теперь, когда мы полностью настроили наш объект, наша функция находится вне события <em>domready</em> и мы помним, как с помощью функции <strong>.set();</strong> назначить параметр стиля, потому, давайте пройдем к, собственно, спец.эффектам. Запустить эффект – очень просто! Аналогично <strong>.fade();</strong> использовать <strong>.start();</strong> можно двумя методами.</p>
<ol>
<li>Провести преобразование от одного значения свойства стиля до другого</li>
<li>Назначить значение свойства стиля, потом перейти у другому</li>
</ol>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//эта строчка изменит текущее значение свойства width на 300px</span>
newTween.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//эта строчка установит свойство width на 100px, потом сделает плавный переход на 300px</span>
newTween.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'100px'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Теперь можно начать (с помощью функции <strong>.start();</strong>) выполнение эффекта из функции и спользовать «this», если была использована функция <strong>.bind();</strong> для связи с «newTween».</p>
<h3>По эффектам tween пока все&#8230;</h3>
<p>Несмотря на то что о эффектах tween еще можно долго говорить. Например, если нужно наложить спец. эффекты на несколько свойств стилей одновременно, можно использовать функцию <strong>.morph();</strong>. Можно использовать библиотеку эффектов и переходов для изменения тех самых переводов. Но этот урок и так получается довольно длинным, потому оставим это все на другие уроки.</p>
<p style="text-align: right;"><strong>Всем удачи и успехов!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootorials-special-effects-day10.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
