<?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>spiffieldLabs</title>
	<atom:link href="http://labs.spiffield.net/feed" rel="self" type="application/rss+xml" />
	<link>http://labs.spiffield.net</link>
	<description>_sift-swiftの人の技術メモ</description>
	<lastBuildDate>Mon, 19 Dec 2011 07:10:17 +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://labs.spiffield.net/feed" />
		<item>
		<title>AS3のTimerのズレ</title>
		<link>http://labs.spiffield.net/archives/128</link>
		<comments>http://labs.spiffield.net/archives/128#comments</comments>
		<pubDate>Mon, 19 Dec 2011 07:08:23 +0000</pubDate>
		<dc:creator>sacrifs</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://labs.spiffield.net/?p=128</guid>
		<description><![CDATA[AS3でタイマーを使ったとき、処理が重いとズレる場合がある、というのは時々言われているみたいです。しかし、全然重くない処理でももともとズレるようになっているようです。
回数をTimerで設定することができるんですが、これ [...]]]></description>
			<content:encoded><![CDATA[<p>AS3でタイマーを使ったとき、処理が重いとズレる場合がある、というのは時々言われているみたいです。しかし、全然重くない処理でももともとズレるようになっているようです。</p>
<p>回数をTimerで設定することができるんですが、これが回数が増えると、大きくズレる。</p>
<p>今までずっと、</p>
<pre class="brush: as3; title: ;">
var timer1:Timer = new Timer(1000, 1);
</pre>
<p>と</p>
<pre class="brush: as3; title: ;">
var timer2:Timer = new Timer(50, 20);
</pre>
<p>は同じ時間にTIMER_COMPLETEを吐くとばかり思っていたんですが、<br />
実はやってみると、0.5秒くらいtimer2の方が遅い。1秒で0.5秒ずれる、っていうのは相当な誤差です。誤差と言える範囲ではないです。</p>
<p>タイマーをフレーム間隔に近づけると、誤差は少なくなっていく気がしますが、絶対そう！というわけでもないみたいです。あと、回数を増やせば増やすほどずれる、というわけでもない。</p>
<p>0.05秒というのが、30fpsで1フレームあたりの秒数(≒0.033)にちょうど合いにくいのかもしれません。時間ごとに処理したい場合は、Timerを使うよりも、ENTER_FRAMEでgetTimerした方がよいのかもしれません。</p>
<p><script type="text/javascript" src="http://wonderfl.net/blogparts/a7kE/js"></script>
<p class="ttlBpWonderfl" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/a7kE" title="Timerのズレ実験">Timerのズレ実験 &#8211; wonderfl build flash online</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.spiffield.net/archives/128/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://labs.spiffield.net/archives/128" />
	</item>
		<item>
		<title>ライブラリの選択中のアイテムをフレームに配分するJSFL</title>
		<link>http://labs.spiffield.net/archives/118</link>
		<comments>http://labs.spiffield.net/archives/118#comments</comments>
		<pubDate>Sun, 25 Sep 2011 01:01:23 +0000</pubDate>
		<dc:creator>sacrifs</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[JSFL]]></category>

		<guid isPermaLink="false">http://labs.spiffield.net/?p=118</guid>
		<description><![CDATA[Flashで数字入りの画像をタイムラインに並べたい時に、一気に並べられたら便利だなーと思って作ってみた。
正確にはどっかにあるかなーと思って探してみたら、Kayacのブログが出てきたけれど、ファイルをDLできなかったので [...]]]></description>
			<content:encoded><![CDATA[<p>Flashで数字入りの画像をタイムラインに並べたい時に、一気に並べられたら便利だなーと思って作ってみた。</p>
<p>正確にはどっかにあるかなーと思って探してみたら、<a href="http://level0.kayac.com/#!2009/01/jsfl_distribute_between_frame.php">Kayacのブログが出てきたけれど</a>、ファイルをDLできなかったので作ってみたという感じです。</p>
<pre class="brush: as3; title: ;">
/**
 * 選択中のアイテムをフレームに分配
 */
var _doc = fl.getDocumentDOM();
var _timeline = _doc.getTimeline();
var _lib = _doc.library;

function main(){
     fl.outputPanel.clear();

     var selectedItems = _lib.getSelectedItems();
     var numItem = selectedItems.length;

     if(numItem == 0){
          fl.trace('何も選択されていません');
     }
     else{
          _timeline.convertToKeyframes(0, numItem);
          fl.trace(numItem);
          for(var i = 0; i &lt; numItem; i++){
               var item = selectedItems[i];
               var name = item.name;
               name.match(/[0-9]+/g);
               var num = parseInt(RegExp.lastMatch);
               if(selectedItems.length == 10 &amp;&amp; num == 0){
                    num = 10;
               }
               setNumFrame(item, num);
          }
          fl.trace(&quot;処理が完了しました&quot;);
     }
}

/**
 * 指定したフレームに配置
 */
function setNumFrame(item, frame){
     _timeline.currentFrame = frame - 1;
     _doc.addItem({x:0, y:0},item);
     _doc.selectNone();
     _doc.selectAll();
     var elem = _doc.selection[0];
     var mat = elem.matrix;
     mat.tx = 0;
     mat.ty = 0;
     elem.matrix = mat;
}

main();
</pre>
<p>使い方</p>
<ol>
<li>空のムービークリップを作成、編集モードに入る</li>
<li>ライブラリのアイテムを選択(ライブラリアイテムは数値があるものとする)</li>
<li>コマンドを実行</li>
</ol>
<p>数値がフレーム番号になります。中を見れば分かるかと思いますが、0～9の時のみ、0番は10フレーム目に置きます(数値を画像にしたとき用)。数字のないものはうまく配置できません。</p>
<p>→<a href="http://labs.spiffield.net/wp-content/uploads/divide_item_into_frames.zip">上をコピペすれば動くと思いますが一応ファイル</a></p>
<p>使用の際はバックアップなど行ったほうが良いかと思います。あんまり多いとフリーズするかもしれません。50程度は問題なく動きました。(WinXP+CS5で確認)</p>
<p>参考</p>
<ul>
<li><a href="http://level0.kayac.com/#!2009/01/jsfl_distribute_between_frame.php">フレームに分配.jsfl | _level0 | Kayac Interactive Designer&#8217;s Blog</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://labs.spiffield.net/archives/118/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://labs.spiffield.net/archives/118" />
	</item>
		<item>
		<title>TitaniumMobile勉強中</title>
		<link>http://labs.spiffield.net/archives/106</link>
		<comments>http://labs.spiffield.net/archives/106#comments</comments>
		<pubDate>Fri, 06 May 2011 14:43:59 +0000</pubDate>
		<dc:creator>sacrifs</dc:creator>
				<category><![CDATA[Titanium]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://labs.spiffield.net/?p=106</guid>
		<description><![CDATA[最近はFlashもやってはいるんですが、スマートフォンアプリの方に興味が移りつつあります。もちろん、Flashでも作れるんですが、Flashだったらまあ何とか今までの知識を使えるだろうということで、そうではない方法を試し [...]]]></description>
			<content:encoded><![CDATA[<p>最近はFlashもやってはいるんですが、スマートフォンアプリの方に興味が移りつつあります。もちろん、Flashでも作れるんですが、Flashだったらまあ何とか今までの知識を使えるだろうということで、そうではない方法を試しています。今のところやってるのは、JavaとTitaniumMobileです。</p>
<ul>
<li><a href="http://www.appcelerator.com/products/titanium-mobile-application-development/">Titanium Mobile</a>(公式)</li>
<li><a href="http://code.google.com/p/titanium-mobile-doc-ja/">titanium-mobile-doc-ja</a>(こちらからいろんな記事を見に行くといい感じです。)</li>
</ul>
<p>JavaはAndroidの方だけなんですが、TitaniumMobileではiOSでもAndroidでも両方書き出せます。また、開発言語がJavaScriptなので、Web系プログラマには取っ付きやすい感じになってると思います。</p>
<p>ただ、このTitaniumMobile、結構癖があるみたいで、同じソースでAndroidアプリもiPhoneアプリもどっちもさくさく作れるぜーとは行かない様子。</p>
<p>というわけで、まだ完成したアプリなど1つもないのですが、詰まった(ている)ところを少しばかりまとめてみる。</p>
<p>試したのはTitaniumMobile1.6.2+TitaniumStudio(Preview)です。</p>
<p><span id="more-106"></span></p>
<h3>Windowsで実行できない(スペックの問題？)</h3>
<p>どう実行しても私の所持しているWindowsマシンでは起動しませんでした。空のプロジェクトを作成したままのものをコンパイルしようが、buildのフォルダ内を消そうが、毎度タスクマネージャでプロセスを切ろうが、エミュレータの起動までは行くんですが、全てタイムアウトでアプリが起動しませんでした。・・・どうにもしようがなかったので、Windowsは諦めてMacにしました。<strong>WindowsではiPhoneアプリは作れませんしね！</strong></p>
<h3>opacity=1で落ちる</h3>
<p>iPhoneでは問題ないんですが、Androidで配置してあるViewのopacityプロパティの値を1にするとエラーでアプリが落ちました。自分の環境だけ・・・？1.0等でも無理みたいで、1.001とかして回避しましたが・・・あんまりよろしくないと思うので、もっとよい回避策があればいいなぁと思うところです。</p>
<h3>anchorPointがAndroidで動作しない</h3>
<p>iPhoneでは問題なく、使い方が間違ってるのかもしれませんが、アニメーションしたいImageViewにanchorPoint(0.5,1.0);と設定しても、左上基準でアニメーションします(無視されている)。回避策は・・・直接width, left,等をいじれば何とかなる・・・？とりあえずそんなに大事ではないのでスルーしています。が、あとで問題になりそうな。</p>
<h3>画面サイズの取得</h3>
<p>iPhoneではcurrentWindow.width/heightで画面サイズが取得できるんですが、Androidだと0になります。これをとるには、</p>
<pre class="brush: jscript; title: ;">
var stageWidth = Titanium.Platform.displayCaps.platformWidth;
var stageHeight = Titanium.Platform.displayCaps.platformHeight;
</pre>
<p>みたいにする必要があるみたいです。</p>
<h3>アニメーションすると、当たり判定が元の位置に残る</h3>
<p>アニメーション後に、動かしたViewのleft,topまたはcenterを再設定しないと、前の座標で判定されているような変な動きをするみたいです。これはAndroidとiPhone共通だったかな。</p>
<h3>その他</h3>
<p>少し作っていくと分かるんですが、iPhoneの書き出しは速く、テストもしやすいので、iPhoneアプリのみ開発には結構使えると思うのですが、Androidアプリの方は、「一応書き出せる」という感じかなぁという印象です。結構癖があって(バグが残っている？)、同じソースで動かそうとすると、無理が出てきます。またTitaniumのせいではないのですが、Androidのエミュレータは起動に大分時間がかかるので、ちょっとどうにかしてほしい感じです。Javaだと実機転送すると即座に見れるんですが、Titaniumだとそうもいかないのでトライアンドエラー形式では厳しいです。まあ自分の作り方にも問題があるところではあるんですけど。。</p>
<p>あと、機能上しょうがないところはあると思うんですが、iPhoneではできるけど、AndroidではできないまたはAndroidではできるけど、iPhoneではできないというものがあります。DashboardViewという結構便利そうなクラスがあるんですが、これはiPhoneでしか使えません(実際にはDashboardViewそのものは作成できますが、DashboardViewItemが作れない)。おそらく今後実装されて行くものなのだと期待していますが、差は限りなく少なくなってほしいなぁと思いますね。</p>
<p>これで結構大きな規模のアプリを作った時に、ソースをどうやって書いていくかが気になる。今は行き当たりばったりで書いてるので、ソースがどうにも読みにくい。</p>
<p>Windowごとにソースを分けるのが結構良さそうなので、Windowをまたぐデータの扱い方をどうするのいいのかということや(今はWindowのオブジェクトにくっつけてます)、Viewをグローバル変数としてバコバコ作るより、Windowに変数として突っ込んでおいた方があとで使いやすそう？とかなんかうまい作り方は無いものかと模索中。</p>
<p>フレームワーク的なものも使ってないのでその辺どうなんだろとか、描画系のAPIがないので画像を加工したりとかは無理なのかなと思っていたんですが、こちらのWebViewでCanvasを使って画像を作成するという手法がすごく使えるような気がするので、実験してみたいです。</p>
<p>→<a href="http://blog.nipx.jp/2011/04/canvas%E3%81%8B%E3%82%89%E7%94%BB%E5%83%8F%E6%9B%B8%E3%81%8D%E5%87%BA%E3%81%97%E3%81%97%E3%81%A6titanium%E3%81%AB%E6%B8%A1%E3%81%99/">Canvasから画像書き出ししてTitaniumに渡す | 2BLOG</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.spiffield.net/archives/106/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://labs.spiffield.net/archives/106" />
	</item>
		<item>
		<title>倉庫番とTenorionを合わせたらどうなるか？</title>
		<link>http://labs.spiffield.net/archives/99</link>
		<comments>http://labs.spiffield.net/archives/99#comments</comments>
		<pubDate>Sun, 06 Mar 2011 13:30:42 +0000</pubDate>
		<dc:creator>sacrifs</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://labs.spiffield.net/?p=99</guid>
		<description><![CDATA[タイトルのようなものを、年末あたりに思いついたんですが、途中まで作って完成させていませんでした。
Tenorionは正確にはTENORI-ONと書く、ヤマハの電子楽器です。→詳しくはこちら
これをFlashで再現されたの [...]]]></description>
			<content:encoded><![CDATA[<p>タイトルのようなものを、年末あたりに思いついたんですが、途中まで作って完成させていませんでした。</p>
<p>Tenorionは正確にはTENORI-ONと書く、ヤマハの電子楽器です。→<a href="http://www.yamaha.co.jp/design/tenori-on/">詳しくはこちら</a></p>
<p>これをFlashで再現されたのがこのFlashで、SiONというライブラリを使って実装されています。</p>
<p>→<a href="http://wonderfl.net/c/qf4b/">SiON Tenorion</a></p>
<p>面白いですよね。</p>
<p>これを何かと合わせて別のものができないか、と考えたのがこちらになります。</p>
<p>→<a href="http://wonderfl.net/c/sG1J">倉庫番+Tenorion実験(音注意！)</a></p>
<p><script type="text/javascript" src="http://wonderfl.net/blogparts/sG1J/js"></script>
<p class="ttlBpWonderfl" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/sG1J" title="倉庫番 + Tenorion 実験">倉庫番 + Tenorion 実験 &#8211; wonderfl build flash online</a></p>
<p>緑が自機。青が箱、黄色がターゲットで箱が重なってる時は薄い青になります。倉庫番のルールはそのままで、緑の人を動かして、青い箱を黄色の所に全て配置すればクリアです。箱の位置によって、音が変わります。全て配置すると・・・？</p>
<p>普段作成するコンテンツがPlayer9ばかりだったもので、Vector型をまともに使うのが初めてで、ちょっと混乱しました。</p>
<p>これで音がうまいこと作られたら楽しいことになりそうです。しかしそうなるとステージを作るのが難しくなるので、両立は難しそうですが。まあ実験でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.spiffield.net/archives/99/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://labs.spiffield.net/archives/99" />
	</item>
		<item>
		<title>TweenerのuseFrames</title>
		<link>http://labs.spiffield.net/archives/91</link>
		<comments>http://labs.spiffield.net/archives/91#comments</comments>
		<pubDate>Tue, 25 Jan 2011 16:13:35 +0000</pubDate>
		<dc:creator>sacrifs</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://labs.spiffield.net/?p=91</guid>
		<description><![CDATA[Tweenerを普段良く使うのですが、あまり使ってなかった機能で、最近便利だと思った機能があります。useFramesというオプションです。
使い方は次のような感じ。
Tweener.addTween(target, { [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hosted.zeh.com.br/tweener/docs/en-us/">Tweener</a>を普段良く使うのですが、あまり使ってなかった機能で、最近便利だと思った機能があります。useFramesというオプションです。</p>
<p>使い方は次のような感じ。</p>
<pre class="brush: as3; title: ;">Tweener.addTween(target, {useFrames:true, alpha:1, time:3,　transition:'easeOutQuad'});</pre>
<p>useFramesをtrueにすると、timeの値がフレーム数で指定できるようになります(この場合は3フレーム)。また、アニメーションもタイマーではなく、フレームレートによるタイミングで動作します。(古いリビジョンでは動かないとありますが、最新のものは大丈夫そうです)</p>
<p>つまりフレームレートが落ちているときに、タイミングがずれたりしないのです。これがすごく大事。</p>
<p>タイムラインアニメーションとスクリプトによるアニメーションを併用することがわりとあると思いますが、Tweenerは基本的にタイマーで動作するため、フレームレートが落ちたときに、アニメーションがずれてしまうことがあります。このオプションでこのズレを回避できます。</p>
<p>できるだけフレームレートが落ちるような処理を回避して軽く作る、というのが大事と思っていますが、低スペックマシンで再生したときに変な動きをする、あるいはエラーで止まってしまうなんて事が無いように、両方使う場合には使ってみるといいかもしれません。</p>
<p>他のTweenライブラリでこういうフレームレートに応じた処理を入れてるライブラリはあるんだろうか・・・と思ったらBetweenAS3にもあるみたい(_frame)。さすが。</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.spiffield.net/archives/91/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://labs.spiffield.net/archives/91" />
	</item>
	</channel>
</rss>

