2012-09-07 53 views
2

好吧我正试图在某些位置处理一副牌,但我被困在一个地方。我只处理一个比最大值小的一个。我正试图处理nsarray索引中的每个地方。Objective-C NSArray麻烦

- (CGPoint)animateDealingToPlayer:(Player *)player withDelay:(NSTimeInterval)delay 
{ 
    self.frame = CGRectMake(-100.0f, -100.0f, CardWidth, CardHeight); 
    self.transform = CGAffineTransformMakeRotation(M_PI); 

    NSArray *position = [NSArray arrayWithObjects: 




         [NSValue valueWithCGPoint:CGPointMake(0, 0)], 
         [NSValue valueWithCGPoint:CGPointMake(0, 0)], 
         [NSValue valueWithCGPoint:CGPointMake(0, 0)], 
         [NSValue valueWithCGPoint:CGPointMake(0, 0)], 
         [NSValue valueWithCGPoint:CGPointMake(10, 50)], 


         nil]; 


    for(int i=0; i<5; i++) { 
     NSValue *value = [position objectAtIndex:i]; 
     CGPoint point = [value CGPointValue]; 
     NSLog(@"%@",NSStringFromCGPoint(point)); 

     self.center = point; 


    } 

} 

我在10,50处理卡,而不是在之前的位置(如0,0)处理卡。这可能很容易解决,但我似乎无法记住如何解决这个问题。请帮帮我。另外,请注意,我对客观的C还是有点新的,所以如果你解决这个问题,你可能不得不贬低它。

+0

这是非常不清楚你到底在问什么。你是否看到日志中的5个数据点?您每次都重新分配self.center。只有循环中的最后一个坚持。 – Kent

+0

是的!有没有一种方法可以让它每次都做到这一点,而不是辞职。我的卡每次都要10,50次,但我希望它去(0,0)4次然后去(10,50)。 –

+0

这就像循环执行得太快,你只能看到最后一张牌。你看到日志输出吗? – Kent

回答

1

问题在于,您将卡片位置设置为5次而不执行任何动画,或者使卡片对象有机会在更改位置之间进行重绘。在运行循环有机会触发之前,iOS实际上并没有定位该卡。有许多可能的解决方案,但您应该考虑在循环中添加一个动画块,以便动作排队等候显示。