none
「マルチタッチのフリックと同等の動き」について。 RRS feed

  • 質問

  • いつも参考にさせて頂いております。
    今回はフリックについて質問させて頂きます。


    環境
    Visual C# 2008
    .Net Framework Version 3.5 SP1
    ※2010が正式に発売されたら即アップデート予定



    iPotなどにみられる、フリック機能を実装したいと考えています。
    自分なりにコーディングしたのですが、あのようにスムーズに、
    正確にスライドすることができません。スライドするにはするのですが、
    ぎこちなくて格好が悪いです…。

    みなさんは、どのような処理をしているのでしょうか。
    また、どのような処理が一般的なのでしょうか。

    現時点では矢印キーによるスライドを考えています。
    ※将来的には、そのままマルチタッチにも対応できることが理想です。
    サンプルコード、基本となる実装方法(Timer等??)を教えて頂けますでしょうか。

    漠然とした質問で申し訳ございません。
    ご回答のほど、何卒よろしくお願い申し上げます。
    2010年2月26日 13:47

すべての返信

  • 確認です。

      1.使用するUI技術は、Forms/WPF/その他のどれでしょうか
      2.フリック機能の要件を具体的に書きましょう
        何をどのようにScrollさせたいのでしょうか。
        画像Viewerアプリを想定していて、画像を横や縦にScrollさせたいのでしょうか。 

    可能であれば、
    質問の対象となっているSource Codeを抜粋して頂いた方が、
    意図が伝わりやすいと思いますよ。  

    2010年2月27日 12:23
  • OS やハードウェアのサポートレベルにもよりますよね。
    Windows7はマルチタップやフリックにOSレベルでの対応がありますが、WindowsXP/Vistaでも同等の動きをしたい場合に、独自の実装のみを利用するか OS によって実装を変更するかの問題もでますね。
    また、タッチ操作をマウスとして扱っているのか、デバイス固有の方法を用いているのか、ミドルウェアを利用しているのかといったことも重要な情報だと思います。
    2010年2月28日 23:32
  • kozz様


    ご回答、ありがとうございます。
    また、返事が遅れて申し訳ございません。

    現在はFormsを使用しています。
    将来的には、マルチパットでも、キーボードの矢印キーでも、
    アニメーションスクロールできればと考えています。
    ただ、精度が高く、きれいなスクロールを目指しています。


    ①UserControlの継承により下記コントロールを作成しました。
    ここではOpneGLを使用した描画処理をしています。DirectXではありません…
    public partial class OpenGLPanel : UserControl

    ②UseControlの継承により下記コントロールを作成しました。
    ※ここでフリック風のコントロールを実装したいと考えています。
    public partial class AnimationScroll : UserControl

     メンバ変数
     ・public List<OpenGLPanel> m_MultiPanel = new List<OpenGLPanel>();


    以上のような雰囲気です。
    まずは、矢印キーによるスクロールで高精度のスクロールを実現したいと考えています。
    何か参考となるようなホームページ等をご存知でしたら、何卒、よろしくお願い申し上げます。




    2010年3月1日 13:28
  • K.Takaoka様



    ご返事ありがとうございます。
    OSはWindows7を考えています。XP/Vistaは考えておりません。

    >また、タッチ操作をマウスとして扱っているのか、デバイス固有の方法を用いているのか、
    >ミドルウェアを利用しているのかといったことも重要な情報だと思います。

    申し訳ございません。正直申しまして、ここの部分をどうするべきなのかもわかりません。
    現在は、一般的なマウス・キーボード操作を考えています。そして、将来、Windows7の
    タブレットが普及(HPのSlateのような??)したら、そちらにも対応できればと考えていました。
    そもそも、根本的にコードを書き直さなければならなくなってしまうのでしょうか。

    まだ勉強不足です。このあたりのことが書いてあるサイト等をご存知でしたら、
    何卒、よろしくお願い申し上げます。
    2010年3月1日 13:45
  • ただ、精度が高く、きれいなスクロールを目指しています。
    まずは、矢印キーによるスクロールで高精度のスクロールを実現したいと考えています。


    だいぶ時間がすぎてしまいましたが、やりたいことは何なんでしょう?

    最初の投稿から、ピンチの検出 (マルチタッチ状態のフリック)を行うために、フリック時のベクトル検出やドラッグとフリックの判定に関する話だと思っていたのですが、上の返信をみるかぎりフリックなどの操作に関することで問題になっているのではなく、操作に対する応答としてのアニメーション描画を行う部分についての問題なのでしょうか。

    そういうことであれば、操作関連とは無縁のことですので、単純にスムーズな描画についての話をしたほうがよいかと思います。(私はそのあたりはわかりません、WPF のアニメーションで十分だとか思ってしまいますし^^

    2010年3月20日 9:24
  • K.Takaoka様

     

    ご回答誠にありがとうございます。

    まとまりのない内容で申し訳ございません。

    もう一度初めから説明させて頂きます。

     

    私が実装したい内容は、複数のUserControlのスライドアニメーションです。見た目の動きはiphone等にみられる画像Viewerアプリと同じです。

    初めはTimer(http://www.atmarkit.co.jp/fdotnet/dotnettips/374timerstimer/timerstimer.html)を使用して矢印キーによりUserControlをスライドさせていたのですが、あまりきれいにできませんでした。そこで、マルチタッチのフリックを真似できないかと考えた次第です。

    一般的なマルチタッチのフリックは複数の 画像(jpgなど)を使用してフリックしていると思います。それを画像ではなく、UserContorolにできないかと考えています。隣り合うUserControlのRectangleが徐々にスライドするイメージです。そして、ベクトル・速度等は自分で指定して、矢印キーでフリックのイベントを生成できればベストなのですが…。

    しかし、これが見当違いの質問(無理な内容)であるなら、「この実装方法、このTimerを使用すればきれいにスライドできる」といったようなサンプルまたはキーワードをご教示頂けませんでしょうか。 

     

    長い文章になってしまい、申し訳ございません。

    何卒よろしくお願い申し上げます。

     

    2010年3月23日 15:48