这是我想做的事http://www.youtube.com/watch?v=rD3MTTPaK98 这是我的代码:
-(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);
}
每2秒调用一次onTimer 但它不起作用,没有错误,但是当2秒后创建“imageView”时,它会移动并转到已创建的新“imageView”的相同方向。我怎么解决这个问题?对不起我的英语我是法国人:/
答案 0 :(得分:0)
您将X和Y添加到所有图像视图中,但它始终是最后计算的值。创建一个X和Y值的数组,并使用与图像视图对应的值。
您定义imageViewArray
的位置,同时将xArray
和yArray
定义为NSMutableArray
。然后在-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的值。