<?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>Animation &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/animation/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Fri, 25 Oct 2013 01:24:24 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>スクロールに応じたアニメーションにイージング関数を適用したい</title>
		<link>https://blog.mach3.jp/2013/10/25/easing-for-scroll-animation.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 25 Oct 2013 01:24:24 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jquery.easing]]></category>
		<category><![CDATA[Parallax]]></category>
		<category><![CDATA[Scroll]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3555</guid>

					<description><![CDATA[縦長にスクロールしてアニメーションを楽しませるサイトも今では珍しくなくなってきました。 実装する機会もぼちぼちありそうなので、今日はそういったアニメーションでイージング関数を利用するお話です。 スクロールに応じたアニメー [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>縦長にスクロールしてアニメーションを楽しませるサイトも今では珍しくなくなってきました。 実装する機会もぼちぼちありそうなので、今日はそういったアニメーションでイージング関数を利用するお話です。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-7Q0kBo6sjaU/Umks_jssugI/AAAAAAAACOQ/WpJh8DuV5Sg/s400/20131025-00.png" alt="スクロールに応じたアニメーションにイージング関数を適用したい"/></figure>



<p></p>



<span id="more-3555"></span>



<h2 class="wp-block-heading">スクロールに応じたアニメーションって何</h2>



<p>「パララックス」と一言にいってしまえば良いのですが、 視差効果で立体的に見せる手法を指して「パララックス」と言うのならば そうではないコンテンツも多くあると思いますので、 「スクロール量に応じてコンテンツをアニメーションさせる事」を、 ここではそのように呼称したいと思います。</p>



<p>ちょっと長いので「スクロールアニメーション」でいいでしょうか。</p>



<h3 class="wp-block-heading">シンプルな例</h3>



<p>具体的にどういう事なのかをごくシンプルなコードで表現してみます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-built_in">window</span>).on(<span class="hljs-string">"scroll"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-keyword">var</span> scroll = $(<span class="hljs-built_in">window</span>).scrollTop();
    $(<span class="hljs-string">".box"</span>).css({
        <span class="hljs-string">"top"</span>: scroll,
        <span class="hljs-string">"left"</span>: scroll * <span class="hljs-number">2</span>
    });
});
</code></span></pre>


<p>&#8220;.box&#8221; のtop/leftを現在のスクロール量に合わせて変化させる処理をスクロールイベントに登録しています。 位置の他にも、要素のサイズや色、スプライトされた背景画像のポジションなどを変化させれば ユーザーのスクロールにあわせて多彩な表現が出来ますね。</p>



<h3 class="wp-block-heading">requestAnimationFrameを使ってみる</h3>



<p>ここでスクロールイベントの代わりに、新しめの実装の <a href="https://developer.mozilla.org/ja/docs/Web/API/window.requestAnimationFrame">requestAnimationFrame</a> を使ってみようと思います。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> step = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-keyword">var</span> scroll = $(<span class="hljs-built_in">window</span>).scrollTop();
    $(<span class="hljs-string">".box"</span>).css({
        <span class="hljs-string">"top"</span>: scroll,
        <span class="hljs-string">"left"</span>: scroll * <span class="hljs-number">2</span>
    });
    requestAnimationFrame(step);
};
step();
</code></span></pre>


<p>cf) <a href="/2013/10/18/request-animation-frame.html">requestAnimationFrameについて調べてみた</a></p>



<h2 class="wp-block-heading">jQuery.easing プラグインを利用してイージングをかける</h2>



<p>本題です。上のコードではイージングが一切かからない状態でアニメーションされます。 これにイージングをかけたいです。しかも楽をしてかけたい。すごくかけたい。</p>



<p>JavaScriptでのイージングといえば <a href="">jQuery.easing プラグイン</a> がおなじみですね。 このプラグインで宣言されるイージングの関数（ $.easing.* ）を使えば簡単に出来そうですが、 まずイージング関数に何を渡せばいいかを調べてみます。</p>



<h3 class="wp-block-heading">実際にイージング関数に渡されている引数</h3>



<p>jQueryにはじめから同梱されているイージングは &#8220;swing&#8221; と &#8220;linear&#8221; があります。 まずはこれらの関数で引数をどのようにとっているか、コードを拝見してみます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">jQuery.easing = {
    <span class="hljs-attr">linear</span>: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"> p </span>) </span>{
        <span class="hljs-keyword">return</span> p;
    },
    <span class="hljs-attr">swing</span>: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"> p </span>) </span>{
        <span class="hljs-keyword">return</span> <span class="hljs-number">0.5</span> - <span class="hljs-built_in">Math</span>.cos( p*<span class="hljs-built_in">Math</span>.PI ) / <span class="hljs-number">2</span>;
    }
};
</code></span></pre>


<p>この p はどうやら開始値から終了値までの範囲で今どの地点にいるのかを渡しているみたいです。</p>



<p>では jQuery.easing プラグインではどのようになっているか見てみましょう。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">easeOutQuad: <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">x, t, b, c, d</span>) </span>{
    <span class="hljs-keyword">return</span> -c *(t/=d)*(t<span class="hljs-number">-2</span>) + b;
},
</code></span></pre>


<p>この &#8220;easeOutQuad&#8221; は &#8220;swing&#8221; の代替として宣言されている関数なわけですが、引数を見てみると全然数が違う上に、第一引数の &#8220;x&#8221; を使用していません。 <a href="">jQuery.easing プラグイン</a> のWebサイトを参照すると、右下の方に引数の解説が記載されています。 軽く拙訳を書いてみると、こんな感じみたいです。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">jQuery.easing.method(
    <span class="hljs-literal">null</span>,          <span class="hljs-comment">// 式では使用しない</span>
    current_time,  <span class="hljs-comment">// 現在の時間</span>
    start_value,   <span class="hljs-comment">// 開始値</span>
    end_value,     <span class="hljs-comment">// 終了値</span>
    total_time     <span class="hljs-comment">// 所要時間</span>
)
</code></span></pre>


<p>スクロール量をベースにしてイージングをかけるためには、&#8221;current_time&#8221; と &#8220;total_time&#8221; をスクロール量におきかえてあげればうまくいきそうですね。</p>



<h3 class="wp-block-heading">実際に簡単に動かしてみる</h3>



<p>アニメーションを開始・終了するスクロール位置を定義してやり、その差を duration (&#8220;total_time&#8221;) として扱います。 現在のスクロール位置は、関数に渡す前にスクロール開始位置を引いてやりましょう。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">/**
 * スクロール量が 500-1000 に差し掛かった時に
 * ".box" の "left" を 100-1000 の間でアニメーションさせる
 */</span>
(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-keyword">var</span> box, start, end, <span class="hljs-keyword">from</span>, to;

    box = $(<span class="hljs-string">".box"</span>);
    scrollStart = <span class="hljs-number">500</span>; <span class="hljs-comment">// アニメーションを開始するスクロール位置</span>
    scrollEnd = <span class="hljs-number">1000</span>;  <span class="hljs-comment">// アニメーションを終了するスクロール位置</span>
    <span class="hljs-keyword">from</span> = <span class="hljs-number">100</span>;  <span class="hljs-comment">// "left" の開始値</span>
    to = <span class="hljs-number">1000</span>;   <span class="hljs-comment">// "left" の終了値</span>

    step = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
        <span class="hljs-keyword">var</span> scroll, progress;
        scroll = $(<span class="hljs-built_in">window</span>).scrollTop();
        <span class="hljs-keyword">if</span>(scroll &lt; scrollStart){
            box.css(<span class="hljs-string">"left"</span>, <span class="hljs-keyword">from</span>);
        } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(scroll &gt; scrollEnd){
            box.css(<span class="hljs-string">"left"</span>, to);
        } <span class="hljs-keyword">else</span> {
            <span class="hljs-comment">// scroll と duration から現在位置を割合で取得</span>
            progress = $.easing.easeOutQuad(
                <span class="hljs-literal">null</span>,
                scroll - scrollStart,
                <span class="hljs-number">0</span>,
                <span class="hljs-number">1</span>,
                scrollEnd - scrollStart
            );
            <span class="hljs-comment">// 取得した割合を掛けて値を取得し、"left" に設定する</span>
            box.css(<span class="hljs-string">"left"</span>, <span class="hljs-keyword">from</span> + (to - <span class="hljs-keyword">from</span>) * progress);
        }
        requestAnimationFrame(step);
    };

    step();
}());
</code></span></pre>


<h3 class="wp-block-heading">&#8220;linear&#8221; はどうなるのか</h3>



<p>jQueryに同梱されているイージング関数2点のうち、&#8221;swing&#8221; は jquery.easing プラグインで再定義されているので問題ないのですが、 &#8220;linear&#8221; は上のコードのように使おうとすると引数が合わずに正常に動きません。</p>



<p>取り急ぎですが、引数を合わせた形で再定義してみます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$.easing.linear = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">x, t, b, c, d</span>)</span>{
    <span class="hljs-keyword">if</span>(x !== <span class="hljs-literal">null</span>){ <span class="hljs-keyword">return</span> x; }
    <span class="hljs-keyword">return</span> b + ((c - b) * (t / d));
};
</code></span></pre>


<h2 class="wp-block-heading">いろんなイージングで動かしてみたデモ</h2>



<p><iframe width="100%" height="340" src="http://jsfiddle.net/mach3ss/TTHaq/embedded/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>



<h2 class="wp-block-heading">まとめ</h2>



<p>スクロールアニメーションを操作するライブラリを先日見かけたのですが、 そのライブラリではいくつかのイージング関数を独自に定義していました。 （あろうことか、どのライブラリのコードを読んでいたのか、書いているうちに忘却してしまいました…）</p>



<p>せっかくなので様々なイージング関数を楽して使えたらな、と思い調べてみた記録でした。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>requestAnimationFrame について学んでみた</title>
		<link>https://blog.mach3.jp/2013/10/18/request-animation-frame.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 18 Oct 2013 01:47:24 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3537</guid>

					<description><![CDATA[requestAnimationFrame は、JavaScriptベースのアニメーションの為の比較的新しめの実装です。 今更感たっぷりですが、今回はそれを試しにいじくってみようと思います。 requestAnimati [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>requestAnimationFrame は、JavaScriptベースのアニメーションの為の比較的新しめの実装です。 今更感たっぷりですが、今回はそれを試しにいじくってみようと思います。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-YoGbZtpld6Q/Ul_pgMRqrhI/AAAAAAAACNo/FTTXxxAySSU/s400/20131017-00.png" alt="requestAnimationFrame について調べてみた"/></figure>



<p></p>



<span id="more-3537"></span>



<h2 class="wp-block-heading">requestAnimationFrame とは</h2>



<p><a href="https://developer.mozilla.org/ja/docs/Web/API/window.requestAnimationFrame">window.requestAnimationFrame &#8211; Web API リファレンス | MDN</a></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>window.requestAnimationFrame() メソッドは、ブラウザに描画させたいアニメーションを指定し、次の再描画の前に、アニメーションを更新する指定した関数を呼び出すように要求します。このメソッドは再描画する前に呼び出されるコールバックメソッドを引数にひとつとります。</p>
</blockquote>



<p>ちょっとわかりにくいですが、 要するに次の再描画のタイミングで処理を実行する事を予約できる setTimeout のような代物だと解釈しています。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> step = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-comment">/* アニメーションの処理 */</span>
    requestAnimationFrame(step);
};
step();
</code></span></pre>


<p>このように書くと、step内の処理がおよそ60FPSぐらいの頻度で繰り返されます。 つまり、setTimeoutで書きなおすとこんな事をしている事になるのでしょうか。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> timer = <span class="hljs-literal">null</span>;
<span class="hljs-keyword">var</span> step = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    clearTimeout(timer);
    <span class="hljs-comment">/* アニメーションの処理 */</span>
    timer = setTimeout(step, <span class="hljs-number">1000</span> / <span class="hljs-number">60</span>);
};
step();
</code></span></pre>


<h2 class="wp-block-heading">タイマーとrequestAnimationFrame</h2>



<p>挙動としては近しい物なのですが、具体的にこの2つが異なる点はこんな感じなのでしょうか？</p>



<ul class="wp-block-list">
<li>requestAnimationFrame はウィンドウがアクティブでない時にFPSを落とす</li>



<li>requestAnimationFrame は再描画出来るタイミングで実行されるので、FPSを保証しない<br /><br />（setTimeoutが必ず保証するという意味ではない）</li>



<li>setTimeoutはなにがなんでも言われた時間に実行しようとする実直なやつ</li>
</ul>



<p>特に前者の違いはパフォーマンスに結構影響を及ぼしそうです。 非アクティブにしたタブの中でゴリゴリメモリを消費していく… なんていう事が起きにくくなりますね。</p>



<p>タイマーよりアニメーションに適した実装と言えそうです。</p>



<h2 class="wp-block-heading">ブラウザ対応</h2>



<p>気になるブラウザ対応ですが、MDNのリファレンスのサンプルから拝借してきたのが下記のコードです。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
    <span class="hljs-keyword">var</span> requestAnimationFrame = <span class="hljs-built_in">window</span>.requestAnimationFrame
    || <span class="hljs-built_in">window</span>.mozRequestAnimationFrame
    || <span class="hljs-built_in">window</span>.webkitRequestAnimationFrame
    || <span class="hljs-built_in">window</span>.msRequestAnimationFrame;
    <span class="hljs-built_in">window</span>.requestAnimationFrame = requestAnimationFrame;
}());
</code></span></pre>


<p>問題のIEですが、調べた限りではIE10から &#8220;requestAnimationFrame&#8221; と &#8220;msRequestAnimationFrame&#8221; ともに使用可能で、IE9以前は非対応とのことなので、&#8221;msRequest〜&#8221; のくだりは不要そうですね。</p>



<p>該当箇所を削除して、非常に簡単ではありますが非対応環境用のコードを足してみましょう。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">win</span>)</span>{
    <span class="hljs-keyword">var</span> timer = <span class="hljs-literal">null</span>, polyfill;
    polyfill = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">callback</span>)</span>{
        clearTimeout(timer);
        setTimeout(callback, <span class="hljs-number">1000</span> / <span class="hljs-number">60</span>);
    };
    win.requestAnimationFrame = win.requestAnimationFrame
    || win.mozRequestAnimationFrame
    || win.webkitRequestAnimationFrame
    || polyfill;
}(<span class="hljs-built_in">window</span>));
</code></span></pre>


<p>これでどの環境でも「だいたい」同じような動きをするようになると思います。</p>



<h2 class="wp-block-heading">実際に何か動かしてみる</h2>



<p>早速、簡単なデモを動かしてみます。クリックした場所に顔文字が近づいて行きます。</p>



<p><iframe width="100%" height="300" src="http://jsfiddle.net/mach3ss/uKnap/1/embedded/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>



<h3 class="wp-block-heading">JavaScript（抜粋）</h3>


<pre class="wp-block-code"><span><code class="hljs language-php">(<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span></span>{
    <span class="hljs-keyword">var</span> target, $el, step;

    target = { left: <span class="hljs-number">0</span>, top: <span class="hljs-number">0</span> };
    $el = $(<span class="hljs-string">".sample"</span>);
    step = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span></span>{
        <span class="hljs-keyword">var</span> pos = $el.offset();
        $el.css({
            left: <span class="hljs-string">"+="</span> + (target.left - pos.left) / <span class="hljs-number">5</span>,
            top: <span class="hljs-string">"+="</span> + (target.top - pos.top) / <span class="hljs-number">5</span>
        });
        requestAnimationFrame(step);
    };
    step();

    $(document).on(<span class="hljs-string">"click"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(e)</span></span>{
        target.left = e.clientX;
        target.top = e.clientY;
    });

}());
</code></span></pre>


<h2 class="wp-block-heading">まとめ</h2>



<p>requestAnimationFrameは、jQueryでは諸問題があって現在は採用していない様です。<br />
cf) <a href="http://stackoverflow.com/questions/7999680/why-doesnt-jquery-use-requestanimationframe">Why doesn&#8217;t jQuery use requestAnimationFrame? &#8211; Stack Overflow</a><br />
確かに時間ベースの処理と相性が悪い部分はありそうです。</p>



<p>取り急ぎインターバルで何かを監視したい時などに使ってみるか、 あるいは、$.fn.animate が苦手な部分で活躍してくれるかもしれませんね。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>FlashCS6+で生成したスプライトシートをjQueryでロードする実験（後編）</title>
		<link>https://blog.mach3.jp/2013/05/14/load-flash-sprite-with-jquery-02.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 14 May 2013 01:22:38 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Sprite]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3099</guid>

					<description><![CDATA[前編に引き続き、FlashCS6のスプライトシートをjQueryで処理するお話です。 処理をライブラリにまとめましたので、ご紹介します。 FlashSprite.js Flashspritejs by mach3 Ado [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="/2013/05/load-flash-sprite-with-jquery.html">前編</a>に引き続き、FlashCS6のスプライトシートをjQueryで処理するお話です。 処理をライブラリにまとめましたので、ご紹介します。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-xNwj9NkeFQs/UY_hqVz19JI/AAAAAAAACCQ/WNZ11DXGmtg/s400/20130513-00.png" alt="FlashCS6+で生成したスプライトシートをjQueryでロードする実験（後編）"/></figure>



<p></p>



<span id="more-3099"></span>



<h2 class="wp-block-heading">FlashSprite.js</h2>



<h3 class="wp-block-heading"><a href="http://mach3.github.io/flashspritejs/">Flashspritejs by mach3</a></h3>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/-kFIADlJY_kM/UZFMlLZzTJI/AAAAAAAACCw/da9hADPDiDA/s500/20130514-01.png" alt="Flashspritejs by mach3"/></figure>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Adobe Flash CS6+ で出力されたスプライトアニメーションシートを再生するjQueryベースのライブラリ。</p>
</blockquote>



<p>前回の処理に加えて停止や逆再生、各種設定やイベント発火等の機能を付け足した物です。 使い方は上記URLで概ねわかると思いますが、簡単にご紹介しておきます。</p>



<h2 class="wp-block-heading">簡単な使い方</h2>



<h3 class="wp-block-heading">1. FlashCS6+でスプライトシートを生成する</h3>



<p>FlashIDE上で、ステージに配置したアニメーションインスタンスを右クリックし、 コンテキストメニューから<em>「スプライトシートを生成」</em>を選択してダイアログを開きます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-rEkIabD4d0E/UY_f01DzSxI/AAAAAAAACB4/dfA1WWWMeeU/s498/20130513-02.png" alt="スプライトシートを生成"/></figure>



<p></p>



<p>データ形式は<em>「JSON-Array」</em>を選択し、<em>「書き出し」</em>を行います。 ステージ上でインスタンス名を付けておけばその名前でファイルが作成されます。</p>



<h3 class="wp-block-heading">2. 配置する</h3>



<p>画像ファイルとJSONファイルが出力されるので、任意の場所に保存しましょう。 今回はこんな感じにしてみます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>./<br />
  ├ data/<br />
  │ ├ sprite.json<br />
  │ └ sprite.png<br />
  └ index.html</p>
</blockquote>



<h3 class="wp-block-heading">3. ロードする</h3>



<p>jQueryとFlashSprite.jsを読み込んで、新しい要素を生成してスプライトアニメーションを初期化します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-keyword">var</span> myAnimation = $(<span class="hljs-string">"&lt;div&gt;"</span>);
        myAnimation.flashSprite({
                <span class="hljs-attr">src</span> : <span class="hljs-string">"data/sprite.json"</span>
        })
        .appendTo($(<span class="hljs-string">"body"</span>));
}());
</code></span></pre>


<p><strong>$.fn.flashSprite()</strong> にオプションを渡す事で初期化され、要素にロードされます。 デフォルトの設定では自動再生がオンになっているので、初期化した時点で再生がはじまります。</p>



<p>無事再生されましたか？</p>



<h2 class="wp-block-heading">イベントとメソッドを使ってみる</h2>



<p>イベントとメソッドを使う事でもう少し細かい処理をする事ができます。 下の例では、データロードの完了を待って、アニメーションを配置・フェードインさせています。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-keyword">var</span> myAnimation = $(<span class="hljs-string">"&lt;div&gt;"</span>);

        <span class="hljs-comment">// JSONと画像がロードされると "flashSpriteReady" イベントが発火します</span>
        myAnimation.on(<span class="hljs-string">"flashSpriteReady"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
                $(<span class="hljs-keyword">this</span>).hide()
                .appendTo($(<span class="hljs-string">"body"</span>))
                .flashSprite(<span class="hljs-string">"config"</span>, { <span class="hljs-attr">fps</span> : <span class="hljs-number">60</span> }) <span class="hljs-comment">// "config" メソッドで設定変更</span>
                .flashSprite(<span class="hljs-string">"play"</span>) <span class="hljs-comment">// "play" メソッドで再生</span>
                .fadeIn();
        });

        myAnimation.flashSprite({
                <span class="hljs-attr">src</span> : <span class="hljs-string">"data/sprite.json"</span>,
                <span class="hljs-attr">autoPlay</span> : <span class="hljs-literal">false</span>, <span class="hljs-comment">// 自動再生をオフに</span>
                <span class="hljs-attr">repeat</span> : <span class="hljs-literal">false</span> <span class="hljs-comment">// 繰り返し再生をオフに</span>
        });
}());
</code></span></pre>


<p>イベントには、ロード完了時に発火される <em>&#8220;flashSpriteReady&#8221;</em> の他に、 停止時の <em>&#8220;flashSrpiteEnd&#8221;</em>、フレーム毎に発火する <em>&#8220;flashSpriteEnterFrame&#8221;</em> が用意されています。</p>



<p>また、<em>jQuery.fn.flashSprite()</em> にメソッド名を文字列で渡すことでメソッドを呼び出す事ができます。 第二引数以降はそのメソッドに渡されます。</p>



<p>それぞれの詳細は<a href="http://mach3.github.com/flashspritejs">ドキュメント</a>をご参照ください。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>と、こんな感じで作ってみました。</p>



<p>実際のところ、機能豊富なCreateJSを利用すべき場面の方が多いと思いますが、 その為に大きなソースを追加で読み込まなければならないのも事実。</p>



<p>ただパラパラ漫画を再生する為だけに大仰な…と感じるようなケースなら、 こんな単機能のライブラリも使い道があるのかな、と思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>FlashCS6+で生成したスプライトシートをjQueryでロードする実験（前編）</title>
		<link>https://blog.mach3.jp/2013/05/13/load-flash-sprite-with-jquery.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Mon, 13 May 2013 01:28:32 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Sprite]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3090</guid>

					<description><![CDATA[結構前の話ではありますが、FlashはCS6から、アニメーションを「スプライトシート」として書き出す機能が実装されています。 これはCreateJS等で簡単に再生出来る様になる便利な機能ですが、 今回はこのスプライトシー [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>結構前の話ではありますが、FlashはCS6から、アニメーションを「スプライトシート」として書き出す機能が実装されています。 これはCreateJS等で簡単に再生出来る様になる便利な機能ですが、 今回はこのスプライトシートをjQueryで再生してみようというお話です。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/-xNwj9NkeFQs/UY_hqVz19JI/AAAAAAAACCQ/WNZ11DXGmtg/w400-h150-no/20130513-00.png" alt="FlashCS6+で生成したスプライトシートをjQueryでロードする実験"/></figure>



<p></p>



<span id="more-3090"></span>



<h2 class="wp-block-heading">スプライトシートってなに</h2>



<p>スプライトシートは、CSSスプライトを利用したアニメーションテクニックです。 アニメーションの全フレームを一つの画像に並べて配置し、 要素の背景画像として埋め込んで background-position を変更していくことで パラパラ漫画のようなアニメーションを再生します。概要はこんな感じ。</p>



<p>一年程前、CS6が出るちょっとだけ前に似たような記事を書いたことがありました。</p>



<ul class="wp-block-list">
<li><a href="/2012/05/moviecrop-js.html">シンプルなスプライトアニメーションライブラリ 「MovieCrop.js」 | Mach3.laBlog</a></li>
</ul>



<p>上の記事はまだCS6が出る前だったので自力でスプライトシートを作成する前提のものですが、 せっかく出力する機能があるんだから利用させて頂こうという事で、今回の記事なわけです。</p>



<h3 class="wp-block-heading">CreateJSでやればよくない？</h3>



<p>その通りです。その方が効率的なのでそれでいいと思います。</p>



<p>今回の記事は、あまり多くの依存ライブラリを読み込みたくなかったり、 宗教上の理由や遺言、あるいは政治的外圧等でjQueryで処理せざるを得ないケースを想定したものです。 CreateJSでの利用の仕方については、おそらく多くの方が詳しい記事を書いてくださっているので、そちらをご参照ください。</p>



<h2 class="wp-block-heading">FlashCS6+でスプライトシートを生成する</h2>



<p>例えば、FlashCS6でアニメーションのムービークリップ等を作り、それをステージに設置します。 その設置されたインスタンスを右クリックすると、コンテキストメニューに「スプライトシートを生成」が表れます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-L2oEk1ZBi1M/UY_f0ddqmoI/AAAAAAAACB4/JCDGQgWdXIM/w500-h300-no/20130513-01.png" alt="コンテキストメニュー"/></figure>



<p></p>



<p>それを選択すると現れるのがこんなダイアログ。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-rEkIabD4d0E/UY_f01DzSxI/AAAAAAAACB4/dfA1WWWMeeU/w498-h383-no/20130513-02.png" alt="スプライトシートを生成"/></figure>



<p></p>



<p>ここから「書き出し」を行うと、画像とデータ形式で指定したデータが出力されます。 指定出来るデータはJSON、各種ゲームエンジンの形式、そしてCreateJSのeaseljs形式です。</p>



<p>今回は使いやすそうだった &#8220;JSON-Array&#8221; 形式を使用します。</p>



<h2 class="wp-block-heading">JSONデータの中身</h2>



<p>&#8220;JSON-Array&#8221; で出力されたJSONデータの中身はこのような構成になっています。</p>


<pre class="wp-block-code"><span><code class="hljs language-json">{
        <span class="hljs-attr">"frames"</span>: &#91;
                {
                        <span class="hljs-attr">"filename"</span>: <span class="hljs-string">"loading0000"</span>,
                        <span class="hljs-attr">"frame"</span>: {<span class="hljs-attr">"x"</span>:<span class="hljs-number">0</span>,<span class="hljs-attr">"y"</span>:<span class="hljs-number">0</span>,<span class="hljs-attr">"w"</span>:<span class="hljs-number">33</span>,<span class="hljs-attr">"h"</span>:<span class="hljs-number">33</span>},
                        <span class="hljs-attr">"rotated"</span>: <span class="hljs-literal">false</span>,
                        <span class="hljs-attr">"trimmed"</span>: <span class="hljs-literal">false</span>,
                        <span class="hljs-attr">"spriteSourceSize"</span>: {<span class="hljs-attr">"x"</span>:<span class="hljs-number">0</span>,<span class="hljs-attr">"y"</span>:<span class="hljs-number">0</span>,<span class="hljs-attr">"w"</span>:<span class="hljs-number">33</span>,<span class="hljs-attr">"h"</span>:<span class="hljs-number">33</span>},
                        <span class="hljs-attr">"sourceSize"</span>: {<span class="hljs-attr">"w"</span>:<span class="hljs-number">33</span>,<span class="hljs-attr">"h"</span>:<span class="hljs-number">33</span>}
                }
                ,{
                        <span class="hljs-attr">"filename"</span>: <span class="hljs-string">"loading0001"</span>,
                        <span class="hljs-attr">"frame"</span>: {<span class="hljs-attr">"x"</span>:<span class="hljs-number">33</span>,<span class="hljs-attr">"y"</span>:<span class="hljs-number">0</span>,<span class="hljs-attr">"w"</span>:<span class="hljs-number">33</span>,<span class="hljs-attr">"h"</span>:<span class="hljs-number">33</span>},
                        <span class="hljs-attr">"rotated"</span>: <span class="hljs-literal">false</span>,
                        <span class="hljs-attr">"trimmed"</span>: <span class="hljs-literal">false</span>,
                        <span class="hljs-attr">"spriteSourceSize"</span>: {<span class="hljs-attr">"x"</span>:<span class="hljs-number">0</span>,<span class="hljs-attr">"y"</span>:<span class="hljs-number">0</span>,<span class="hljs-attr">"w"</span>:<span class="hljs-number">33</span>,<span class="hljs-attr">"h"</span>:<span class="hljs-number">33</span>},
                        <span class="hljs-attr">"sourceSize"</span>: {<span class="hljs-attr">"w"</span>:<span class="hljs-number">33</span>,<span class="hljs-attr">"h"</span>:<span class="hljs-number">33</span>}
                }

                ...

        ],
        <span class="hljs-attr">"meta"</span>: {
                <span class="hljs-attr">"app"</span>: <span class="hljs-string">"Adobe Flash CS6"</span>,
                <span class="hljs-attr">"version"</span>: <span class="hljs-string">"12.0.0.481"</span>,
                <span class="hljs-attr">"image"</span>: <span class="hljs-string">"sample.png"</span>,
                <span class="hljs-attr">"format"</span>: <span class="hljs-string">"RGBA8888"</span>,
                <span class="hljs-attr">"size"</span>: {<span class="hljs-attr">"w"</span>:<span class="hljs-number">256</span>,<span class="hljs-attr">"h"</span>:<span class="hljs-number">256</span>},
                <span class="hljs-attr">"scale"</span>: <span class="hljs-string">"1"</span>
        }
}
</code></span></pre>


<p>&#8220;frames&#8221; が実際のアニメーションのデータで、配列の中に個々のフレームの情報（サイズや座標等）を格納したオブジェクトが並んでいます。</p>



<p>&#8220;meta&#8221; にはスプライトシートの基本情報が格納されています。</p>



<h3 class="wp-block-heading">このデータから再生するには…</h3>



<p>アニメーションを再生するには、&#8221;frames&#8221;内のインデックスをひとつずつ進めてやり、格納されている座標情報を元に背景画像を移動してやる要領でしょうか。 座標は画像の左上からの座標なので、これを background-position に適用する際はマイナスの数値にしてやる必要がありますね。</p>



<h2 class="wp-block-heading">再生させてみよう</h2>



<p>では早速このデータを元にアニメーションを設置し、再生させてみましょう。 JSONデータも画像データもHTMLと同じディレクトリにある想定で進めます。</p>



<h3 class="wp-block-heading">JSONを読み込む</h3>



<p>まずJSONデータを読み込みます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">$</span>)</span>{

    $.getJSON(<span class="hljs-string">"sample.json"</span>)
    .then(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">data, status</span>)</span>{
            <span class="hljs-keyword">var</span> my = {};

            my.data = data;

            <span class="hljs-comment">// この中でいろいろしよう</span>
    });

}(jQuery));
</code></span></pre>


<h3 class="wp-block-heading">アニメーションの要素を生成、配置する</h3>



<p>受け取ったJSONのデータの内容から、アニメーション用のHTML要素を生成し、bodyに配置します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">my.node = $(<span class="hljs-string">"&lt;div&gt;"</span>).css({
    <span class="hljs-string">"width"</span> : my.data.frames&#91;<span class="hljs-number">0</span>].sourceSize.w,
    <span class="hljs-string">"height"</span> : my.data.frames&#91;<span class="hljs-number">0</span>].sourceSize.h,
    <span class="hljs-string">"background-image"</span> : <span class="hljs-string">"url("</span> + my.data.meta.image + <span class="hljs-string">")"</span>
})
.appendTo($(<span class="hljs-string">"body"</span>));
</code></span></pre>


<p>要素のサイズははじめのフレームの &#8220;sourceSize&#8221; から取得することにします。</p>



<p>画像は、前述の通り同じディレクトリで展開する想定なのでそのまま代入していますが、<br />
恐らく運用時は他のディレクトリに入れると思うので、その時はその時で画像へのパスをなんやかんやする必要がありますね。</p>



<h3 class="wp-block-heading">再生する</h3>



<p>今回は、単純に setTimeout で再生用の関数をぶん回して繰り返し再生を行います。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">my.index = <span class="hljs-number">0</span>; <span class="hljs-comment">// 現在のフレームインデックス</span>
my.length = my.data.frames.length; <span class="hljs-comment">// 合計フレーム数</span>
my.interval = <span class="hljs-built_in">Math</span>.floor(<span class="hljs-number">1000</span>/<span class="hljs-number">30</span>); <span class="hljs-comment">// 約FPS30ぐらいで再生</span>

my.play = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-keyword">var</span> frame;

    my.index = (my.index + <span class="hljs-number">1</span>) % (my.length - <span class="hljs-number">1</span>);
    frame = my.data.frames&#91;my.index].frame;
    my.node.css(
            <span class="hljs-string">"background-position"</span>,
            <span class="hljs-string">"-"</span> + frame.x + <span class="hljs-string">"px -"</span> + frame.y + <span class="hljs-string">"px"</span>
    );
    setTimeout(my.play, my.interval);
};

my.play();
</code></span></pre>


<p>他にも、ページのスクロール位置やマウスの挙動などをトリガーにしたりすると表現の幅が広がりますね。</p>



<h3 class="wp-block-heading">全体のコード</h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">$</span>)</span>{

    $.getJSON(<span class="hljs-string">"sample.json"</span>)
    .then(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">data, status</span>)</span>{

        <span class="hljs-keyword">var</span> my = {};

        my.data = data;

        my.node = $(<span class="hljs-string">"&lt;div&gt;"</span>).css({
            <span class="hljs-string">"width"</span> : my.data.frames&#91;<span class="hljs-number">0</span>].sourceSize.w,
            <span class="hljs-string">"height"</span> : my.data.frames&#91;<span class="hljs-number">0</span>].sourceSize.h,
            <span class="hljs-string">"background-image"</span> : <span class="hljs-string">"url("</span> + my.data.meta.image + <span class="hljs-string">")"</span>
        })
        .appendTo($(<span class="hljs-string">"body"</span>));

        my.index = <span class="hljs-number">0</span>;
        my.length = my.data.frames.length;
        my.interval = <span class="hljs-built_in">Math</span>.floor(<span class="hljs-number">1000</span>/<span class="hljs-number">30</span>);

        my.play = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
            <span class="hljs-keyword">var</span> frame;

            my.index = (my.index + <span class="hljs-number">1</span>) % (my.length - <span class="hljs-number">1</span>);
            frame = my.data.frames&#91;my.index].frame;
            my.node.css(
                    <span class="hljs-string">"background-position"</span>,
                    <span class="hljs-string">"-"</span> + frame.x + <span class="hljs-string">"px -"</span> + frame.y + <span class="hljs-string">"px"</span>
            );
            setTimeout(my.play, my.interval);
        };
        my.play();
    });
}(jQuery));
</code></span></pre>


<h2 class="wp-block-heading">めんどくさい！</h2>



<p>勿論毎度これは面倒なので、ライブラリ化してみましたが、それは後編で。</p>



<p>» <a href="https://blog.mach3.jp/2013/05/load-flash-sprite-with-jquery-02.html">FlashCS6+で生成したスプライトシートをjQueryでロードする実験（後編） | Mach3.laBlog</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JavaScriptのスライダーにブラー効果をつけてみる実験</title>
		<link>https://blog.mach3.jp/2013/02/12/blur-slider-javascript.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 12 Feb 2013 01:08:56 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Blur]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Slider]]></category>
		<category><![CDATA[Widget]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3002</guid>

					<description><![CDATA[先日リニューアルのご報告をした Matsukaze.で使用している ブラー効果をつけたスライダーで、実験的に採用した手法を記録しておきます。 基本的な仕組み まずスライダーに使用する絵を連結して一枚の画像にしたものを作成 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日リニューアルのご報告をした <a href="http://www.mach3.jp">Matsukaze.</a>で使用している ブラー効果をつけたスライダーで、実験的に採用した手法を記録しておきます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-dAa4bijhHFY/URkFoz7LeBI/AAAAAAAAB98/hmxSmcgapNA/s400/20130211-00.png" alt="JavaScriptのスライダーにブラー効果をつけてみる実験"/></figure>



<p></p>



<span id="more-3002"></span>



<ol class="wp-block-list">
<li>基本的な仕組み</li>



<li>ぼかし画像の透明度について</li>



<li>簡単なデモ</li>



<li>まとめ</li>
</ol>



<h2 class="wp-block-heading">基本的な仕組み</h2>



<p>まずスライダーに使用する絵を連結して一枚の画像にしたものを作成。 そして、その画像を横にブレさせた画像を別途用意します。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-ql0gSvfjEPg/URkFo-ThxSI/AAAAAAAAB98/YL2KdpH6B6E/s500/20130211-01.png" alt="連結画像とぼかし画像"/></figure>



<p></p>



<p>ぼかし画像は、例えばFireworksなら「移動（ぼかし）」を水平方向にかけ、 さらにその上に反対方向の「移動（ぼかし）」をかけたものを透明度50%ぐらいで重ねています。 ぼかしの強さはコンテンツの内容・大きさとご相談で、いい按排を探ります。</p>



<p>HTML上ではその2つの画像を、ぼかし画像を上にして重ね合わせて配置し、 スライダーが動く時にぼかし画像の透明度を変更してスピード感を出します。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-a_PmlMhx6KI/URkFo6cT2LI/AAAAAAAAB98/3Qa1s1LJOIE/s500/20130211-02.png" alt="基本的な仕組み"/></figure>



<p></p>



<p>基本的な仕組みはこんな感じです。</p>



<h2 class="wp-block-heading">ぼかし画像の透明度について</h2>



<p>さて、課題はぼかし画像の透明度をどのように調整するか。 前提として、こんなHTMLとスタイルシートを用意しました。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"my-slider"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"blur-slider"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"slider-images"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"./photo-blur.png"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"image-blur"</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"./photo.png"</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">style</span>&gt;</span><span class="css">
    <span class="hljs-selector-class">.blur-slider</span> {
        <span class="hljs-attribute">position</span>: relative;
        <span class="hljs-attribute">width</span>: <span class="hljs-number">500px</span>;
        <span class="hljs-attribute">height</span>: <span class="hljs-number">331px</span>;
        <span class="hljs-attribute">border</span>: <span class="hljs-number">2px</span> solid <span class="hljs-number">#fff</span>;
        <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span> auto;
        <span class="hljs-attribute">overflow</span>: hidden;
    }
    <span class="hljs-selector-class">.blur-slider</span> <span class="hljs-selector-class">.slider-images</span> {
        <span class="hljs-attribute">position</span>: absolute;
        <span class="hljs-attribute">left</span>: <span class="hljs-number">0</span>;
        <span class="hljs-attribute">top</span>: <span class="hljs-number">0</span>;
    }
    <span class="hljs-selector-class">.blur-slider</span> <span class="hljs-selector-class">.slider-images</span> <span class="hljs-selector-class">.image-blur</span> {
        <span class="hljs-attribute">position</span>: absolute;
        <span class="hljs-attribute">opacity</span>: <span class="hljs-number">0</span>;
        <span class="hljs-attribute">filter</span>: <span class="hljs-built_in">alpha</span>(opactiy=<span class="hljs-number">0</span>);
    }
</span><span class="hljs-tag">&lt;/<span class="hljs-name">style</span>&gt;</span>
</code></span></pre>


<h3 class="wp-block-heading">普通に値を変更した時のコレジャナイ感</h3>



<p>まずはじめに、単純にスライダーと同時にぼかし画像を表示させ、アニメーション終了にあわせて透明度を下げていってみました。 ざっと書くとこんな感じです。</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-keyword">var</span> $container, $slider, $blurImage, show;

$container = $(<span class="hljs-string">"#my-slider"</span>);
$slider = $container.find(<span class="hljs-string">".slider-images"</span>);
$blurImage = $slider.find(<span class="hljs-string">".image-blur"</span>);

show = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(index)</span></span>{
    $slider
        .stop()
        .animate(
                { left: $container.width() * index * <span class="hljs-number">-1</span> }
        );
    $blurImage
        .stop()
        .css(<span class="hljs-string">"opacity"</span>, <span class="hljs-number">1</span>)
        .animate(
                { opacity: <span class="hljs-number">0</span> }
        );
};

show(<span class="hljs-number">1</span>); <span class="hljs-comment">// とりあえず2番目の画像を表示してみる</span>
</code></span></pre>


<p>動かしてみましたが、かなり動きに違和感があります。 他にも、変化を山なりにしてみたりしましたが、どうもコレジャナイ。 イージング関数によってはまともに見えるかもしれませんが、 実際の速度とブレが同期してないので気持ち悪くて当然ですね。</p>



<h3 class="wp-block-heading">はやければはやいほどブレるように</h3>



<p>やはりブレは動きの速さに比例するもの。 そこで、動きがはやければはやいほどブレるように調整した show 関数を書いてみます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">show = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">index</span>)</span>{
    $slider.stop().animate(
        {
            <span class="hljs-attr">left</span> : $container.width() * index * <span class="hljs-number">-1</span>
        },
        {
            <span class="hljs-attr">duration</span> : <span class="hljs-number">500</span>,
            <span class="hljs-attr">easing</span> : <span class="hljs-string">"swing"</span>,
            <span class="hljs-attr">step</span> : <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">now</span>)</span>{ <span class="hljs-comment">/* A */</span>
                <span class="hljs-keyword">if</span>(<span class="hljs-keyword">this</span>.prevLeft !== <span class="hljs-literal">undefined</span>){
                    $blurImage.css(
                        <span class="hljs-string">"opacity"</span>,
                        <span class="hljs-built_in">Math</span>.abs(<span class="hljs-keyword">this</span>.prevLeft - now) / <span class="hljs-number">25</span> <span class="hljs-comment">/* B */</span>
                    );
                }
                <span class="hljs-keyword">this</span>.prevLeft = now;
            },
            <span class="hljs-attr">complete</span> : <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{ <span class="hljs-comment">/* C */</span>
                $blurImage.css(<span class="hljs-string">"opacity"</span>, <span class="hljs-number">0</span>);
            }
        }
    );
};
</code></span></pre>


<p>(A) jQuery.animate のオプションの &#8220;step&#8221; では、アニメーションのステップ毎に関数を実行する事ができます。 上の例では、前ステップの値と現在の値を比較して、その差からぼかし画像の透明度を計算しています。</p>



<p>(B) &#8220;25&#8221;は、1ステップに何ピクセル以上動いている時に不透明度100%とするか、という数値です。 要するにどのくらいの速度ならばブラーが最大限表示されるか。 移動距離やコンテンツの大きさでうまいこと調整します。</p>



<p>(C) &#8220;complete&#8221; はアニメーション完了時の関数を実行できます。 完了時にはぼかし画像の不透明度をゼロにします。</p>



<p>ステップ毎に計算させる関係でパフォーマンスがちょっと心配になりますね。 多用はあまりしない方がよさそうですが、今回の <a href="http://www.mach3.jp">Matsukaze.</a> では2箇所限定なので、この方法を採用してみちゃいました。 やはり少々重たい気がしますが、ブレが少し自然になったとおもいます。</p>



<h2 class="wp-block-heading">簡単なデモ</h2>



<p>イージング関数と所要時間をいじれるデモを作ってみましたのでどうぞ。</p>



<p><a class="jsbin-embed" href="http://jsbin.com/ocalar/1/embed?live">JS Bin</a><script src="http://static.jsbin.com/js/embed.js"></script></p>



<h2 class="wp-block-heading">まとめ</h2>



<p>わりと泥臭い感じではありますが、パフォーマンスはともかく見た目的には結構満足しています。 もう少しスマートな方法あったら、改善してみたいです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>シンプルなスプライトアニメーションライブラリ 「MovieCrop.js」</title>
		<link>https://blog.mach3.jp/2012/05/07/moviecrop-js.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Mon, 07 May 2012 06:50:15 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Library]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=2406</guid>

					<description><![CDATA[CSSスプライトを使用したアニメーションライブラリは既に色々と選択肢がありそうですが、 敢えて今回これを書いてみたのは、ローテクでごくシンプルな物が欲しかったから。 さらに言ってみれば、それらの選択肢をまだ知らなかったか [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>CSSスプライトを使用したアニメーションライブラリは既に色々と選択肢がありそうですが、 敢えて今回これを書いてみたのは、ローテクでごくシンプルな物が欲しかったから。 さらに言ってみれば、それらの選択肢をまだ知らなかったから。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/-QGbdmsg8mF0/T6PrWR_CuMI/AAAAAAAABgM/TcIIW8iRdr0/s400/20120504-01.png" alt="シンプルなスプライトアニメーションライブラリ 「MovieCrop.js」"/></figure>



<p></p>



<span id="more-2406"></span>



<h2 class="wp-block-heading">MovieCrop.jsについて</h2>



<ul class="wp-block-list">
<li><a href="https://github.com/mach3/js-moviecrop">MovieCrop.js via Github</a></li>
</ul>



<p>MovieCrop.jsは、CSSのbackground-imageを利用したアニメーションを実装するjQueryプラグインです。 名前から推察されるように、ActionScriptのMovieClipを模して作った…つもりです。</p>



<p>再生/逆再生/停止/巻き戻しが出来ます。</p>



<h2 class="wp-block-heading">簡単な使い方</h2>



<p>まず使用する画像を作成し、ブロック要素の背景にします。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/-o8WNJOT1eWI/T6PrWd2WF_I/AAAAAAAABgM/xO1L7FqOlWo/s500/20120504-02.png" alt="CSSスプライト"/></figure>



<p></p>



<p>要するにブロック要素のサイズの分だけ背景をズラしていってアニメーションさせる仕組みなので、そのような画像を用意します。</p>



<p>アニメーションの再生方法は、jQueryオブジェクトのmoviePlay()メソッドをコールするだけです。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">".loading"</span>).moviePlay();
</code></span></pre>


<p>逆再生・停止・巻き戻しも同じ要領で。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">".loading"</span>).movieReverse(); <span class="hljs-comment">// 逆再生</span>
$(<span class="hljs-string">".loading"</span>).movieStop(); <span class="hljs-comment">// アニメーションをストップ</span>
$(<span class="hljs-string">".loading"</span>).movieRewind(); <span class="hljs-comment">// 最初のコマに巻き戻す</span>
</code></span></pre>


<h2 class="wp-block-heading">動きをカスタマイズする</h2>



<p>動きをカスタマイズするには、moviePlay/movieReverseメソッドにオプションを渡します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">".loading"</span>).moviePlay({
    <span class="hljs-attr">fps</span> : <span class="hljs-number">20</span>, <span class="hljs-comment">// fps（1秒毎のフレーム数）</span>
    <span class="hljs-attr">frames</span> : <span class="hljs-number">20</span>, <span class="hljs-comment">// 合計フレーム数</span>
    <span class="hljs-attr">repeat</span> : <span class="hljs-literal">true</span>, <span class="hljs-comment">// リピート再生をするか否か</span>
    <span class="hljs-attr">direction</span> : <span class="hljs-string">"vertical"</span> <span class="hljs-comment">// アニメーションの方向</span>
});
</code></span></pre>


<h2 class="wp-block-heading">完了時のコールバックを設定する</h2>



<p>アニメーション完了時のコールバックを、moviePlay/movieReverseの第二引数で設定できます。 このコールバックは、アニメーションが「完了」しないと呼ばれません。 つまり、オプションのrepeatをfalseに設定し、最後のコマまで進んだ時初めて呼ばれます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">".loading"</span>).moviePlay({
    <span class="hljs-attr">repeat</span> : <span class="hljs-literal">false</span>
}, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"アニメーションが完了しました"</span>);
});
</code></span></pre>


<h2 class="wp-block-heading">MovieCropクラス</h2>



<p>MovieCropクラスのインスタンスを生成して使う事もできます。 この場合は、第一引数にはjQueryオブジェクトではなく、HTMLElementを渡して下さい。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> ele, mc;
ele = $(<span class="hljs-string">".loading"</span>)&#91;<span class="hljs-number">0</span>];
mc = <span class="hljs-keyword">new</span> MovieCrop( ele, {
    <span class="hljs-attr">fps</span> : <span class="hljs-number">20</span>,
    <span class="hljs-attr">frames</span> : <span class="hljs-number">20</span>
});
mc.play();
</code></span></pre>


<p>MovieCropクラスは次のメソッドを持ちます。</p>



<ul class="wp-block-list">
<li>play(callback) : 再生する</li>



<li>reverse(callback) : 逆再生する</li>



<li>stop() : 止める</li>



<li>rewind() : 最初のコマに戻る</li>



<li>nextFrame() : 次のコマに進む</li>



<li>prevFrame() : 前のコマに戻す</li>



<li>setFrame(frame) : 指定されたコマに移動する</li>
</ul>



<h2 class="wp-block-heading">デモ</h2>



<ul class="wp-block-list">
<li><a href="http://jsfiddle.net/mach3ss/LSH79/embedded/result/">MovieCrop.js DEMO via jsfiddle</a></li>
</ul>



<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/mach3ss/LSH79/embedded/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>



<h2 class="wp-block-heading">まとめ</h2>



<p>冒頭で申し上げた通り、この手のソリューションは他にも優秀な選択肢があります。 特にもうじき発表されるAdobeFlashCS6は、FlashIDEで制作したアニメーションからCSSスプライトシートを書き出す事ができ、そこからそのままアニメーションさせる事が出来るスグレモノです。 スプライトアニメーションは素材の画像を作るのが恐らく一番面倒なので、こうしたアプリケーションは大変助かりますね。</p>



<p>ならばこのライブラリをいつ使うのかと言うと…。シンプルさ故にライブラリ間の競合の不安が少し減る程度の存在意義は…あるかな。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CYRIAK氏による愉快な映像達</title>
		<link>https://blog.mach3.jp/2010/08/08/animations-by-cyriak.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sun, 08 Aug 2010 22:49:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[CG]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[YouTube]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/08/08/cyriak%e6%b0%8f%e3%81%ab%e3%82%88%e3%82%8b%e6%84%89%e5%bf%ab%e3%81%aa%e6%98%a0%e5%83%8f%e9%81%94.html</guid>

					<description><![CDATA[先日出会った素敵な映像。 UKのフリーランスアニメーターのCyriak氏のアニメーションがすごく愉快だったのでご紹介。 一番はじめに目についたアニメーションがコレです。 アップテンポな音楽に乗せてキュートなテディベアがト [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日出会った素敵な映像。<br />
UKのフリーランスアニメーターのCyriak氏のアニメーションがすごく愉快だったのでご紹介。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TF61jY0_Q8I/AAAAAAAABAA/9dnUdhigSkY/s800/201008082237.png" alt="Cyriak"/></figure>



<p></p>



<span id="more-2252"></span>



<p>一番はじめに目についたアニメーションがコレです。</p>



<p><object width="598" height="361"><param name="movie" value="http://www.youtube.com/v/-0Xa4bHcJu8?fs=1&amp;hl=ja_JP"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/-0Xa4bHcJu8?fs=1&amp;hl=ja_JP" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="598" height="361"></object></p>



<p>アップテンポな音楽に乗せてキュートなテディベアがトコトコ歩いていると思ったら…<br />
あれよあれよと展開していく、実に飽きの来ないアニメーションです。<br />
大変シュール。</p>



<p><object width="598" height="361"><param name="movie" value="http://www.youtube.com/v/FavUpD_IjVY?fs=1&amp;hl=ja_JP"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/FavUpD_IjVY?fs=1&amp;hl=ja_JP" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="598" height="361"></object></p>



<p>横スクロールで牛がどんどん変化していく不思議なアニメーションも。<br />
BGMはずっと聴いてると情緒不安定に陥りそうな雰囲気。</p>



<p>良いセンスしてますね…。<br />
他にも色々ビデオを公開しているので、チェックしておきたいです。</p>



<p><a href="http://www.youtube.com/user/cyriak">YouTube &#8211; ‪cyriak さんのチャンネル‬‎</a><br />
<a href="http://www.cyriak.co.uk/">Cyriak</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>「おかしな国、日本」 &#034;Japan &#8211; The Strange Country&#034;</title>
		<link>https://blog.mach3.jp/2010/04/23/japan-the-strange-country.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 23 Apr 2010 01:57:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Japan]]></category>
		<category><![CDATA[Japanese]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Vimeo]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/04/23/%e3%80%8c%e3%81%8a%e3%81%8b%e3%81%97%e3%81%aa%e5%9b%bd%e3%80%81%e6%97%a5%e6%9c%ac%e3%80%8d-japan-the-strange-country.html</guid>

					<description><![CDATA[Japan &#8211; The Strange Country (Japanese ver.) on Vimeo ひょっとしたら今更！とか言われるかもしれませんが、ご紹介。 日本ってこんな不思議な国なのかと考えさせら [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="http://vimeo.com/9873910">Japan &#8211; The Strange Country (Japanese ver.) on Vimeo</a></p>



<p>ひょっとしたら今更！とか言われるかもしれませんが、ご紹介。<br />
日本ってこんな不思議な国なのかと考えさせられてしまうアニメーションです。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/S9B-Xz24jmI/AAAAAAAAA2k/p-tnmfEnb2s/s800/201004230147.png" alt="Japan - The Strange Country"/></figure>



<p></p>



<span id="more-50"></span>



<p><br />
<a href="http://vimeo.com/9873910">Japan &#8211; The Strange Country (Japanese ver.) on Vimeo</a></p>



<p><iframe src="http://player.vimeo.com/video/9873910?portrait=0&amp;color=59a5d1" width="598" height="336" frameborder="0"></iframe></p>



<p>ちょっとアイロニーなナレーションもまたささやかな笑いを呼びますね。<br />
数字の裏付けもあって実に説得力のあるプレゼンです！面白かった。</p>



<p>作者さんのコメント。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>日本で生活していると、当たり前すぎて気づかない「不思議な事実」を、<br />
  海外で生活した経験も生かし、外国人の視点から統計とともに映像化しました。<br />
  笑いつつも、「なんか不思議だな」と考えてもらえれば幸いです。</p>
</blockquote>



<p>いがいと外国の方からは本当にこのように見られているのかもしれませんね…。<br />
色々考えさせられます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>実験室: 「Loading&#8230;」のドットアニメーションを表示するjQueryプラグイン</title>
		<link>https://blog.mach3.jp/2010/04/18/jquery-loadingdots-js.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sun, 18 Apr 2010 14:28:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Loading]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/04/18/%e5%ae%9f%e9%a8%93%e5%ae%a4-%e3%80%8cloading-%e3%80%8d%e3%81%ae%e3%83%89%e3%83%83%e3%83%88%e3%82%a2%e3%83%8b%e3%83%a1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e8%a1%a8%e7%a4%ba%e3%81%99.html</guid>

					<description><![CDATA[Loading Dots jQuery Plugin &#124; CSS-Tricksを受けて、 少しカスタマイズの効く形の物がほしいな、と思い書いてみました。 テキストだけのアニメーションもシンプルで良いですね！ jquery [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="http://css-tricks.com/loading-dots-plugin/">Loading Dots jQuery Plugin | CSS-Tricks</a>を受けて、<br />
少しカスタマイズの効く形の物がほしいな、と思い書いてみました。<br />
テキストだけのアニメーションもシンプルで良いですね！</p>



<span id="more-53"></span>



<h2 class="wp-block-heading">jquery.loadingdots.js</h2>



<p>要するに、こんな感じにドットがアニメーションします。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Loading.<br />
  Loading..<br />
  Loading&#8230;</p>
</blockquote>



<p>CSS-Tricksのスクリプトはスピードとドットの最大数がオプションで渡せましたが、<br />
それらに加えて「Loading」の文字とドットの文字、<br />
文字のスタイルを渡せるようにしてみました。</p>



<ul class="wp-block-list">
<li><a href="http://jsbin.com/ofepe">DEMO ( on JS Bin)</a></li>



<li><a href="https://docs.google.com/uc?id=0B7k6jIWYcmkLYzlhZDExOTAtMzczNS00ZTU3LTkzOTAtZmZlYjBlNThkZGI5&amp;export=download">Download : jquery.loadingdots.zip</a></li>
</ul>



<h2 class="wp-block-heading">使い方</h2>



<h3 class="wp-block-heading">表示させる</h3>



<p>シンプルな例</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"#loadingArea"</span>).loadingdots();
</code></span></pre>


<p>オプションを渡す例</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"#loadingArea"</span>).loadingdots({
    <span class="hljs-attr">content</span>:<span class="hljs-string">"LOADING"</span>,
    <span class="hljs-attr">css</span>:{
        <span class="hljs-attr">fontWeight</span>:<span class="hljs-string">"bold"</span>,
        <span class="hljs-attr">color</span>:<span class="hljs-string">"#336699"</span>
    }
});
</code></span></pre>


<h3 class="wp-block-heading">止め方</h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"#loadingArea"</span>).loadingdots( <span class="hljs-string">"stop"</span> );
</code></span></pre>


<p>もしくは</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"#loadingArea"</span>).loadingdots( { <span class="hljs-attr">mode</span> : <span class="hljs-string">"stop"</span> } );
</code></span></pre>


<h3 class="wp-block-heading">オプション</h3>



<dl>
<dt>mode : String = “start”</dt>
<dd>startまたはstopを受け取って処理をスイッチします。</dd>
<dt>maxDots : Number = 4</dt>
<dd>ドットの最大数</dd>
<dt>speed : Number = 400</dt>
<dd>スピード（ミリ秒）</dd>
<dt>content : String = “Loading”</dt>
<dd>表示する文字列</dd>
<dt>dotString : String = “.”</dt>
<dd>アニメーションする文字</dd>
<dt>css : Object = { }</dt>
<dd>CSSを格納したオブジェクトリテラル</dd>
</dl>



<p><a href="http://css-tricks.com/loading-dots-plugin/">Loading Dots jQuery Plugin | CSS-Tricks</a> の元記事では、<br />
CSS3のWebKitアニメーションを使用した例も掲載されていました。<br />
そちらも是非ご参考に。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>&#034;Ian Worrel&#034; on Vimeo</title>
		<link>https://blog.mach3.jp/2010/04/18/ian-worrel-on-vimeo.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sun, 18 Apr 2010 11:29:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Video]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/04/18/ian-worrel-on-vimeo.html</guid>

					<description><![CDATA[素敵なアニメーションに出会いました。 Ian Worrel さんという方の「Second Wind」。 Second Wind on Vimeo 少しデフォルメの効いたキャラクターが、 すごく豊かな表情と愛嬌のある動きで [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>素敵なアニメーションに出会いました。<br />
<a href="http://vimeo.com/user407933">Ian Worrel</a> さんという方の「<a href="http://vimeo.com/10019015">Second Wind</a>」。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/S8prF7lAHxI/AAAAAAAAA2c/pUlXR9RqeZ0/s800/201004181115.png" alt="Second Wind"/></figure>



<p></p>



<span id="more-54"></span>



<p><a href="http://vimeo.com/10019015">Second Wind on Vimeo</a></p>



<p><iframe loading="lazy" src="http://player.vimeo.com/video/10019015?portrait=0&amp;color=59a5d1" width="598" height="262" frameborder="0"></iframe></p>



<p>少しデフォルメの効いたキャラクターが、<br />
すごく豊かな表情と愛嬌のある動きでストーリーを綴っていきます。<br />
背景の雰囲気も趣きがあってすばらしい！</p>



<p><iframe loading="lazy" src="http://player.vimeo.com/video/5921562?portrait=0&amp;color=59a5d1" width="598" height="404" frameborder="0"></iframe></p>



<p>こちらも同じ作者さんが作られたアニメーション。<br />
ラフスケッチっぽいグレースケールなキャラクターで<br />
独特な世界観が生み出されています。</p>



<p>Ian Worrelさんのブログはこちらの模様。<br />
数多くのスケッチが、出迎えてくれます。<br />
<a href="http://enworrel.blogspot.com/">(E)(N)&#8217;s BLOG</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
