我正在创建一个类似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相同的任何其他方式生成动态图像。请帮助我。如果提供解决方案,所有积分都是你的。
答案 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张图片。
使用这种方法,您可以将分配推迟到不同的时间点,并且只执行在渲染成本方面应该更便宜的翻译。
但是,我不确定这会如何影响为设备渲染动画的一般概念。我建议您查看CoreAnimation的概念,它是用于在iOS设备系列上执行动画的标准框架。