2012-09-07 54 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實際上並沒有定位該卡。有許多可能的解決方案,但您應該考慮在循環中添加一個動畫塊,以便動作排隊等候顯示。