私は、スクリーン上に6つのシートオブジェクト(アルファプロパティが0に設定されたUIView)のコレクションを持っており、基本的にプレーヤオブジェクトをその上に配置しています。座席には、その上にプレーヤーがいる場合とない場合があります。私が今持っているのは、プレイヤーのtouchesMovedイベントをプログラムして、プレーヤーをシートオブジェクトの上にドラッグすると、シートのアルファプロパティが0から0.6になるようにしています。そして、まだプレイヤーをドラッグしている間に、私は彼を座席から引き離すと、アルファプロパティは0に戻ります。ホバー上のアルファプロパティをアニメーションでアニメ化する
代わりに、アルファプロパティが変動するような組み込みのUIViewアニメーションがありますか? .6と.2の間に?鼓動効果の種類?これはコアアニメーションかもっと高度なものが必要でしょうか?
私は選手をドラッグすると、それは座席の上だかどうかを検出するためにプレーヤーのtouchesMovedメソッドで次のように使用しています:
UITouch *aTouch = [touches anyObject];
self.center = [aTouch locationInView:[self.superview]];
Seat *seat = [controller seatAtPoint:[aTouch locationInView:self.superview]];
if (seat) {
self.hoverSeat = seat;
seat.alpha = .6;
} else {
self.hoverSeat.alpha = 0;
}
次のように私のコントローラでseatAtPoint方法は次のとおりです。
- (Seat *) seatAtPoint:(CGPoint)point {
NSMutableArray seats = [NSMutableArray arrayWithCapacity:6];
for (int i = 1; i <= 6; i++) {
Seat *aSeat = (Seat*)[self.view viewWithTag:i];
[seats addObject:aSeat];
}
for (Seat *seat in seats) {
if (CGRectContainsPoint([seat frame], point)) {
return seat;
}
}
return nil;
}
私は、ホバリングアイバーを使用して、プレーヤーがホバリングしている座席を保持します。返された座席がゼロの場合、座席のアルファは0に設定されます。
このコードで表示されるバグは、画面上でプレーヤーを少し早く動かすと、 0に戻ってください。誰ももっと効果的な方法を考えて、それが0に戻ることを保証できますか?
ありがとうございます。