2

画面の下部にカードの列が描かれているゲームがあります。ユーザーが画面に触れて手を右に動かすと、手を離すまでカードが右に移動するようにしたいと思います。次に、タッチスクリーン上で手を左に動かすと、手を離すまでカードが左に移動します。

最初に考えたのは、スワイプ イベントを使用することでした。しかし、指を離すまでスワイプしてもメッセージは表示されません。手が動いて画面に触れている間にカードを動かしたいのです。

私の考えは、タッチ位置の x 座標を取得し、それが前の x よりも大きい場合はカードを左に移動し、そうでない場合は右に移動することでした。

私はこのコードブロックから始めましたが、次に何をすべきかについて行き詰まりました。あるいは、私のやり方が間違っているのかもしれません

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    NSUInteger touchCount = [touches count];
    NSUInteger tapCount = [[touches anyObject] tapCount];
}
4

1 に答える 1

1

他のタッチ デリゲート メソッドがいくつか必要になります。

そのメソッドを実装-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)eventして内部で、タッチの初期 x 座標と y 座標を取得します。それらをクラス全体のインスタンス変数に保存します。

次に、移動したタッチで、新しいタッチの x 座標をタッチ開始時の元の座標と比較します。x < の場合は左に移動し、そうでない場合は x > の場合は右に移動します。

タッチが移動しているときにのみ呼び出されることに注意してくださいtouchesMoved:withEvent。したがって、ユーザーがタッチして右に移動し、指を静止したままにした場合、タッチは報告されません。

-touchesEnded:withEvent:実装し-touchesCancelled:withEvent:て、タッチが終了したときにピックアップする 必要があります。

于 2013-09-13T16:53:23.047 に答える