<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>TONPOOBLOG &#187; tweener</title>
	<atom:link href="http://www.tonpoo.com/blog/category/flash/tweener/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tonpoo.com/blog</link>
	<description>神宮前にあるWEB制作事務所「株式会社ブリコルール（bricoleur inc.）」に所属しているFlash（ActionScript）開発＆WEB制作プロジェクト「Tonpoo.com」のブログです。</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:20:08 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/category/flash/tweener/feed/" />
		<item>
		<title>TweenerColorExtension</title>
		<link>http://www.tonpoo.com/blog/2009/09/tweenercolorextension/</link>
		<comments>http://www.tonpoo.com/blog/2009/09/tweenercolorextension/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 02:40:29 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[tweener]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/?p=565</guid>
		<description><![CDATA[TweenerのColorShortcutsクラスには、オブジェクトのカラーチャンネルを変更するための下記の拡張プロパティがあります。 _color_redMultiplier _color_greenMultiplier _color_blueMultiplier _color_alphaMultiplier _color_redOffset _color_greenOffset _color_blueOffset _color_alphaOffset Tweenerを使うようになる以前から、オブジェクトのカラーチャンネルを変更することは割と頻繁にあったのですが、Tweenerでこれらを設定しようと思った場合に、プロパティ名が長かったりするのでちょっと面倒だなと思ってました。 import caurina.transitions.Tweener; import caurina.transitions.properties.ColorShortcuts; ColorShortcuts.init(); Tweener(my_mc,{ _color_redMultiplier:1, _color_greenMultiplier:1, _color_blueMultiplier:1, _color_alphaMultiplier:0.5, _color_redOffset:125, _color_greenOffset:60, _color_blueOffset:255, _color_alphaOffset:255, time:1, transition:&#34;easeOutSine&#34; }); そこで、R/G/B/AのMultiplier値およびOffset値をまとめて指定するためのTweener用拡張クラス「TweenerColorExtension」を作成しました。下記の例の様に、_colorMultipliersというプロパティに[_color_redMultiplier, _color_greenMultiplier, _color_blueMultiplier, _color_alphaMultiplier]の順の配列を、_colorOffsetsというプロパティに[_color_redOffset, _color_greenOffset, _color_blueOffset, _color_alphaOffset]の順の配列を指定することで、それぞれの値を設定できます。 import caurina.transitions.Tweener; import TweenerColorExtension; TweenerColorExtension.init(); Tweener(my_mc,{ _colorMultipliers:[1,1,1,0.5], _colorOffsets:[125,60,255,255], time:1, transition:&#34;easeOutSine&#34; }); ColorShortcutsのimportやinitは必要ありません（TweenerColorExtensionのinitの中で処理してます）。 ソースコードやサンプルファイルは下記で配布してますので、もし使ってみたい方がいらっしゃったらご自由にどうぞ。 tonpoo/TweenerColorExtention &#8211; Spark project]]></description>
			<content:encoded><![CDATA[<p>TweenerのColorShortcutsクラスには、オブジェクトのカラーチャンネルを変更するための下記の拡張プロパティがあります。</p>
<pre class="brush: plain;">_color_redMultiplier
_color_greenMultiplier
_color_blueMultiplier
_color_alphaMultiplier
_color_redOffset
_color_greenOffset
_color_blueOffset
_color_alphaOffset</pre>
<p>Tweenerを使うようになる以前から、オブジェクトのカラーチャンネルを変更することは割と頻繁にあったのですが、Tweenerでこれらを設定しようと思った場合に、プロパティ名が長かったりするのでちょっと面倒だなと思ってました。</p>
<pre class="brush: as3;">import caurina.transitions.Tweener;
import caurina.transitions.properties.ColorShortcuts;
ColorShortcuts.init();

Tweener(my_mc,{
	_color_redMultiplier:1,
	_color_greenMultiplier:1,
	_color_blueMultiplier:1,
	_color_alphaMultiplier:0.5,
	_color_redOffset:125,
	_color_greenOffset:60,
	_color_blueOffset:255,
	_color_alphaOffset:255,
	time:1,
	transition:&quot;easeOutSine&quot;
});</pre>
<p>そこで、R/G/B/AのMultiplier値およびOffset値をまとめて指定するためのTweener用拡張クラス「<strong><a href="http://www.libspark.org/wiki/tonpoo/TweenerColorExtention">TweenerColorExtension</a></strong>」を作成しました。下記の例の様に、<strong>_colorMultipliers</strong>というプロパティに<em>[_color_redMultiplier, _color_greenMultiplier, _color_blueMultiplier, _color_alphaMultiplier]</em>の順の配列を、<strong>_colorOffsets</strong>というプロパティに<em>[_color_redOffset, _color_greenOffset, _color_blueOffset, _color_alphaOffset]</em>の順の配列を指定することで、それぞれの値を設定できます。</p>
<pre class="brush: as3;">import caurina.transitions.Tweener;
import TweenerColorExtension;
TweenerColorExtension.init();

Tweener(my_mc,{
	_colorMultipliers:[1,1,1,0.5],
	_colorOffsets:[125,60,255,255],
	time:1,
	transition:&quot;easeOutSine&quot;
});</pre>
<p>ColorShortcutsのimportやinitは必要ありません（TweenerColorExtensionのinitの中で処理してます）。</p>
<p>ソースコードやサンプルファイルは下記で配布してますので、もし使ってみたい方がいらっしゃったらご自由にどうぞ。</p>
<h3><a href="http://www.libspark.org/wiki/tonpoo/TweenerColorExtention">tonpoo/TweenerColorExtention &#8211; Spark project</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/09/tweenercolorextension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/09/tweenercolorextension/" />
	</item>
		<item>
		<title>えらいこっちゃ</title>
		<link>http://www.tonpoo.com/blog/2009/08/ohmygod/</link>
		<comments>http://www.tonpoo.com/blog/2009/08/ohmygod/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 16:00:48 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[topics]]></category>
		<category><![CDATA[tweener]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/?p=515</guid>
		<description><![CDATA[いつものようにGoogle Analyticsでこのサイトのアクセス状況をみてみたらこんなことに↓ なんじゃこりゃ？ 調べてみるとどうやらbg-zen氏のTwitterでのつぶやきを契機にTweener追悼の流れが起きて、この記事へのリンクが爆発的に増えたらしい。おお、BeInteractive!の中の人までつぶやいてる。こりゃビックリ。Twitter効果すごいなあ。皆さん閲覧ありがとうございます。 それにしても、やっぱりTweener愛好家の方々、たくさんいらっしゃるんですね。僕も早く次世代の（？）Tweenライブラリを導入しなきゃと思いつつ、未だにTweenerを常用してる一人だったりします。ていうか、リファレンスの和訳とかしちゃってる（まだ終わってませんが・・・）こともあって、愛着あるんですよね。 次はBetweenAS3かなと思いつつ、まだしばらくはTweenerを使い続けると思います。Project ownerのZeh Fernandoさん、本当にありがとう！]]></description>
			<content:encoded><![CDATA[<p>いつものようにGoogle Analyticsでこのサイトのアクセス状況をみてみたらこんなことに↓</p>
<p><img class="alignnone size-full wp-image-516" title="ss" src="http://www.tonpoo.com/blog/wp-content/uploads/2009/08/ss.jpg" alt="ss" width="265" height="311" /></p>
<h1><strong>なんじゃこりゃ？</strong></h1>
<p>調べてみるとどうやら<a href="http://twitter.com/bkzen/statuses/3139226484">bg-zen氏のTwitterでのつぶやき</a>を契機にTweener追悼の流れが起きて、<a href="http://www.tonpoo.com/blog/2009/06/tweener/">この記事</a>へのリンクが爆発的に増えたらしい。おお、<a href="http://twitter.com/beinteractive/statuses/3139786651">BeInteractive!の中の人までつぶやいてる</a>。こりゃビックリ。Twitter効果すごいなあ。皆さん閲覧ありがとうございます。</p>
<p>それにしても、やっぱりTweener愛好家の方々、たくさんいらっしゃるんですね。僕も早く次世代の（？）Tweenライブラリを導入しなきゃと思いつつ、未だにTweenerを常用してる一人だったりします。ていうか、<a href="http://www.tonpoo.com/tweener/">リファレンスの和訳</a>とかしちゃってる（まだ終わってませんが・・・）こともあって、愛着あるんですよね。</p>
<p>次はBetweenAS3かなと思いつつ、まだしばらくはTweenerを使い続けると思います。Project ownerのZeh Fernandoさん、本当にありがとう！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/08/ohmygod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/08/ohmygod/" />
	</item>
		<item>
		<title>Tweenerの終焉</title>
		<link>http://www.tonpoo.com/blog/2009/06/tweener/</link>
		<comments>http://www.tonpoo.com/blog/2009/06/tweener/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 12:20:39 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[translation]]></category>
		<category><![CDATA[tweener]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/?p=413</guid>
		<description><![CDATA[つい数日前に「Tweener、がんばれ！」とか言った側から、Tweenerの開発終了について、開発者のZeh氏のブログで公式なアナウンスが出てしまいました（汗）。 Zeh Fernando » Blog Archive » Tweener, 4 years later &#8211; A post mortem 上記記事の内容を意訳してみました。間違ってる部分も結構あるはずですが、大意はつかめてると思います。 執筆するのにとても時間がかかってしまったもう一つの記事です。 まずは始まりから話そう。僕は数年前まで、Flashムービーの開発時に何かしらのアニメーションが必要になったときには、自分で開発したMC TweenというFlashのActionScriptトゥイーン拡張機能を使っていた。この拡張機能は全くもって自分好みに作ったものだ。当時、他にも優れたトゥイーン拡張機能が存在していたんだけど、どれもどうも好きになることができなかった。それらのAPIのほとんどがあまりにも抽象的すぎて、僕の求めているものと違ったから。MC Tweenではprototypeベースのアプローチを採用し、MovieClipのような既存のオブジェクト型に新たな機能を追加するという手法をとった。プログラム的なトゥイーンに対して僕がとったこの構文アプローチに賛同してくれる人も何人かいて、最終的にはそれなりの人気を得ることができた。 しかし、2005年になると、MC Tweenに対してかなりイライラするようになった。MC Tween自体は意図したとおりに動いてる一方で、ActionScriptの文法やパラダイムが（特にAS2が登場したことから）変化し、僕自身がオブジェクト指向プログラミングへの理解を深めたこともあって、MC Tweenが既に僕の開発ワークフローに合わなくなってきていると言うことを悟った。加えて、MC Tweenの開発がかなり停滞するようになっていた。人気が出てきたことで、実験的な新機能を実装することを、考えるだけでも危険だと思うようになっていた。どん詰まりのような状態だった。 だから、その年の6月から、僕は新たにクラスベースのトゥイーン拡張機能を実験的に開発することにした。開発当初はインスタンスベース（tweenインスタンスを生成するような）だったんだけど、後にaddTween()という一つのメソッドによってすべてのトゥイーンを生成するという、静的なクラス構造に変更した。そして、stopTween()やgetTweens()といった付属メソッドを使って、様々な機能を操作するようにした。 このクラスにはとても多くの変更が加えられた。クラス名自身が変わったり（初期にはTwinaだったのがTweenerになり、ZTweenerになって、またTweenerに戻った）、パッケージの位置が動いたり（generic.*から zeh.easing.*、そしてcaurina.transitions.*）、APIが変更になったり。インスタンスベースから静的クラスへの変更は言うまでもないし、その他にも内部構造の変更などがたくさんあった。この過程で学んだこと、そしてそれこそがこの記事の趣旨なのだけど、それは自分のために何かを作る場合、その作ったものの結果を誰かが見て評価したり、ましてそれを誰かがとても大事な仕事に使ったりすることなど無いだろうと思って作っていると、リスクを負わなければならないのは自分一人だという単純な理由から、結果的に非常に多くのミスを許容することになってしまうということ、しかし、その過程でよりよい方法を見つけることになるということだ。 僕がこのプロジェクトの開発を始めた頃、トゥイーン拡張機能として一番有名だったのはFuse Kitだった。別にそれと競うつもりもなかったし、僕は自分自身のために何かを作り出し、自分のニーズに合うよう変更していくことの自由を楽しんでいた。 Tweenerが長いこと非公開（使っていたのは僕自身だけ）だったのはそのためだ。もっとも、Gringo（当時）のためのプロジェクトをビルドするために使っていたんだけど。 Tweenerが「公開」されたのは2007年1月のこと。最初のバージョンを開発してからおよそ2年後のことだった。Nate Chatellierがちょうどチームに参加してくれて、AS3バージョンのTweenerを作ってくれたんだけど、その時、これをこのまま非公開にしておくのはフェアじゃないなと思ったんだ。それにその時点でAPIにはあまり大きな変更が加わることもなさそうだったから、他の人からのインプットが欲しかったというのもあった。 Tweenerは別に斬新なものであったわけでもないし、APIだってそれほど目新しいものではなかった。 Tweenerの採用した、新規トゥイーン生成に関するlooseなアプローチにしても、他のトゥイーン拡張でも採用されていた。AS1ベースの拡張にさえも採用されていた。とはいえ、それはその時期においては正しい構文だった。実際、一時期はそれなりに有名にもなったし、他の言語版のものまで出てくるようになった。 これがまさに4年前のお話（ログを見ると、Tweenerは2005年6月15日に開発を開始したことになってる）。今日では他にも多くのトゥイーン拡張が登場していて、特に有名なのはGo, TweenLite / TweenMax, GTween, 新しいところではBetweenAS3などがある。ってことは？そう、またその時が訪れたと言うことだ。今日的なAS3バージョンがあるとは言っても、 Tweenerの持つパラダイムの大半は、今となってはかなり時代遅れになってしまった。僕はだんだん不満を感じるようになってきた。僕は多くのことを学んだ。もう動き出す時なんだ。 すぐに動き出すこともできたんだけど、その前に振り返って、うまくいったことやいかなかったことを見つめてみようと思った。この記事はいわばTweenerの死亡記事。この4年間で僕が何を学び、Tweenerのようなライブラリにとって ActionScriptがどのように変化してきたかという点に対する、僕なりの分析なのだ。 さてと。AS2からAS3に移行するにあたって考慮しなければならない重要なポイントが一つある。「エラー」だ。AS2ではエラーはすごくサイレントなもので、nullオブジェクトのプロパティを変更するスクリプトを実行しても、FlashPlayerは喜んでそれに従ってしまう。もちろん、オブジェクトが存在しないのだから、スクリプト自体は機能しないんだけど、そのことを示すエラーメッセージは何も出てこない。 このことは、厳密な動作が期待されるような場合に問題となる。取得したデータが意図したものであるかどうかを知るためには、いくつかのレベルの検証が必要であり、そうして他の方法によってユーザーに警告を出すことができる。TweenerのAS2版では、僕はユーザーにとってより安全に動作するよう努めた。具体的には、トゥイーンの間中、対象となるオブジェクトが存在するかどうかをチェックして、トゥイーンされているプロパティにデフォルトの値が設定されているかどうかをチェックしていた。 AS3になって、その機能は必要なくなった。存在しないオブジェクトやプロパティにアクセスしようとすれば、コードの実行はあらゆる方法で中断されるようになった。これは良いことだ。ユーザーが、自分が何かとても、すごく間違いを犯していて、それを修正しなくちゃいけないということを理解する助けになるから。 その一方で、AS3版にインポートするにあたり、TweenerはこうしたAS2のパラダイムを引き継いできてしまった。だから、さっき書いたようなチェック機能なんかもたくさん残ってる。また、存在しないプロパティの値をトゥイーンしようとすれば、FlashPlayerのエラーじゃなくて、 Tweenerの方でカスタムのエラーを表示するようになってる。 if (rScopes[0][istr] == undefined) { printError(&#34;The [...]]]></description>
			<content:encoded><![CDATA[<p>つい数日前に「Tweener、がんばれ！」とか言った側から、<strong>Tweenerの開発終了</strong>について、開発者のZeh氏のブログで公式なアナウンスが出てしまいました（汗）。<br />
<a href="http://zehfernando.com/2009/tweener-4-years-later-a-post-mortem/"><br />
Zeh Fernando » Blog Archive » Tweener, 4 years later &#8211; A post mortem</a></p>
<p>上記記事の内容を意訳してみました。間違ってる部分も結構あるはずですが、大意はつかめてると思います。<br />
<span id="more-413"></span></p>
<blockquote><p>
執筆するのにとても時間がかかってしまったもう一つの記事です。</p>
<p>まずは始まりから話そう。僕は数年前まで、Flashムービーの開発時に何かしらのアニメーションが必要になったときには、自分で開発した<a href="http://hosted.zeh.com.br/mctween/">MC Tween</a>というFlashのActionScriptトゥイーン拡張機能を使っていた。この拡張機能は<em>全くもって自分好みに</em>作ったものだ。当時、他にも優れたトゥイーン拡張機能が存在していたんだけど、どれもどうも好きになることができなかった。それらのAPIのほとんどが<em>あまりにも抽象的</em>すぎて、僕の求めているものと違ったから。MC Tweenでは<em>prototypeベース</em>のアプローチを採用し、MovieClipのような既存のオブジェクト型に新たな機能を追加するという手法をとった。プログラム的なトゥイーンに対して僕がとったこの構文アプローチに賛同してくれる人も何人かいて、最終的には<a href="http://www.google.com/search?q=%22mc+tween%22">それなりの人気</a>を得ることができた。</p>
<p>しかし、2005年になると、MC Tweenに対してかなりイライラするようになった。MC Tween自体は意図したとおりに動いてる一方で、ActionScriptの文法やパラダイムが（特にAS2が登場したことから）変化し、僕自身がオブジェクト指向プログラミングへの理解を深めたこともあって、MC Tweenが既に僕の開発ワークフローに合わなくなってきていると言うことを悟った。加えて、MC Tweenの開発がかなり停滞するようになっていた。人気が出てきたことで、実験的な新機能を実装することを、考えるだけでも<em>危険</em>だと思うようになっていた。どん詰まりのような状態だった。</p>
<p>だから、その年の6月から、僕は新たにクラスベースのトゥイーン拡張機能を実験的に開発することにした。開発当初はインスタンスベース（<em>tween</em>インスタンスを生成するような）だったんだけど、後に<em>addTween()</em>という一つのメソッドによってすべてのトゥイーンを生成するという、静的なクラス構造に変更した。そして、<em>stopTween()</em>や<em>getTweens()</em>といった付属メソッドを使って、様々な機能を操作するようにした。</p>
<p>このクラスには<em>とても多くの</em>変更が加えられた。クラス名自身が変わったり（初期には<em>Twina</em>だったのが<em>Tweener</em>になり、<em>ZTweener</em>になって、また<em>Tweener</em>に戻った）、パッケージの位置が動いたり（<em>generic.*</em>から <em>zeh.easing.*</em>、そして<em>caurina.transitions.*</em>）、APIが変更になったり。インスタンスベースから静的クラスへの変更は言うまでもないし、その他にも内部構造の変更などがたくさんあった。この過程で学んだこと、そしてそれこそがこの記事の趣旨なのだけど、それは自分のために何かを作る場合、その作ったものの結果を誰かが見て評価したり、ましてそれを誰かがとても大事な仕事に使ったりすることなど無いだろうと思って作っていると、リスクを負わなければならないのは自分一人だという単純な理由から、結果的に非常に多くのミスを許容することになってしまうということ、しかし、その過程でよりよい方法を見つけることになるということだ。</p>
<p>僕がこのプロジェクトの開発を始めた頃、トゥイーン拡張機能として一番有名だったのは<a href="http://www.mosessupposes.com/Fuse/">Fuse Kit</a>だった。別にそれと<em>競う</em>つもりもなかったし、僕は自分自身のために何かを作り出し、自分のニーズに合うよう変更していくことの自由を楽しんでいた。 Tweenerが長いこと非公開（使っていたのは僕自身だけ）だったのはそのためだ。もっとも、<a href="http://www.gringo.nu/">Gringo</a>（当時）のためのプロジェクトをビルドするために使っていたんだけど。</p>
<p>Tweenerが「公開」されたのは2007年1月のこと。最初のバージョンを開発してからおよそ2年後のことだった。<a href="http://natejc.com/blog/">Nate Chatellier</a>がちょうどチームに参加してくれて、AS3バージョンのTweenerを作ってくれたんだけど、その時、これをこのまま非公開にしておくのはフェアじゃないなと思ったんだ。それにその時点でAPIにはあまり大きな変更が加わることもなさそうだったから、他の人からのインプットが欲しかったというのもあった。</p>
<p>Tweenerは別に斬新なものであったわけでもないし、APIだってそれほど目新しいものではなかった。 Tweenerの採用した、新規トゥイーン生成に関する<em>loose</em>なアプローチにしても、他のトゥイーン拡張でも採用されていた。<a href="http://tatsuokato.com/flash/dynTweenMX.html">AS1ベースの拡張</a>にさえも採用されていた。とはいえ、それはその時期においては正しい構文だった。実際、一時期は<a href="http://www.google.com/search?q=tweener+actionscript">それなりに有名</a>にもなったし、<a href="http://code.google.com/p/tweener/">他の言語版のものまで</a>出てくるようになった。</p>
<p>これがまさに4年前のお話（ログを見ると、Tweenerは2005年6月15日に開発を開始したことになってる）。今日では他にも多くのトゥイーン拡張が登場していて、特に有名なのは<a href="http://goasap.org/">Go</a>, <a href="http://blog.greensock.com/tweenliteas3/">TweenLite</a> / <a href="http://blog.greensock.com/tweenmaxas3/">TweenMax</a>, <a href="http://www.gskinner.com/libraries/gtween/">GTween</a>, 新しいところでは<a href="http://www.be-interactive.org/works/20090428/slide_betweenas3.html">BetweenAS3</a>などがある。ってことは？そう、またその時が訪れたと言うことだ。今日的なAS3バージョンがあるとは言っても、 Tweenerの持つパラダイムの大半は、今となってはかなり時代遅れになってしまった。僕はだんだん不満を感じるようになってきた。僕は多くのことを学んだ。もう動き出す時なんだ。</p>
<p>すぐに動き出すこともできたんだけど、その前に振り返って、うまくいったことやいかなかったことを見つめてみようと思った。この記事はいわばTweenerの死亡記事。この4年間で僕が何を学び、Tweenerのようなライブラリにとって ActionScriptがどのように変化してきたかという点に対する、僕なりの分析なのだ。</p>
<p>さてと。AS2からAS3に移行するにあたって考慮しなければならない重要なポイントが一つある。「エラー」だ。AS2ではエラーはすごくサイレントなもので、nullオブジェクトのプロパティを変更するスクリプトを実行しても、FlashPlayerは喜んでそれに従ってしまう。もちろん、オブジェクトが存在しないのだから、スクリプト自体は機能しないんだけど、そのことを示すエラーメッセージは何も出てこない。</p>
<p>このことは、厳密な動作が期待されるような場合に問題となる。取得したデータが意図したものであるかどうかを知るためには、いくつかのレベルの検証が必要であり、そうして他の方法によってユーザーに警告を出すことができる。TweenerのAS2版では、僕はユーザーにとってより<em>安全</em>に動作するよう努めた。具体的には、トゥイーンの間中、対象となるオブジェクトが存在するかどうかをチェックして、トゥイーンされているプロパティにデフォルトの値が設定されているかどうかをチェックしていた。</p>
<p>AS3になって、その機能は必要なくなった。存在しないオブジェクトやプロパティにアクセスしようとすれば、コードの実行はあらゆる方法で中断されるようになった。これは<em>良いこと</em>だ。ユーザーが、自分が何かとても、すごく間違いを犯していて、それを修正しなくちゃいけないということを理解する助けになるから。</p>
<p>その一方で、AS3版にインポートするにあたり、TweenerはこうしたAS2のパラダイムを引き継いできてしまった。だから、さっき書いたようなチェック機能なんかもたくさん残ってる。また、存在しないプロパティの値をトゥイーンしようとすれば、FlashPlayerのエラーじゃなくて、 Tweenerの方でカスタムのエラーを表示するようになってる。
</p></blockquote>
<pre class="brush: as3;">if (rScopes[0][istr] == undefined) {
printError(&quot;The property '&quot; + istr + &quot;' doesn't seem to be a normal object property of &quot; + String(rScopes[0]) + &quot; or a registered special property.&quot;);
}</pre>
<blockquote><p>
プロパティを更新するための繰り返しのループについても同じことだ。更新するオブジェクトが存在するかチェックして、プロパティが存在するかチェックして、など。要するに、Tweenerはやりすぎなんだ。このやり方のせいで、パフォーマンスが低下し、ファイルサイズが増えるという副作用も出てしまった。</p>
<p>APIユーザー（？）を信頼しないというこの AS2式のやり方に関連した妥協点は他にもある。内部的に、Tweenerはできるだけ安全に処理を行うようにできてるので、ユーザーが他のことをする（？）ための余地がすごく少ないんだ。そのことを示す一番わかりやすい例がある。新規にトゥイーンを作成する時、Tweenerは似たようなトゥイーン（同じオブジェクトの同じプロパティで、実行時間のかぶるようなトゥイーン）がないかどうかを探し、それらを削除しようとする。別にそれはそれで機能するし、それがアニメーションに求められる挙動であることも事実なんだけど、これによって2つの問題が発生する。まず、トゥイーンの上書きが強制的に行われ、オプションではないということ。そして、新規のトゥイーンを生成するときにパフォーマンスを大きく低下させるということ。既に大量のトゥイーンが同じ場所で存在する場合なんかはなおさらだ。なにせ、すべてのトゥイーンとオブジェクトが、かぶってないかどうか最初にチェックされるのだから。</p>
<p>僕は長いことこの<em>安全な</em>アプローチを好んでた。だけど、ActionScriptがより複雑になり、最新の方法を使うことでより良いパフォーマンスが得られるようになったことで、この手法は過剰な譲歩となってしまった。結局、<em>程よく</em>安全に、でもユーザーに対してはデフォルトの用法を回避するための方法を残しておく、というのが、ベターなやり方なんだ。</p>
<p>だから、今日では僕はトゥイーンの上書きはデフォルトではオフになっていて、付随機能として提供されるべきだと確信している。（別に驚くようなことじゃない。TweenMaxのようなクラスで採用されている手法だ）</p>
<p>最近のトゥイーンエンジンのパフォーマンスを比較すると、この問題はより明らかになる。実際のトゥイーンの更新に要する時間やメモリの消費量などは悪くないとはいえ、生成するトゥイーンの量が増えれば増えるほど、Tweenerの処理はキツくなってしまう。新しいトウィーンが生成される度に既存の全トゥイーンとの競合をチェックするので、トゥイーン生成に要する時間が飛躍的に高くなってしまうんだ。トゥイーンの数が1000を超えると、新規にトゥイーンを生成しようとするだけで、アニメーション自体の所要時間をオーバーし、FlashPlayerがしばらく固まってしまうこともしばしばだ。</p>
<p>Tweener はトゥイーンのリストをたった一つの配列で管理しているので、より有能なAS3ネイティブな手法を採ることで上記の点は解決できるかもしれない。 Dictionaryを使うとかね。でも、当座しのぎにはなるかもしれないけど、他にも問題は残ってる。Tweenerはとにかく安全に動作しようとしすぎるんだ。ユーザーの手を引いて導き、ユーザーがパフォーマンスを向上させたいと思って処理の内容を知ろうと思っても、その余地を与えない。</p>
<p>今日のTweenerについて言及するとき、これはもう最適化の問題ではないと僕が思うのは、そういう理由なんだ。一時しのぎならできる。いくつかのチェック処理を外すとか、代わりにDictionaryのようなAS3の新機能を追加してリストを管理するとか、ベクター機能を追加するとかさ。でも、正直なところ、Tweenerはもうその全盛期を終えてしまったと僕は確信している。だから、そういう変更を加えたとしても、まさに、ただの一時しのぎでしかないんだ。</p>
<p>だから、もうこれ以上Tweenerの更新をするのは無意味だ。もちろん、（特に同時に千を超えるようなトゥイーンを実行する必要が無いならば）現在も機能するし、これからも機能し続けるだろう。でも進歩という点においてはもう行き詰まってしまった。今やより良い方法がいくつも存在している。Tweenerだってまだがんばれてる（と思う）、でも、戦略を講ずるだけの十分な余地が残されていない。このプロジェクトは、あるがままの姿で残し、何か新しいことにとりかかるのが、ベストな選択なんだ。</p>
<p>ただ、ちょっと見て欲しいことがある。</p>
<p>隠れていた新たなバグが出てきたりでもしない限り、Tweenerをアップデートするつもりはないんだけど、最近ちょっとした更新をしたんだ。新バージョンの 1.33.74が、<a href="http://code.google.com/p/tweener/downloads/list">Google Codeのプロジェクトページ</a>と<a href="http://code.google.com/p/tweener/source/checkout">subversionサーバー</a>の両方で公開されている。この更新では、デフォルトのトゥイーンの上書きについては残しつつ、overwriteという新たなパラメーターを追加し（この値をtrueにすると、これまでの挙動と同じになる）、autoOverwriteという新たな静的プロパティ（上書きに関するデフォルトの挙動を変更する）を追加した。それが何で良いことかって？処理が早くなるんだ。</p>
<p><img class="alignnone" src="http://zehfernando.com/wp-content/uploads/2009/05/ttime.png" alt="" width="486" height="343" /></p>
<p>上の図で、青いグラフはトゥイーンのない状態を、オレンジのグラフはTweener 1.31.74を、黄色のグラフはTweener 1.33.74でoverwritingをfalseにした状態を示している。</p>
<p>大したことではないかもしれないけど、これはこのプロジェクトに携わった数年間で僕が受けたサポート、助言、レッスン、そしてすばらしい経験に対しての、僕からの感謝の印ととらえて欲しい。<a href="http://code.google.com/p/tweener/wiki/Credits">プロジェクトを直接サポートしてくれたメンバー</a>に対してだけではなく、このプロジェクトを様々な面から支えてくれたすべての人たちへの、僕からの最高の感謝の気持ちです。</p>
<p>あと、まあこれで終わりということになるので、記事の内容には大して関係ないかもしれないけど、僕がTweenerの開発をGoogle Codeのサイトに移してからずっと集計してきた興味深い画像を見せようと思う。これは、バージョン別の、安定版のTweenerのダウンロード率を比較したものだ（<a href="http://code.google.com/p/tweener/downloads/list?can=1&amp;q=&amp;colspec=Filename+Summary+Uploaded+Size+DownloadCount">ダウンロード数の完全版</a>はこちら）。徐々にではあるけど、AS3の占める割合が増えていることがわかる。ちなみに、今日リリースしたバージョンは含んでいない。</p>
<p><img class="alignnone" src="http://zehfernando.com/wp-content/uploads/2009/06/tw1.png" alt="" width="673" height="336" /></p>
<p>こちらは同じ図を正規化せずに表したもの。</p>
<p><img class="alignnone" src="http://zehfernando.com/wp-content/uploads/2009/06/tw21.png" alt="" width="569" height="286" /></p>
<p>あとがきとして、皆さんに伝えておきたいことがある。僕はトゥイーンに対して、個人的に、Tweenerによってもたらされたのとは別のアプローチを使っている。Tweener はまだ機能してるし、これからも機能し続けるだろうけど、僕自身のワークフローは少し変わったんだ。僕はもう<a href="http://hosted.zeh.com.br/tweener/docs/en-us/properties/ColorShortcuts.html">色のトゥイーン</a>やその他に使う特殊なショートカットは使っていない。その代わり、<a href="http://zehfernando.com/2009/creating-a-movieclip-class-for-designers/">独立したクラス</a>やgetter/setterやdecoratorなどを経由した特定の機能を使うようになった。他の人たちもそうするべきかって？そんなことは僕にはわかるはずもない。ただ、僕がTweenerのようなことに取り組んだそもそもの理由というのは、自分の開発フローにフィットするような何かに取り組むこと、そして需要があれば後に他の人たちが使えるようにするのが楽しかったからだ。そりゃあんまりにも単純なんじゃないの、と思うかもしれない。僕がTweenerを公開するまでに長い時間を要したのはそのためだ。ただ、僕はすべての人のニーズに応えるために作られたものを使うより、誰かのため（僕と同じ意見の人ならば）に作られたものを使う方が好きだ。巷にある他のライブラリーに同じことがあてはまるとは言わない。というか、僕にはそんなことわからない。ただ、こうしたライブラリーのたぐいに対する僕なりのアプローチについて、そして、ベストなアプローチを持たないと判断した何かに固執するより、新たに動き出すことを僕が望んだその理由について、説明しておきたかったんだ。</p>
<p>最近の僕はトゥイーンを行うときに複数の方法を併用している。いくつかのものにはTweenerを使い、他のものには僕のワークフローにとてもよくフィットし、最高のパフォーマンスを求めるときに乱用できる（僕が求めること以外のことは<em>しよう</em>としないからね）ような、自作の実験的トゥイーンエンジンを使う。そして、（たぶん来週から）僕がつとめることになる<a href="http://www.firstbornmultimedia.com/">Firstborn</a>の人たちが作り、やがて僕自身もそれについて語ることになるであろうトゥイーンエンジンも使っている。</p>
<p>はっきりさせておくけど、「Tweener2」とか、そういうのは出てこないからね。</p>
<p>改めて、ありがとうございました！
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/06/tweener/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/06/tweener/" />
	</item>
		<item>
		<title>BetweenAS3</title>
		<link>http://www.tonpoo.com/blog/2009/06/betweenas3/</link>
		<comments>http://www.tonpoo.com/blog/2009/06/betweenas3/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 02:49:48 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[betweenas3]]></category>
		<category><![CDATA[tweener]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/2009/06/betweenas3/</guid>
		<description><![CDATA[Tweenerと同じようなトゥイーンライブラリに「BetweenAS3」というのがあることを知りました。 BeInteractive! [BetweenAS3 (Draft)] 「Tweener ユーザが Tweener に不満が出てきたとき、次に使えるようなものを目指していて」とのこと。むむむ、Tweenerの強力なライバルでしょうか。 というか、下記ページなんかを見ると、「パフォーマンス比較のみで言えば、どの比較でもビルトインのTween機能を除くと、当初一番人気だったTweenerがかなり劣ってる状態です。」などという評価まで出ている始末（汗）。 「BetweenAS3」のパフォーマンにびっくり！ &#124; logicalyze::blog ドキュメントの和訳なんぞに挑戦している手前、当面はTweenerを使うつもりでいますが、Tweenerのパフォーマンスがあがったりしないことには、そのうちこっちに切り替えるようなことになるのかもしれないですね・・・。Tweener、がんばれ！]]></description>
			<content:encoded><![CDATA[<p>Tweenerと同じようなトゥイーンライブラリに「BetweenAS3」というのがあることを知りました。</p>
<p><a href="http://www.be-interactive.org/index.php?itemid=449">BeInteractive! [BetweenAS3 (Draft)]</a></p>
<p><cite>「<strong>Tweener ユーザが Tweener に不満が出てきたとき</strong>、次に使えるようなものを目指していて」</cite>とのこと。むむむ、Tweenerの強力なライバルでしょうか。</p>
<p>というか、下記ページなんかを見ると、<cite>「パフォーマンス比較のみで言えば、どの比較でもビルトインのTween機能を除くと、<strong>当初一番人気だったTweenerがかなり劣ってる状態</strong>です。」</cite>などという評価まで出ている始末（汗）。</p>
<p><a href="http://www.logicalyze.net/blog/?p=2168">「BetweenAS3」のパフォーマンにびっくり！ | logicalyze::blog</a></p>
<p>ドキュメントの和訳なんぞに挑戦している手前、当面はTweenerを使うつもりでいますが、Tweenerのパフォーマンスがあがったりしないことには、そのうちこっちに切り替えるようなことになるのかもしれないですね・・・。<strong>Tweener、がんばれ！</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/06/betweenas3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/06/betweenas3/" />
	</item>
		<item>
		<title>Tweener 1.33.74</title>
		<link>http://www.tonpoo.com/blog/2009/06/tweener-1-33-74/</link>
		<comments>http://www.tonpoo.com/blog/2009/06/tweener-1-33-74/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 03:11:53 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[translation]]></category>
		<category><![CDATA[tweener]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/2009/06/tweener-1-33-74/</guid>
		<description><![CDATA[Tweenerがバージョンアップ（1.32.74→1.33.74）したとの報告が公式MLでありました。 [Tweener] Tweener 1.33.74 1.32.74のバージョンアップ時の変更点（Tweenの上書きを「オプション」扱いとし、デフォルトでは無効とした。）が不評だったことを受けてのバージョンアップのようです。詳細はまだ読んでいません。 【追記】Zeh氏の投稿内容を意訳しました↓ List, Makc, et al, 何人かの友達と話をしたら建設的なフィードバックをもらうことができて、Tweener 1.32.74で追加した変更－トゥイーンの上書きをオプション扱いにして、デフォルトではそのパラメーターをoffにする（従来は強制的にtrueになっていたのと対照的に）－について、間違ったやり方だったということに気がついた。僕自身としては、全体の構造を考えればより良い決断だと信じてたんだけど、その変更によって自分のスクリプトが動かなくなるかどうかがわからない（知らない）ままアップデートしてしまって困ってしまう人たちがいるということを十分考慮できなかった。「まあ、そういう時はアップデートしなければいいんだし」というように考えてもいたんだけど、考えてみれば、既存のスクリプトを動作させるために、そのユーザーに特定のバージョンを使うことを強制するというのは最適な解決方法ではないと思うし、実際そのコードが公式にlast version（古いバージョン？）になったら結構辛いと思ったんだ。 本当に、ごめんなさい。 その埋め合わせの意味もあって、SVNとドキュメントを、Tweener 1.33.74版にアップデートしました。このバージョンの重要な変更点は二つ。一つは、&#8221;autoOverwrite&#8221;という静的プロパティができたこと。このプロパティで、&#8221;overwrite&#8221;パラメーターのデフォルト値を指定することができる。もう一つは、その&#8221;autoOverwrite&#8221;プロパティのデフォルト値がtrueだという点。これによって、デフォルトの状態ならば、overwriteバラメーターが加わった以降の過去のバージョンのTweenerと同じように動作するようになったわけだ。 これはつまり、過去の「安定版（stable）」から1.33.74にアップデートしても、デフォルト状態のoverwriteパラメーターも含め、それまで通りにスクリプトが動作する、ということになる。 違いとしては、オプションのautoOverwriteプロパティを使うか、あるいはoverwriteパラメーターを使うかすることで、スクリプトの動作を設定することができるようになったということ。 コードにまとめると、以下の通り： // Tweenが上書きされるケース Tweener.addTween(myBox, {x:400, time:4, transition:&#34;linear&#34;}); Tweener.addTween(myBox, {x:100, time:2, transition:&#34;linear&#34;}); // Tweenが上書きされないケース Tweener.autoOverwrite = false; Tweener.addTween(myBox, {x:400, time:4, transition:&#34;linear&#34;}); Tweener.addTween(myBox, {x:100, time:2, transition:&#34;linear&#34;}); // Tweenが上書きされないケース Tweener.addTween(myBox, {x:400, time:4, transition:&#34;linear&#34;}); Tweener.addTween(myBox, {x:100, time:2, transition:&#34;linear&#34;,overwrite:false}); // Tweenが上書きされるケース Tweener.autoOverwrite [...]]]></description>
			<content:encoded><![CDATA[<p>Tweenerがバージョンアップ（1.32.74→1.33.74）したとの報告が公式MLでありました。</p>
<p><a href="http://lists.caurinauebi.com/pipermail/tweener-caurinauebi.com/2009-June/001371.html">[Tweener] Tweener 1.33.74</a></p>
<p><a href="http://www.tonpoo.com/blog/2009/05/tweener-13274/">1.32.74のバージョンアップ時の変更点</a>（Tweenの上書きを「オプション」扱いとし、デフォルトでは無効とした。）が不評だったことを受けてのバージョンアップのようです。詳細はまだ読んでいません。</p>
<p>【追記】Zeh氏の投稿内容を意訳しました↓</p>
<blockquote><p>List, Makc, et al,</p>
<p>何人かの友達と話をしたら建設的なフィードバックをもらうことができて、Tweener 1.32.74で追加した変更－トゥイーンの上書きをオプション扱いにして、デフォルトではそのパラメーターをoffにする（従来は強制的にtrueになっていたのと対照的に）－について、間違ったやり方だったということに気がついた。僕自身としては、全体の構造を考えればより良い決断だと信じてたんだけど、その変更によって自分のスクリプトが動かなくなるかどうかがわからない（知らない）ままアップデートしてしまって困ってしまう人たちがいるということを十分考慮できなかった。「まあ、そういう時はアップデートしなければいいんだし」というように考えてもいたんだけど、考えてみれば、既存のスクリプトを動作させるために、そのユーザーに特定のバージョンを使うことを強制するというのは最適な解決方法ではないと思うし、実際そのコードが公式にlast version（古いバージョン？）になったら結構辛いと思ったんだ。</p>
<p>本当に、ごめんなさい。</p>
<p>その埋め合わせの意味もあって、SVNとドキュメントを、Tweener 1.33.74版にアップデートしました。このバージョンの重要な変更点は二つ。一つは、&#8221;autoOverwrite&#8221;という静的プロパティができたこと。このプロパティで、&#8221;overwrite&#8221;パラメーターのデフォルト値を指定することができる。もう一つは、その&#8221;autoOverwrite&#8221;プロパティのデフォルト値がtrueだという点。これによって、デフォルトの状態ならば、overwriteバラメーターが加わった以降の過去のバージョンのTweenerと同じように動作するようになったわけだ。</p>
<p>これはつまり、過去の「安定版（stable）」から1.33.74にアップデートしても、デフォルト状態のoverwriteパラメーターも含め、それまで通りにスクリプトが動作する、ということになる。</p>
<p>違いとしては、オプションのautoOverwriteプロパティを使うか、あるいはoverwriteパラメーターを使うかすることで、スクリプトの動作を設定することができるようになったということ。</p>
<p>コードにまとめると、以下の通り：</p></blockquote>
<pre class="brush: as3;">// Tweenが上書きされるケース
Tweener.addTween(myBox, {x:400, time:4, transition:&quot;linear&quot;});
Tweener.addTween(myBox, {x:100, time:2, transition:&quot;linear&quot;});

// Tweenが上書きされないケース
Tweener.autoOverwrite = false;
Tweener.addTween(myBox, {x:400, time:4, transition:&quot;linear&quot;});
Tweener.addTween(myBox, {x:100, time:2, transition:&quot;linear&quot;});

// Tweenが上書きされないケース
Tweener.addTween(myBox, {x:400, time:4, transition:&quot;linear&quot;});
Tweener.addTween(myBox, {x:100, time:2, transition:&quot;linear&quot;,overwrite:false});

// Tweenが上書きされるケース
Tweener.autoOverwrite = false;
Tweener.addTween(myBox, {x:400, time:4, transition:&quot;linear&quot;});
Tweener.addTween(myBox, {x:100, time:2, transition:&quot;linear&quot;,overwrite:true});</pre>
<blockquote><p>トゥイーンの上書きを行わないことの利点は、なんといってもその方が処理速度が速いこと。上書きすべきものがあるかどうかの判定をしなくてすむからね。だから、もしループで何百ものトゥイーンを使うような場合には、&#8221;overwrite:false&#8221;を使うと処理速度が上がるよ。</p>
<p>AS2 FL7, AS2, AS3, AS3バージョンについては、テストの上でSVNサーバーを更新した。本当は先週の日曜日にアップロードしたかったんだけど、サーバーが落ちてしまった。結局、eclipseとFlashとTortoiseSVNをインストールするのに今日までかかってしまった。もし何かエラーが出てたら、誰か教えてくださいな。</p>
<p>もし致命的な（？）修正点とかがないようならば、Tweenerの更新通知を僕自身が投稿することで、このバージョンが次の「安定版」になって、来週にはダウンロードリストに追加される予定です。</p>
<p>Zeh</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/06/tweener-1-33-74/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/06/tweener-1-33-74/" />
	</item>
		<item>
		<title>Tweener: TextShortcuts</title>
		<link>http://www.tonpoo.com/blog/2009/05/tweener-textshortcuts/</link>
		<comments>http://www.tonpoo.com/blog/2009/05/tweener-textshortcuts/#comments</comments>
		<pubDate>Fri, 29 May 2009 10:34:00 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[tweener]]></category>
		<category><![CDATA[actionscript2]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/2009/05/tweener-textshortcuts/</guid>
		<description><![CDATA[「超訳：Tweenerドキュメント＆言語リファレンス」の翻訳作業の中で、TweenerのTextShortcutsについてやってた時に知ったこと。Tweenerって、テキストフィールドの文字列までトゥイーンできるんですね！どういうことかというと、こういうこと↓ Tweener 1.31.66 を試す(8) ～TextShortcuts～【閃光的網站・弛緩複合体 -Review Division-】 「_text」プロパティとかおもしろいなあ。これ、今度使おう。]]></description>
			<content:encoded><![CDATA[<p>「超訳：Tweenerドキュメント＆言語リファレンス」の翻訳作業の中で、TweenerのTextShortcutsについてやってた時に知ったこと。Tweenerって、テキストフィールドの文字列までトゥイーンできるんですね！どういうことかというと、こういうこと↓</p>
<p><a href="http://aquioux.blog48.fc2.com/blog-entry-289.html">Tweener 1.31.66 を試す(8) ～TextShortcuts～【閃光的網站・弛緩複合体 -Review Division-】</a></p>
<p>「_text」プロパティとかおもしろいなあ。これ、今度使おう。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/05/tweener-textshortcuts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/05/tweener-textshortcuts/" />
	</item>
		<item>
		<title>Tweener 1.32.74</title>
		<link>http://www.tonpoo.com/blog/2009/05/tweener-13274/</link>
		<comments>http://www.tonpoo.com/blog/2009/05/tweener-13274/#comments</comments>
		<pubDate>Wed, 20 May 2009 01:28:00 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[actionscript2]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[tweener]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/2009/05/tweener-13274/</guid>
		<description><![CDATA[Tweenerがバージョンアップ（1.31.74→1.32.74）との報告が公式MLでありました。 [Tweener] Tweener 1.32.74 変更点についての記述は下記の通り（一部抜粋）。 変更点は至ってわずか（ほんのコード2行分）。でも重要な変更です。 ＊Tweenの上書きを「オプション」扱いとし、デフォルトでは無効とした。＊addTween()に「overwrite:」パラメーターを新規に追加。この値が「true」だったら、新しいtweenとオーバーラップする同一オブジェクトの同一プロパティに設定されているすべてのtweenを上書きする。 Tweenの上書きをたくさん使ってるような場合には、この変更によって互換性が失われることがあるかもしれません。ただ、特に大量の数のtweenを生成する場合のパフォーマンスが大幅に向上されるので、こうすることが重要だと考えました。 公式サイトの方にはまだ反映されてないし、上記メールの文中にあるURLはSVN用のものなので、Subversion使ってる人向けってことですかね。]]></description>
			<content:encoded><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">Tweenerがバージョンアップ（1.31.74→1.32.74）との報告が公式MLでありました。</p>
<p><a href="http://lists.caurinauebi.com/pipermail/tweener-caurinauebi.com/2009-May/001342.html">[Tweener] Tweener 1.32.74</a></p>
<p>変更点についての記述は下記の通り（一部抜粋）。</p>
<blockquote><p>変更点は至ってわずか（ほんのコード2行分）。でも重要な変更です。</p>
<p>＊Tweenの上書きを「オプション」扱いとし、デフォルトでは無効とした。<br />＊addTween()に「overwrite:」パラメーターを新規に追加。この値が「true」だったら、新しいtweenとオーバーラップする同一オブジェクトの同一プロパティに設定されているすべてのtweenを上書きする。</p>
<p>Tweenの上書きをたくさん使ってるような場合には、この変更によって互換性が失われることがあるかもしれません。ただ、特に大量の数のtweenを生成する場合のパフォーマンスが大幅に向上されるので、こうすることが重要だと考えました。</p></blockquote>
<p>公式サイトの方にはまだ反映されてないし、上記メールの文中にあるURLはSVN用のものなので、Subversion使ってる人向けってことですかね。</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/05/tweener-13274/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/05/tweener-13274/" />
	</item>
		<item>
		<title>超訳：Tweenerドキュメント＆言語リファレンス</title>
		<link>http://www.tonpoo.com/blog/2009/04/tweener-document/</link>
		<comments>http://www.tonpoo.com/blog/2009/04/tweener-document/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 02:35:00 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[actionscript2]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[translation]]></category>
		<category><![CDATA[tweener]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/2009/04/%e8%b6%85%e8%a8%b3%ef%bc%9atweener%e3%83%89%e3%82%ad%e3%83%a5%e3%83%a1%e3%83%b3%e3%83%88%ef%bc%86%e8%a8%80%e8%aa%9e%e3%83%aa%e3%83%95%e3%82%a1%e3%83%ac%e3%83%b3%e3%82%b9/</guid>
		<description><![CDATA[Tweenerのドキュメントの一部を日本語化してみました。ただ、未完成＆わりといいかげんなので、参考程度に利用してみてください。 【超訳：Tweenerドキュメント＆言語リファレンス】]]></description>
			<content:encoded><![CDATA[<p>Tweenerのドキュメントの一部を日本語化してみました。ただ、未完成＆わりといいかげんなので、参考程度に利用してみてください。</p>
<h3><a href="http://www.tonpoo.com/tweener/">【超訳：Tweenerドキュメント＆言語リファレンス】</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/04/tweener-document/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/04/tweener-document/" />
	</item>
		<item>
		<title>Tweener事始め：addCaller()</title>
		<link>http://www.tonpoo.com/blog/2009/04/tweener-addcaller/</link>
		<comments>http://www.tonpoo.com/blog/2009/04/tweener-addcaller/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 06:10:00 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[tweener]]></category>
		<category><![CDATA[actionscript2]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/2009/04/tweener%e4%ba%8b%e5%a7%8b%e3%82%81%ef%bc%9aaddcaller/</guid>
		<description><![CDATA[addCallerメソッドを使うことで、タイマーのような役割を持たせることもできる。ただ、transitionパラメーターを何も指定しないと、onUpdateパラメーターで指定したファンクションが等間隔に実行されるのではなく、実行間隔にイージングがついて実行されてしまうようなので注意。 //Tweenerクラスを読み込み import caurina.transitions.Tweener; var val0:Number = 0; var val1:Number = 0; tween0_btn.onRelease = function():Void{ //xReflesh0ファンクションを10秒間に100回実行 Tweener.addCaller(this,{onUpdate:xReflesh0, time:10, count:100}); }; tween1_btn.onRelease = function():Void{ //xReflesh1ファンクションを10秒間に100回、等間隔に実行 Tweener.addCaller(this,{onUpdate:xReflesh1, time:10, count:100, transition:“linear”}); }; reset_btn.onRelease = function():Void{ //リセット xReset(); }; function xReflesh0():Void{ val0++; text0.text = val0; } function xReflesh1():Void{ val1++; text1.text = val1; } function xReset():Void{ Tweener.removeAllTweens(); val0 = val1 [...]]]></description>
			<content:encoded><![CDATA[<p>addCallerメソッドを使うことで、タイマーのような役割を持たせることもできる。<br />ただ、transitionパラメーターを何も指定しないと、onUpdateパラメーターで指定したファンクションが等間隔に実行されるのではなく、実行間隔にイージングがついて実行されてしまうようなので注意。</p>
<pre class="brush: as3;">
//Tweenerクラスを読み込み
import caurina.transitions.Tweener;

var val0:Number = 0;
var val1:Number = 0;

tween0_btn.onRelease = function():Void{
    //xReflesh0ファンクションを10秒間に100回実行
    Tweener.addCaller(this,{onUpdate:xReflesh0, time:10, count:100});
};
tween1_btn.onRelease = function():Void{
    //xReflesh1ファンクションを10秒間に100回、等間隔に実行
    Tweener.addCaller(this,{onUpdate:xReflesh1, time:10, count:100, transition:“linear”});
};
reset_btn.onRelease = function():Void{
    //リセット
    xReset();
};

function xReflesh0():Void{
    val0++;
    text0.text = val0;
}
function xReflesh1():Void{
    val1++;
    text1.text = val1;
}
function xReset():Void{
    Tweener.removeAllTweens();
    val0 =
    val1 = 0;
    text0.text =
    text1.text = “”;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/04/tweener-addcaller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/04/tweener-addcaller/" />
	</item>
		<item>
		<title>Tweener事始め：transitionパラメーター</title>
		<link>http://www.tonpoo.com/blog/2009/04/tweener-transition/</link>
		<comments>http://www.tonpoo.com/blog/2009/04/tweener-transition/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 04:32:00 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[tweener]]></category>
		<category><![CDATA[actionscript2]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/2009/04/tweener%e4%ba%8b%e5%a7%8b%e3%82%81%ef%bc%9atransition%e3%83%91%e3%83%a9%e3%83%a1%e3%83%bc%e3%82%bf%e3%83%bc/</guid>
		<description><![CDATA[addTweenにtransitionパラメーターを追加してみる。transitionパラメーターの種類はこのページにあるように沢山あるんだけど、とりあえず「Simple」な21パターンを試してみた。あと、removeAllTweens()を使ってリセットボタンも実装。 //Tweenerクラスを読み込み import caurina.transitions.Tweener; reset_btn.onRelease = function():Void{ //全トゥイーンを削除 Tweener.removeAllTweens(); //ball_mcを戻す ball_mc._x = 30; }; tween0_btn.onRelease = function():Void{ Tweener.addTween(ball_mc, {_x:270, time:1, transition:“linear”}); }; tween1_btn.onRelease = function():Void{ Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInSine”}); }; tween2_btn.onRelease = function():Void{ Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutSine”}); }; tween3_btn.onRelease = function():Void{ Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInQuad”}); }; tween4_btn.onRelease = function():Void{ Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutQuad”}); }; tween5_btn.onRelease [...]]]></description>
			<content:encoded><![CDATA[<p>addTweenにtransitionパラメーターを追加してみる。transitionパラメーターの種類は<a href="http://hosted.zeh.com.br/tweener/docs/en-us/misc/transitions.html">このページ</a>にあるように沢山あるんだけど、とりあえず「Simple」な21パターンを試してみた。あと、removeAllTweens()を使ってリセットボタンも実装。</p>
<pre class="brush: as3;">
//Tweenerクラスを読み込み
import caurina.transitions.Tweener;

reset_btn.onRelease = function():Void{
    //全トゥイーンを削除
    Tweener.removeAllTweens();
    //ball_mcを戻す
    ball_mc._x = 30;
};
tween0_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“linear”});
};
tween1_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInSine”});
};
tween2_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutSine”});
};
tween3_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInQuad”});
};
tween4_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutQuad”});
};
tween5_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInCubic”});
};
tween6_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutCubic”});
};
tween7_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInQuart”});
};
tween8_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutQuart”});
};
tween9_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInQuint”});
};
tween10_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutQuint”});
};
tween11_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInExpo”});
};
tween12_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutExpo”});
};
tween13_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInCirc”});
};
tween14_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutCirc”});
};
tween15_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInElastic”});
};
tween16_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutElastic”});
};
tween17_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInBack”});
};
tween18_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutBack”});
};
tween19_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeInBounce”});
};
tween20_btn.onRelease = function():Void{
    Tweener.addTween(ball_mc, {_x:270, time:1, transition:“easeOutBounce”});
};</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/04/tweener-transition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/04/tweener-transition/" />
	</item>
	</channel>
</rss>
