2012-04-08 62 views
0

我正在研究一个将从屏幕顶部落下物体的概念。对于这个例子可以说,4个对象:红色方块,蓝色方块,绿色方块,黄色方块。如何在ios中创建对象的新实例?

我将所有这些对象放置在界面构建器中,并使用.h文件中给出的名称进行连接:IBObject UIImageView * greenSquare;例如。

我能够与“greenSquare”的罚款交互,让它从视图的顶部落到底部并从视图中消失。现在我想能够重新创建“greenRectangle”并让它再次下降。我不能只重置一个实例,因为在任何给定的点上,一个或多个同一个对象会下降。

最终结果将是任何颜色的正方形的数量将显示和下降。

我敢肯定,我对这个工作流程是:

  • 设置时间来接方
  • 位置广场
  • 演出方
  • 为x率
  • 下降平方米

任何推动正确的方向都会很棒。感谢大家!

回答

0

这里是我做过什么:在我

。h文件我创建了对象的实例:

UIImageView *yellowImage; 
UIImageView *greenImage; 
UIImageView *orangeImage; 
UIImageView *redImage; 

UIImage *yellow; 
UIImage *green; 
UIImage *orange; 
UIImage *red; 

我然后设置图像:计时器触发我内部

[NSTimer scheduledTimerWithTimeInterval:(0.5) target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 

最后:

green = [UIImage imageNamed:@"greenball.png"]; 
yellow = [UIImage imageNamed:@"yellowball.png"]; 
orange = [UIImage imageNamed:@"orangeBall.png"]; 
red = [UIImage imageNamed:@"redball.png"]; 

我打电话的方法和设置定时器创建一个随机数字,选择一个球并创建它:

greenImage = [[UIImageView alloc] initWithImage:green]; 
greenImage.frame = CGRectMake(startX,0,43,43); 
[self.view insertSubview:greenImage belowSubview:bottomBar]; 
0

也许你应该考虑设置矩形y的位置回到屏幕的顶部,当它在底部消失时。所以你不必重新创建并重用它。 Dan

+0

如果我只想让其中一个显示在屏幕上,那就行了。但是,我的应用程序可能具有对象的0-> x个实例。 – dcp3450 2012-04-08 15:25:36

2

为什么你使用InterfaceBuilder进行此操作 - 切换到“仅限代码”的实现,你应该没问题。

1)创建图像

UIImage *green = [UIImage imageNamed:@"green.png"]; 
UIImageView *img = [[UIImageView alloc] initWithImage:green]; 
[view addSubview:img]; 

2)位置时,它

img.center = CGPointMake(<RANDOM NUMBER>, -30); 

3)启动动画
4)当它击中的底部,将其删除

[img removeFromSuperview]; 

5 )再次将此img添加到顶部...

如果你想拥有多个这些绿色img,你一次可以创建多个绿色img。如果只有一个就足够了,那么每次动画到达底部时都可以重新使用img

编辑

,如果你想从一个 UIImage创建多个 UIImageView小号

做这样的:

UIImage *img = [UIImage imageNamed:@"green"]; 

UIImageView *imgView1 = [[UIImageView alloc] initWithImage:img]; 
imgView1.center = CGPointMake(100, 100); 
[self.view addSubview:imgView1]; 

UIImageView *imgView2 = [[UIImageView alloc] initWithImage:img]; 
imgView2.center = CGPointMake(100, 500); 
[self.view addSubview:imgView2]; 
+0

有些时候,比如绿色将会在不到一秒的时间内被召回。在这种情况下,我会在屏幕上同时出现两个绿色,并在显示后立即掉落。 – dcp3450 2012-04-08 17:05:10

+0

这应该不是问题 - 只需使用相同的PNG创建两个实例即可。 – pkyeck 2012-04-08 17:40:44

+0

view.addSubview(img)给了我一个错误。不过,[self.view addSubview:img]完美无缺。所以,例如[self.view addSubview:img]两次会给我两个greenballs。我将如何设置两个不同的CGPointMake职位。我假设我设置了,例如,UIImageView * img2 = img; [self.view addSubview:img2]? – dcp3450 2012-04-08 19:17:27

相关问题