Skip navigation.
ホーム
BLOG-ROMMER 日高のブログ

Windows Touch でSilverlightでイナーシア (Inertia)

「Windows Slate/Windows 7/マルチタッチ対応アプリケーション開発者会議」というのが去年12月にあって参加して来た。参加者はなんらかのアプリケーションを公開しなくてはならないので、夢は大きいものの中身がしょぼくて申し訳無いがここに公開する。



開発者会議に関しては、「Impress / 窓の森」の記事が非常に詳細で、自分の手元のメモよりも良く書かれている。開発者会議では、半日でざっとWindowsタッチ・アプリケーション開発に関するノウハウを教えて貰えるのであるが、話を聞いた時にはわかったつもりでも、実際にやってみるとなかなか難しい。そういう訳でタイトルで期待した方には申し訳ないが「Windows Touch でSilverlightでイナーシア」が出来れば良いのに!というのは願望であり、当面の目標でもあるが、現在のところはそのコードはまだ出来ていない。

やってみてわかるのは次のような問題だ。

  • SilverlightではSilverlight 3は勿論Silverlight 4でもマニピューション(Manipulation, ジェスチャの事)のAPIをサポートしていない。会議で聞いていたはずだが、今になればWP7と比べて見劣りするのは事実。Silverlight 5はどうなのだろうか?
  • 即動かすデバッグにはスレートPCだと結構不便。開発用にはマルチタッチ・ディスプレイが欲しい。
  • Silverlightで頑張ってマニピューションを実現している事例をみつけたが、イナーシア(Inertia, 慣性動作の事)まではサポートしていない。
    日本語で「Silverlight で作るマルチタッチアプリケーション」という別の事例も紹介されている。
  • Windows SDKのサンプルの中で、かっこ良いイナーシアのデモ・アプリケーション「MTManipulationInertia」をみつけたが、なが~いC++で書かれている。
  • Code Recipeの中にイナーシアのサンプルをみつけたが、なぜかうまく動作しない。

Windows Phone 7を持ち始めてからは、マルチタッチのアプリケーションと言えばビロ~ンと「イナーシア」ができなくては始まらないのである。「Silverlightで開発するのがおすすめ」と言われても簡単にできなくては始まらない。

という訳で、手始めに前述のCode Recipieのコードをイナーシアが動くように改造した。とは言ってもわかる人はご存知の様にXAMLに次の1行を足しただけである。ついでにイナーシアのパラメーターも「より滑り易く動く」ように直した。

ManipulationInertiaStarting="Window_ManipulationInertiaStarting"

一応これでコードの説明の意図する通りに動作するようになった。Code Recipeの説明はわかり易くて非常に良いのだが、コードをまとめて入手できないようなので、
ここ
に置いておく。勿論オリジナルと同じくApache License, Version 2.0である。

WpfMultiTouch.zip

Windows TouchでSilverlightでイナーシア (Inertia)が出来るようになるまでの長い道のりが始まった。