如何在ios中创建对象的新实例?

时间:2012-04-08 07:18:40

标签: iphone ios object sdk clone

我正在研究一个会让物体从屏幕顶部掉下来的概念。这个例子可以说是4个物体:红色正方形,蓝色正方形,绿色正方形,黄色正方形。

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

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

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

我确信我的工作流程是:

  • 设定选择方格的时间
  • 位置广场
  • show square
  • 以x比率投降方块

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

3 个答案:

答案 0 :(得分: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

修改

如果您想从一个UIImageView创建多个UIImage,请执行以下操作:

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];

答案 1 :(得分:0)

也许您应该考虑将矩形y位置设置回屏​​幕顶部,就在它消失在底部时。所以你不必重新创建它并可以重用它。丹

答案 2 :(得分:0)

这就是我所做的:

在我的.h文件中创建了对象实例:

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

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

然后我设置图像:

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

我调用了一个方法并设置了一个计时器:

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

最后,在onTimer中我创建了一个随机数,选择一个球并创建它:

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