目的: 一連の画像のそれぞれの上で指をドラッグすると、一度に 1 つの画像が光ります。
自分でこれを理解しようとして、タッチされた画像のアルファを 1.00 に更新しようとしましたが、一連の画像の他のすべての画像をアルファ 0.25 に設定し、touchesMoved を介して個々の画像を指でドラッグしますか? ただし、以下の私の方法では、望ましい結果が得られませんでした。
8 つの画像それぞれの Glow オーバーレイのアートワークは、次のパターンを使用して viewDidLoad で作成されます。
-(void)viewDidLoad
{
Glow *imageOne = [[Glow alloc]
initWithNibName:@"ImageOne" bundle:[NSBundle mainBundle]];
self.glowOneView = imageOne;
[imageOne release];
[self.glowOneView setTag:101];
[self.glowOneView setAlpha:0.25];
[self.glowOneView setCenter:CGPointMake(160,135)];
[self.view insertSubview:self.glowOneView atIndex:11];
}
(上記のパターンを繰り返して、残りの 8 つのイメージをそれぞれ一意に作成します)。
touchesMoved パターンは次のようになります。
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touches Began");
UITouch *touch = [touches anyObject];
if ([touch view] == glowOneView) {
[glowOneView setAlpha:1.00];
[glowTwoView setAlpha:0.25];
[glowThreeView setAlpha:0.25];
[glowFourView setAlpha:0.25];
[glowFiveView setAlpha:0.25];
[glowSixView setAlpha:0.25];
[glowSevenView setAlpha:0.25];
[glowEightView setAlpha:0.25];
NSLog(@"Began Button One");
}
else if ([touch view] == glowTwoView) {
[glowOneView setAlpha:0.25];
[glowTwoView setAlpha:1.00];
[glowThreeView setAlpha:0.25];
[glowFourView setAlpha:0.25];
[glowFiveView setAlpha:0.25];
[glowSixView setAlpha:0.25];
[glowSevenView setAlpha:0.25];
[glowEightView setAlpha:0.25];
NSLog(@"Began Button Two");
}
...
(上記のパターンを繰り返して、残りの 8 つの画像のそれぞれを一意に処理します)。
上記のコード スニペットは、最初にタッチされた画像を光らせますが、ビュー内をドラッグすると、touchesMoved は、タッチが離されて新しいタッチが開始されるまで、指がドラッグされた後続の画像のアルファを更新しません。
コンソールは、最初にタッチされた画像からの touchesMoved NSLog のみを表示し、指がドラッグされている限り、その後ドラッグしている指の下にある画像に関係なく、最初にタッチされた画像の NSLog を継続的に繰り返します。
一連の画像のそれぞれに指をドラッグすると、一度に 1 つの画像が光るという望ましい結果を生成するために、上記のメソッドを置き換えまたは更新する例と、アドバイスをいただければ幸いです。
ありがとうございました、