我正在尝试构建一个iPhone应用程序,它具有5列上下8行的网格来回。我想要一个球能够连续地穿越这些球。我确定必须有一些方法可以做到这一点,如果有人知道有人让我知道。我目前正在为每列和每行使用if语句来隐藏/显示各种球。所以我可以让球穿过第一排,当它到达一列时,它会停下来,并显示该列中的球并上下移动。第一栏的球也一样。当它连续上下移动时,它会被隐藏,并显示该行中的球并移动。当它回到第一排时,它被隐藏起来,第一排球开始上下移动。我的问题是让球显示/隐藏在内部交叉点,即第二列第二列,第二列第三列等。 任何建议。关于如何完成这一点。 我正在使用加速度计motion.gravity来垂直和水平移动球图像。在网格中移动一个球xcode
这是一些代码,我用移动球
if (ball.hidden == NO) {
self.ball.center = CGPointMake(self.ball.center.x + n, 9);
}
//ROW ONE START
if (ball.center.x < 9) {
ball.center = CGPointMake(9, 9);
}
if (ball.center.x > 311) {
ball.center = CGPointMake(311, 9);
}
if(self.ball.center.x > 9){
self.balla.hidden = YES;
balla.center = CGPointMake(9, 9);
}
if (ball.center.x ==9) {
//balla
CGPoint a = CGPointMake(9, 9);
if (CGPointEqualToPoint(ball.center,a)) {
balla.hidden = NO;
self.balla.center = CGPointMake(9, (self.balla.center.y)- y);
if (balla.center.y > 9) {
ball.center = CGPointMake(9,9);
ball.hidden = YES;
balla.hidden = NO;
self.balla.center = CGPointMake(9 , (self.balla.center.y)- y);
}
if (balla.center.y < 9) {
balla.center = CGPointMake(9,9);
ball.hidden = NO;
}
if (balla.center.y > 559) {
balla.center = CGPointMake(9, 559);
}
}
这是第一行和第一列(有附加列在这里)
我也做其他行
我已经得到最后一列移动到第七和第八行与此代码。
CGPoint e = CGPointMake(311, 9);
if (CGPointEqualToPoint(ball.center,e)) {
ball5a.hidden = YES;
self.ball5a.center = CGPointMake(311, (self.ball5a.center.y)- y);
if(self.ball.center.x < 311){
self.ball5a.hidden = YES;
}
if (ball5a.center.y < 9) {
ball5a.center = CGPointMake(311,9);
ball.hidden = NO;
ball5a.hidden = YES;
}
if (ball5a.center.y > 9) {
ball.center = CGPointMake(311,9);
ball5a.hidden = NO;
ball.hidden = YES;
self.ball5a.center = CGPointMake(311, (self.ball5a.center.y)- y);
}
if (self.ball5a.center.y> 480 && self.ball5a.center.y< 482) {
ball7.hidden = NO;
balla.center = CGPointMake(9, 481);
ball7.center = CGPointMake(311 , 481);
ball.center = CGPointMake(9, 9);
}
if (ball5a.center.y > 559) {
ball5a.center = CGPointMake(311, 559);
ball8.center = CGPointMake(311, 559);
ball.center = CGPointMake(9, 9);
}
if (ball5a.center.y <559) {
ball8.center =CGPointMake(9, 559);
ball.center = CGPointMake(311, 9);
ball8.hidden = YES;
}
,我可以得到最后一行与此
// ROW EIGHT开始移动到最后一列
CGPoint l = CGPointMake(9, 559);
if (CGPointEqualToPoint(balla.center,l)) {
balla.hidden = YES;
balla.center = CGPointMake(9, 559);
self.ball8.center = CGPointMake(self.ball8.center.x + n, 559);
ball8.hidden = NO;
}
if (ball8.center.x > 9) {
self.ball8.center = CGPointMake(self.ball8.center.x + n, 559);
balla.hidden = YES;
balla.center = CGPointMake(9, 559);
}
if (ball8.center.x < 10) {
ball8.center = CGPointMake(9, 559);
ball8.hidden = YES;
balla.hidden = NO;
}
if (ball8.center.x > 311) {
ball8.center = CGPointMake(311, 559);
ball5a.center = CGPointMake(311, 559);
ball5a.hidden = YES;
ball.center = CGPointMake(311, 9);
ball8.hidden = NO;
}
if (ball8.center.x < 311) {
ball5a.center = CGPointMake(311, 9);
ball5a.hidden = YES;
}
}
然而,当我尝试移动进行七次行到第5列我可以让它传递,但第5列中的球总是以坐标(311,9)而不是我在多个地方指定的坐标(311,481)结束。
//连续7 START
CGPoint k = CGPointMake(9, 481);
if (CGPointEqualToPoint(balla.center,k)) {
ball5a.center = CGPointMake(311, 481);
balla.hidden = YES;
balla.center = CGPointMake(9, 481);
self.ball7.center = CGPointMake(self.ball7.center.x + n, 481);
ball7.hidden = NO;
}
if (ball7.center.x > 9) {
self.ball7.center = CGPointMake(self.ball7.center.x + n, 481);
balla.hidden = YES;
balla.center = CGPointMake(9, 481);
}
if (ball7.center.x < 10) {
ball7.center = CGPointMake(9, 481);
ball5a.center = CGPointMake(311, 481);
ball7.hidden = YES;
balla.hidden = NO;
}
if (ball7.center.x > 310) {
ball.center = CGPointMake(311, 9);
ball5a.center = CGPointMake(311, 481);
ball7.center = CGPointMake(311, 481);
ball5a.hidden = YES;
balla.center = CGPointMake(9, 481);
ball7.hidden = NO;
}
if (ball7.center.x < 310) {
ball5a.center = CGPointMake(311, 481);
ball5a.hidden = YES;
}
任何想法,为什么这不工作的权利?
你不能简单地在网格中移动一个球实例吗?或者这是你在与什么挣扎?你如何代表你的网格? – ArniDat
正如我上面所述,我有5列上升和下降与每列UIImageView(球)。 balla,ball2a,ball3a,ball4a和ball5a。我也有一个UIImageView(球)八行中的每一行。球,ball1,ball2等 – user1114881
你使用的是数组吗?你目前的代码是什么?如果你的球在一个数组中(或者大概是一个双数组),你可以简单地通过在数组中移动它来移动球。数组[i] [j] =数组[a] [b],将球从(a,b)移动到(i,j),然后根据数组进行绘制,就像您已经在做的那样。 – ArniDat