目标:当手指在一系列图像中的每一个上拖动时,一次使一个图像发光。
为了自己解决这个问题,我尝试将触摸图像的 Alpha 更新为 1.00,同时将图像系列中的所有其他图像设置为 alpha 0.25,因为手指通过 touchesMoved? 但是我下面的方法没有产生预期的结果。
在 viewDidLoad 中使用以下模式为八个图像中的每一个创建 Glow 叠加图:
-(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];
}
(重复上述模式以独特地创建其余八张图像中的每一张)。
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");
}
...
(重复上述模式以唯一处理其余八张图像中的每一张)。
上面的代码片段将点亮第一个触摸的图像,但是当您在视图中拖动时,touchesMoved 不会更新手指拖动过的任何后续图像的 alpha,直到释放触摸并启动新的触摸。
控制台仅显示从第一个触摸的图像开始的 touchesMoved NSLog,只要手指被拖动,无论随后哪个图像在拖动的手指下,都会不断重复第一个触摸的图像的 NSLog。
我非常感谢您的建议以及任何替换或更新上述方法的示例,以产生每次获得一个图像发光的预期结果,因为手指在一系列图像中的每一个上拖动。
谢谢,