【问题标题】:How do I create new instances of an object in ios?如何在 ios 中创建对象的新实例?
【发布时间】:2012-04-08 07:18:40
【问题描述】:

我正在研究一个让物体从屏幕顶部落下的概念。对于这个例子,假设有 4 个对象:红色方块、蓝色方块、绿色方块、黄色方块。

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

我能够很好地与“greenSquare”进行交互,让它从视图的顶部掉到底部并从视图中消失。现在我希望能够重新创建“greenRectangle”并让它再次下降。我不能只重置那个实例,因为在任何给定的点上,都会有 1 个或多个相同的物体掉落。

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

我确信我的工作流程是:

  • 设置时间来挑选方块
  • 方位角
  • 显示广场
  • 以 x 速率下降方块

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

【问题讨论】:

    标签: iphone ios object sdk clone


    【解决方案1】:

    你为什么要为此使用 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

    编辑

    如果您想从一个 UIImage 创建多个 UIImageViews,请这样做:

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

    【讨论】:

    • 有时会在不到一秒的时间内多次调用果岭。在那种情况下,我会同时在屏幕上显示两个果岭,并在它们显示后立即落下。
    • 这应该不是问题 - 只需使用相同的 PNG 创建两个实例。
    • view.addSubview(img) 给了我一个错误。但是,[self.view addSubview:img] 完美。因此,例如 [self.view addSubview:img] 两次会给我两个绿球。如何设置我两个不同的 CGPointMake 位置。例如,我假设我设置了 UIImageView *img2 = img; [self.view addSubview:img2] ?
    • 我编辑了答案以包含一个如何从一张图像创建多个图像视图的示例。
    【解决方案2】:

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

    【讨论】:

    • 如果我只想在屏幕上显示一个,那就行了。但是,我的应用程序可能有 0->x 个对象实例。
    【解决方案3】:

    这是我所做的:

    在我的 .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];
    

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2020-06-18
      相关资源
      最近更新 更多