我正在编写一个iPhone应用程序,这里是整体概要:一个对象在屏幕上,并根据加速计输入移动-我有工作-它移动到屏幕边缘,不熄灭=完美。现在,我想要发生的是,一旦该对象命中四个屏幕边缘中的任何一个,它应该停止并停留在屏幕上,一个新的对象应该“出现”并开始移动,这是由于加速计的输入,所以现在屏幕上有两个对象,但只有一个在移动。最终,可能会有20个对象围绕边缘构建,但一次只有一个对象在移动。
所以我现在已经得到了我需要的帮助来检查边缘点击等,但我现在正在尝试切换我让框显示在屏幕上的方式。我最初是通过视图控制器将图像放在屏幕上,但现在我要做的是从中心的一个框开始,当它到达边缘时,它应该停止并停留,由于如上所述的accel输入,一个新的图像将出现在中心并开始移动。那么,我是否只需要使用一个数组来拉取图像呢?我甚至没有把.png放在视图控制器上,我应该直接对它进行编码吗?下面是我尝试通过数组实现的一些方法:
//In my .h
UIImageView *blocks;
NSString *blockTypes[3];
//In my .m
blockTypes[0] = @"greenBox1.png";
blockTypes[1] = @"greenBox2.png";
blockTypes[2] = @"greenBox3.png";提前感谢您的帮助!到目前为止,帮助是很大的!
发布于 2011-05-13 01:21:07
您不应该测试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的实现文件中添加
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];
}
}https://stackoverflow.com/questions/5981600
复制相似问题