2011-07-24 62 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

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