2009-12-20 1 views
0

При моделировании после загрузки UIView, который содержит 52 UIImageView; для начала анимации требуется не менее 3 кликов. При первых двух кликах вызывается touchsBegan. Я знаю это потому, что NSSC (@ «Just before for loop») был отображен на консоли. Однако консоль заявляет, что cardAnimationArray пуст в первые 2 клика.UIImageView реагирует на частичный штрихBegan-код до третьего щелчка. ЗАЧЕМ?

Только после третьего щелчка начинается анимация. Странно, что нажав другие карты (UIImageView) после третьего щелчка, анимация начинается с 1-го щелчка (ведет себя как обычно).

Как-то он просто не входит в цикл for в первые 2 клика! это так ???

мой код, как показано ниже:

 - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:@"Cards.plist"]; 
NSMutableArray *array = [[NSArray alloc] initWithContentsOfFile:myPathDocs]; 

NSMutableDictionary *dict = [array objectAtIndex:self.tag]; 
NSString *cardMoved = [dict objectForKey:@"Card"]; 

NSMutableArray *cardAnimationPreloadingArray = [[NSMutableArray alloc] initWithCapacity:20]; 
self.cardAnimationArray = [[NSMutableArray alloc] initWithCapacity:20]; 
[cardAnimationPreloadingArray release]; 
NSLog(@"Just before for loop"); 
for (int k; k < 20; k++) { 
    NSLog(@"counting i: %d",k); 
    int j = k+1; 
    cardMovedImageName = [NSString stringWithFormat:@"Animated %@%d.png",cardMoved,j]; 
    NSLog(@"cardMovedImageName %@ at %d",cardMovedImageName, k); 
    UIImage *cardMovedImage = [UIImage imageNamed:cardMovedImageName]; 
    [cardAnimationArray insertObject:cardMovedImage atIndex:k]; 
} 

CGRect selfFrame = self.frame; 
selfFrame.size.width = 110; 
selfFrame.size.height = 164; 
[self setFrame:selfFrame]; 
[self.superview bringSubviewToFront:self]; 
CGPoint pt = [[touches anyObject] locationInView:self.superview]; 
self.center = pt; 




    NSLog(@"cardAnimationArray %@", cardAnimationArray); 
self.clipsToBounds = NO; 
self.animationImages = [NSArray arrayWithArray:cardAnimationArray]; 
[self setAnimationRepeatCount:1]; 
self.animationDuration= 0.3; 
[self startAnimating]; 
self.image = [UIImage imageNamed:cardMovedImageName]; 



} 

ответ

1

Вы никогда не указываете значение «k», поэтому оно никогда не может быть меньше 20.

+0

Большое вам спасибо за быстрый ответ, NSD! я полностью пропустил это! – zerlphr