フリープログラマー日記

iOS,アンドロイド開発を気ままにしながら生きてるおじさんのブログです。

第13回 タッチイベントについて(Swift & Java)

Swift と Java。全然似てないのに、共通なプログラミングをしようとする試みは、無謀?
そう思いつつも、さらっとやってみようという、このブログであります。はい。

で、今回は、イベント処理なんですが、基本的に、ビュー(UIView & View)のclassの中に書いていきます。

まず、継承関係ですが、SwiftならUIViewを継承し、JavaならViewを継承しています。
どちらも、何もしないもののタッチイベントを処理する仕組みを持っています。

Swiftなら、次の4つの関数を使うことになります。

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        <#code#>
    }
    
    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        <#code#>
    }
    
    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        <#code#>
    }

    override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
        <#code#>
    }

overrideされた関数になっていますね。
今回は、touchesEndedを使います。

次にJavaですが、

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        int touch = event.getAction();      // タッチの種類を格納する
        float posX = event.getX();            // 位置を保存する
        float posY = event.getY();

switch (touch) {
            case MotionEvent.ACTION_DOWN:
                // code
                break;
            case MotionEvent.ACTION_MOVE:
                // code
                break;
            case MotionEvent.ACTION_UP:
                // code
                break;
            case MotionEvent.ACTION_CANCEL:
                // cede
                break;
            default:
                break;
        }

        return true;
    }

こちらは関数は一つで、同じく@Overrideとなっています。


詳しく知っているわけではないですが、これがイベント駆動型プログラムであり、オブジェクト指向型なのかなと思っています。

あとは、touchesEnded と ACTION_UP のところから、処理関数を呼び出すだけでいけそうです。

構想としては、「タッチされた場所の数値を引数にして呼び出す」でいけそうかな。