生成随机图像以从上到下移动的最佳方法

时间:2011-05-27 05:01:22

标签: iphone random uiimageview nstimer

我正在创建一个类似Tap Tap Ant概念的游戏。我使用NSTimer使用以下代码生成动态图像。

 NSTimer *tmrGenerateImages1 = [NSTimer scheduledTimerWithTimeInterval:0.4 target:self selector:@selector(generateImages) userInfo:nil repeats:YES];

 -(void)generateImages
 {
      UIImageView *tmpImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImg.png"]];
      [tmpImg setFrame:CGRectMake([self randomXValueBetween:30 andValue:280] , 50, 118, 97)];
      [self.view addSubview:tmpImg];
      [self.view bringSubviewToFront:tmpImg];
 }

 - (float)randomXValueBetween:(float)low andValue:(float)high {
     return (((float) arc4random() / 0xFFFFFFFFu) * (high - low)) + low;
 }

我的问题是点击蚂蚁他们一次生成2/3图像,在我的情况下,我一次只能生成单个图像,并且有足够的时间用户必须点击它。

请帮帮我。

修改 BOUNTY

我想使用NSTimer或与Tap Tap Ant相同的任何其他方式生成动态图像。请帮助我。如果提供解决方案,所有积分都是你的。

4 个答案:

答案 0 :(得分:5)

如果你不想让你的游戏快速响应和稳定,我真的建议你研究一下OpenGL或Cocos2d。

为每个人分配一个UIImageView并让它们一点一点地移动(你不能用点击中断动画)真的会让游戏......好......慢。

答案 1 :(得分:1)

你需要将一个ImageView数组放到你想要在场景中显示的最大数量的Ant随机计数

 UIImageView img[6];   

使用计时器方法

中的数组计数调用此方法
 -(void)InsideTimerMethod
   {
     for()
      {
      img[i] = [self createImageWithBackgroundInRect::CGRectMake(random*, y+i+constant*, 40, 80) withImageName:STRING FROM THE ARRAY RANDOMLY];
      }
   }


//custom method
- (uiimageview *)createImageWithBackgroundInRect:(CGRect)rect withImageName:(NSString   *)imageName{    
//set up all the necessary need for the image customize  
 }

希望这能帮到你 祝你好运: - )

答案 2 :(得分:0)

这样,每个触发器可以获得两个或三个图像。

NSArray * countPool = [NSArray arrayWithObjects:[NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];   

int count = [[countPool objectAtIndex:arc4random()%2] intValue];

for (int i = 0; i < count; i ++) {

    UIImageView *tmpImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImg.png"]];
    [tmpImg setFrame:CGRectMake([self randomXValueBetween:30 andValue:280] , 50, 118, 97)];
    [self.view addSubview:tmpImg];
    [self.view bringSubviewToFront:tmpImg];

}

答案 3 :(得分:0)

即使我认为当你使用比UIKit提供的更接近原生绘图界面的API时你会获得最佳性能,我仍然有一个想法。

首先,您需要确定每个级别中最多会出现的图像数量。假设您将有100张图片。

  1. 在视图的设置方法中, 分配所有图像
  2. 全部放置 区域中的图像不是 可见(例如越界)
  3. 对于 每个NSTimerInterval选择移动 任意数量的图像随机 地方
  4. 使用这种方法,您可以将分配推迟到不同的时间点,并且只执行在渲染成本方面应该更便宜的翻译。

    但是,我不确定这会如何影响为设备渲染动画的一般概念。我建议您查看CoreAnimation的概念,它是用于在iOS设备系列上执行动画的标准框架。