2011年9月30日金曜日

Titanium Meet up Tokyo #13


Titanium Meet up Tokyo #13に参加してきました!
会場のDNP五反田ビル、すごく気持ちよい場所でした。

前半1時間は増井さんのCODESTRONG/Marketplaceのお話、
後半1時間はモクモクとコードを書く時間でした。

メモした事と増井さんから聞いた話、私の個人的な感想が混ざってますが、
とりあえず列挙しておきます。

参加した方で間違いや不足があったらご指摘いただけると嬉しいです。

CODESTRONG

  • 残念ながらビデオが間に合わず、後日となるそうです
  • キーノートでTi本が紹介されたそうです(^^)
  • ハッカソンは下準備されてる方が多かったようです(デザインの素材とか)
  • 来年のCODESTRONGでハッカソンに参加する場合は下準備が重要!?


Marketplace
  • モジュール/デザイン素材/フレームワークの売買ができます
  • モジュールはライセンスチェックされているので、不正に利用はできません(アプリ起動時にUnlicensed Moduleというエラーが発生する)
  • モジュールはsubmitしたらテストプログラムでチェックされるそうです(基本的に動かないモジュールが公開される事はない)
  • 月額利用のタイプはプロジェクト期間中のみ利用し、開発終了したら利用を止めても良い。(また必要になったらsubscribeすればいい)
  • Marketplaceはまだ若干バタバタしてるそうですw
  • tiapp.xmlに記述したのにUnlicensed Moduleが出る場合、Project->Cleanしてみて
  • ダウンロードしてすぐはUnlicensed Moduleが出るかも(30分程度経ったら解消する?)
  • モジュール作った事がある人はsubmitしてみて!
  • 作って欲しいモジュールがあったら、@appcelerator_jaまで!
  • モジュールのダウンロードからインストールまでまとめた日本語の情報を公開するとのこと
  • モジュールのインストール先はプロジェクトかグローバル
  • ただし、プロジェクトにインストールするとモジュールファイル自体がアプリにバンドルされちゃうので気になる方は注意!(詳細はTitaniumの自作モジュールをバンドルさせたくない時の対処法)
  • 画像フィルタとかTitaniumがサポートしていないところをどんどんモジュール化したい
  • 個人的にはInstagram 2みたいな事ができるモジュールを作りたいなあ...(誰か一緒にやりませんか、OpenGL ESでフィルタ)

Androidのv8対応

  • 1.8でv8に対応する予定だそう
  • Titanium Desktopもv8に対応するそう
  • v8に変わったらモジュール周りが変わっちゃうかもしれないので要注意!?



2011年9月25日日曜日

Titanium Mobileで回転&ピンチジェスチャ


iPhoneで回転とかピンチイン/アウトっていうジェスチャはマイナーなジェスチャで、あまり使う場面がありません。(UXとしても推奨されない部類?)

とはいえ、Titanium Mobileでこのジェスチャがサポートされていない(ですよね!?)のもどうかと思い、使われる事はないであろうと分かっていながらモジュールを作ってしまいました。

相変わらずiOSのみ対応です。

OpenCVでは有名なlenaさんの画像を回したり拡大したり縮小したりできるデモ。


Gesture Recognizer Demo from Atsushi Kataoka on Vimeo.

ViewにrotateGesture、pinchGestureというプロパティをtrueで設定すると、rotateとかpinchっていうイベントが発生します。
ジェスチャ終了時にはrotateend、pinchendっていうイベントが発生します。
んで、上のデモのソースコードはこんな感じ。

var window = Ti.UI.createWindow({
	orientationModes:[
			  Ti.UI.LANDSCAPE_LEFT,
			  Ti.UI.LANDSCAPE_RIGHT,
			  Ti.UI.PORTRAIT,
			  Ti.UI.UPSIDE_PORTRAIT
			 ]
});

var image = Ti.UI.createImageView({
    image:"lena_std.jpg",
    rotateGesture:true,
    pinchGesture:true
});
var lastAngle = 0.0;
var currentAngle = 0.0;

var lastScale = 1.0;
var currentScale = 1.0;

image.addEventListener('rotate', function(e){
    currentAngle = e.rotation / Math.PI * 180.0;
    image.transform = Ti.UI.create2DMatrix()
        .scale(lastScale*currentScale)
        .rotate(lastAngle+currentAngle);
});

image.addEventListener('rotateend', function(e){
    lastAngle = (lastAngle + currentAngle) % 360.0;
    currentAngle = 0.0;
});

image.addEventListener('pinch', function(e){
    currentScale = e.scale;
    image.transform = Ti.UI.create2DMatrix()
        .scale(lastScale*currentScale)
        .rotate(lastAngle+currentAngle);
});

image.addEventListener('pinchend', function(e){
    lastScale = (lastScale * currentScale);
    currentScale = 1.0;
});

window.add(image);
window.open();

MarketplaceにFreeで公開したいのですが、アイコンとイメージを作るのが面倒で止まっています。
アイコンとイメージは何の報酬もありませんが緩く募集します。

ソースコードは https://github.com/atsusy/Gesture-Recognizer