创建我的第一个iPhone应用程序..重新定位块

时间:2013-03-27 23:44:39

标签: iphone ios objective-c

所以我在iPhones内置加速度计的帮助下移动了一个块,并且随机出现在屏幕上的另一个块。我正在尝试使用if语句来确定移动块是否点击或触摸不动的目标块,如果它这样做,它将随机地重新定位到屏幕上的另一个位置。一切都工作BESIDES确定两个坐标在任何给定点是否相等。到目前为止......

编辑 * 所以我删除了xx& yy变量并用self.xVar和self.yVar替换它们,这似乎有点工作,但非常粗略并停止了

edit2: **所以删除xx和yy确实有帮助,但它只适用于2-3次点击,然后停止。

edit3 **意识到拥有相同的x OR y变量并不是正确的方法..

-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
...

    //Make the new point
    CGPoint buttonNewCenter = CGPointMake(newX,newY);
    Button.center = buttonNewCenter;


    int xx = self.xVar;
    int yy = self.yVar;

    if (newX == xx || newY == yy) {
        int randX = arc4random() % 320;
        int randY = arc4random() % 548;

        CGPoint randNewPlace = CGPointMake(randX, randY);
        Rand.center = randNewPlace;
    }

}

... ...

- (void)viewDidAppear:(BOOL)animated
{
    [self awakeaccelerometer];

    int randX = arc4random() % 320;
    int randY = arc4random() % 548;

    CGPoint randNewPlace = CGPointMake(randX, randY);
    Rand.center = randNewPlace;

    self.xVar = (randX+15);
    self.yVar = (randY+15);


}

因此,打开功能随机确定目标块所在的位置,而另一个块基于加速度计在屏幕上自由移动。我想在任何时候确定if self.xVar || self.yVar == newX || newY。提前谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定你为什么要看两个点是否在同一个地方,而不是看两个矩形是否相交。积分非常小。如果您要做的是查看某个点是否在矩形内,您可以使用CGRectContainsPoint。 (请参阅Apple网站here上的讨论。)如果您想查看两个矩形是否相交(我认为您正在尝试这样做),请使用CGRectIntersectsRect。 (您可能需要先调用CGRectMake。)

如果你真的想做数学,那么检查(self.x+self.width<new.x or new.x+new.width<self.x or self.y+self.height<new.y or new.y+new.height<self.y)