2013年6月 Archives

« 2013年5月 2013年7月 »

Toolkit4CreateJSが吐いたタイムラインアニメーションを時間ベースのTweenに変換したい

iPhone上でのCreateJS動作はそれなりに使い物になりますが、Androidは非常に困難を伴います。っていうか機種によっては無理ゲーもいいとこです。根本的にはAndroid陣営がwebkitのcanvasパフォーマンスにやる気を見せるしかないのですが、何か少しでも改善する方法はないかと模索しておりました。

でまあ非常に泥臭い手法ですがタイムラインで設定したアニメーションを須く時間ベースのTweenコードに書き換えると多少動作が改善するのではないかと検証した所、一定の効果を得る事に成功しました。

ところがflaファイル上で設定したタイムラインアニメーションを手書きで変換するのはこれまた苦行と言わざるを得ません。
しかし、ご存知の通りToolkit4CreateJSはflaの中身を舐めてjsコード吐きます。ということはT4CJSが吐いたjsを更に舐めてやれば自動変換が可能です。
ついでにjsflに組み込んでやればctrl+EnterでTimeline2Tween変換されたjsファイルの生成できるはずです。

というわけでゴニョゴニョとregexpを使わずにjsをパースする古き良き腐ったjsスタイルでパーサーのテストのテストみたいなjsを作りました。
そのうちjsflとしてファイル保存まで対応する予定です。
 
https://github.com/kappa-lab/spritesheet4createjs/blob/master/optimizer.js

グラニューラ・シン'キング'

デザイナーな子にFlashの実装を教えてると思考プロセスの相違を実感できて、いつも楽しい。や、けっして鼻の下をのばしている訳ではない。

彼等は実現したい事を細分化し、一づつ解決するという訓練が少ない。故に細分化しきれず粒度が大きいまま思考する。それが実装でつまづく大きな原因となっている。

なので、「どこから手を付ければいいのか分からない」状態に陥りやすい。

同様にbugが発生し問題箇所を特定する場合でも、チェック項目の粒度が大き過ぎてなかなか解決しない。

適切な粒度を選定するにはある種のメタ認識が不可欠であり、この手の思考方法はプログラミングだけではなくデザインにも役立つ。というか不可欠だと思う。なんせデザインとはだいたいにして設計を意味する。

パラメーターに応じて画像を変える、この要求定義と呼ぶにはあまりにシンプルな実装だけでも非常に多くの事が見えてくるはずだ。

Haxeメモgetter/setterとReflection

たまには技術エントリー。最近はキータとか流行ってるらしいですね。

HaxeでTween処理を行いたい場合、AS/JSと同様にオブジェクトの任意のプロパティにアクセスします。
たとえばAS/JSで以下のような処理を行うとすると、
var sp:Sprite=new Sprite();
sp['x'] = 20;
Haxeだとこうなります。
var sp:Sprite=new Sprite();
Reflect.setProperty(sp,'x',20);
HaxeではAS/JSの様に気安くプロパティに触らせてくれないので、Reflectクラスを使います。 Reflect.setProperty()を使った処理では、対象オブジェクトのプロパティがgetter/setterで定義されていた場合も、実装者の意図に沿った処理が走ります。
この場合、内部的に
function set x(v:Number):void
を実行してくれます。
Spriteは、flashのビルトインクラス(flash.diplay.Sprite)なので当然といった感じがしますが、Haxeで書かれたクラスに関しても同様にset_x/get_xがcallされます。
@:isVar public var x(get, set):Float;
public function get_x()
public function set_x(i:Float)
これでいい感じのTweenエンジンが作れますね。

ここで注意が必要なのが、よく似た機能を提供する Reflect.setField() というmethodです。
こちらはgetter/setterを利用してくれません。特にJSの場合だとシレっと'x'プロパティを追加したりします。このmethodの使い方はObjectクラスのパラメータを操作するのが多分ベターかと。実はこれを一番言いたかったんだけど、最後になってしまった。

RSS + Contuct

  • rss
  • email

Credit

Copyright (C) 2007 kappa-lab.com.
All Rights Reserved.