我正在编写一个iPhone应用程序,这是整个概要: 一个物体在屏幕上并根据加速度计输入移动 - 我有这个工作 - 它移动到屏幕的边缘并且不会关闭=完美。现在,我想要发生的是,一旦该对象击中四个屏幕边缘中的任何一个,它应该停止并保持在屏幕上,并且新对象应该“出现”并且由于加速度计输入而开始移动,所以现在两个对象将在屏幕上,但只有1个移动。最终可能会在边缘周围建立20个对象,但一次只能移动1个对象。
所以我现在已经获得了检查边缘命中等所需的帮助,但我现在正试图改变我在屏幕上显示框的方式。我最初是通过视图控制器将图像放在屏幕上,但现在我要做的是从中间的一个框开始,当它碰到边缘时,它应该停止并停留,并且新图像将出现在中心并且如上所述由于加速输入而开始移动。那么我只是使用一个数组从中提取图像?我甚至不把.png放在视图控制器上,我应该编写它吗?以下是我尝试通过数组执行此操作的一些内容:
//In my .h
UIImageView *blocks;
NSString *blockTypes[3];
//In my .m
blockTypes[0] = @"greenBox1.png";
blockTypes[1] = @"greenBox2.png";
blockTypes[2] = @"greenBox3.png";
提前感谢您的帮助!到目前为止帮助很大!
答案 0 :(得分:0)
你不应该测试newX和newY是否等于30和50.你应该测试它们是否分别小于30和50。
编辑: 我会这样做:
loat newX = [mutableBoxArray lastObject].center.x + (accel.x * 12);
float newY = [mutableBoxArray lastObject].center.y + (accel.y * -12);
if(newX > 30 && newY > 50 && newX < 290 && newY < 430) {
[[mutableBoxArray lastObject] setCenter: CGPointMake(newX, newY)];
} else {
MyBox *myBox = [[MyBox alloc] init];
[mutableBoxArray addObject: myBox];
[myBox release];
}
编辑2: 在接口文件中添加以下内容
NSMutableArray *mutableBoxArray;
NSArray *imageNamesArray;
然后在loadView add
中的实现文件中mutableBoxArray = [[NSMutableArray alloc] init];
imageNamesArray = [[NSArray alloc] initWithObjects: @"orangeBox1.png",
@"blueBox1.png", @"greenBox1.png", @"pinkBox1.png", nil];
然后将上述方法改为
static NSInteger imageInt = 0;
loat newX = [mutableBoxArray lastObject].center.x + (accel.x * 12);
float newY = [mutableBoxArray lastObject].center.y + (accel.y * -12);
if(newX > 30 && newY > 50 && newX < 290 && newY < 430) {
[[mutableBoxArray lastObject] setCenter: CGPointMake(newX, newY)];
} else {
if (imageInt < [imageNamesArray count]) {
UIImage *image = [UIImage imageNamed: [imageNamesArray objectAtIndex: imageInt++]];
UIImageView *imageView = [[UIImageView alloc] initWithImage: image];
[imageView setCenter: CGPointMake(100.0f, 100.0f)];
[mutableBoxArray addObject: imageView];
[imageView release];
}
}