我编写了以下代码,以使用NSTimer将图像从顶部移动到按钮。但是,当我运行它时,我无法单独获得图像。基本上,图像会留下痕迹。我想要的是使图像逐帧移动。我想念什么?
-(void)printOut:(NSTimer*)timer1;
{
image = [[UIImageView alloc] initWithFrame:CGRectMake(50, -50+m, 50, 50)];
[image setImage:[UIImage imageNamed:[NSString stringWithFormat:@"image.png"]]];
CGRect oldFrame = image.frame;
image.frame = CGRectMake(oldFrame.origin.x+5, oldFrame.origin.y, oldFrame.size.width, oldFrame.size.height);
[self.view addSubview:image];
m++;
if (m == 1000) {
[timer1 invalidate];
}
}
编辑:我不想使用动画。因为稍后我需要使用碰撞检测,并且无法控制动画的坐标。
最佳答案
您每次都在向自己分配和添加subView。何时删除ImageView以使以前的ImageView消失。因此,请尝试在分配之前删除映像。这样尝试
-(void)printOut:(NSTimer*)timer1;
{
[image removeFromSuperview];
image = nil;
image = [[UIImageView alloc] initWithFrame:CGRectMake(50, -50+m, 50, 50)];
[image setImage:[UIImage imageNamed:[NSString stringWithFormat:@"image.png"]]];
CGRect oldFrame = image.frame;
image.frame = CGRectMake(oldFrame.origin.x+5, oldFrame.origin.y, oldFrame.size.width, oldFrame.size.height);
[self.view addSubview:image];
m++;
if (m == 1000) {
[timer1 invalidate];
}
}