2011-07-24 59 views
0

這裏是我想要做的http://www.youtube.com/watch?v=rD3MTTPaK98 這裏是我的代碼:動畫的UIImageView的停止

-(void) onTimer { 


UIImage * image = [UIImage imageNamed:@"abouffer_03.png"]; 
imageView = [[UIImageView alloc] initWithImage:image]; 

[imageView setCenter:[self randomPointSquare]]; 

[imageViewArray addObject:imageView]; 

[[self view] addSubview:imageView]; 

[imageView release]; 

ix=imageView.center.x; 
iy=imageView.center.y; 

X=(240-ix)/230; 
Y=(160-iy)/230; 
coteA=(240-ix); 
coteB=(160-iy); 
angleDeRotation=atan(coteB/coteA); 
if(ix>250||0>iy>320){ 
    imageView.transform = CGAffineTransformMakeRotation(angleDeRotation+3.14); 
} 
else{ 
imageView.transform = CGAffineTransformMakeRotation(angleDeRotation); 
} 
} 



-(void)onTimer2{ 
for(int i=0; i< [imageViewArray count];i++){ 
    imageView = [imageViewArray objectAtIndex:i]; 
    imageView.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y); 
} 

的OnTimer被稱爲每2秒 ,但它不工作,沒有錯誤,但在「 imageView「是在它移動2秒後創建的,並轉到已創建的新」imageView「的相同方向。我該如何解決這個問題?對不起我的英文我是法國人:/

回答

0

您將X和Y添加到所有圖像視圖,但它總是最後計算的值。製作X和Y值的數組並使用與圖像視圖相對應的值。

如果您定義了imageViewArray,也可以將xArrayyArray定義爲NSMutableArray s。然後在-onTimer,當你設置的X和Y,這樣做:

[xArray addObject:[NSNumber numberWithFloat:X]]; 
[yArray addObject:[NSNumber numberWithFloat:Y]]; 

最後,在-onTimer2,這樣做:

-(void)onTimer2{ 
for(int i=0; i< [imageViewArray count];i++) { 
    float localX = [(NSNumber *)[xArray objectAtIndex:i] floatValue]; 
    float localY = [(NSNumber *)[yArray objectAtIndex:i] floatValue]; 

    imageView = [imageViewArray objectAtIndex:i]; 
    imageView.center = CGPointMake(imageView.center.x + localX, imageView.center.y + localY); 
} 

將使用您在-onTimer設置X和Y的值。

+0

我真的不明白你能告訴我代碼嗎? –

+0

看看這一行:'imageView.center = CGPointMake(imageView.center.x + X,imageView.center.y + Y);' X和Y從哪裏來? '-onTimer'方法。但是隻有一個X和一個Y,所以每次設置它們時,都會覆蓋以前的值。 –

+0

我正在編輯答案,向您展示如何操作。 –