有没有办法获得某些UIImageView属性?

时间:2010-12-19 20:34:18

标签: iphone objective-c xcode

我刚刚开始搞乱xCode,并试图通过调整一些预制项目给自己一个基本的介绍。

目前有一个我正在研究的项目,它有一个球在屏幕上弹跳,并且有一个gameLoop设置如下:

此部分在.m:

中定义
 - (void)gameLoop {
    if (gameState = kGameStateRunning) {
        ball.center = CGPointMake(ball.center.x + ballVelocity.x, ball.center.y + ballVelocity.y);
        if(ball.center.x > self.view.bounds.size.width || ball.center.x < 0) {
            ballVelocity.x = -ballVelocity.x;
        }

        if(ball.center.y > self.view.bounds.size.height || ball.center.y < 0) {
            ballVelocity.y = -ballVelocity.y;
        }
    }
    else {
        if(tapToBegin.hidden) {
             tapToBegin.hidden = NO;
        }
    }
}

我想知道的是,如果我的UIImageView *球只有在到达中心时才会从墙壁反弹,那么有没有办法让它一旦击中球的边缘就会反弹

这里的第一次海报,所以我希望我的描述性足够。

编辑:我还想尝试这样做,这样我就可以在不调整常量的情况下更改UIImageView的半径。希望这是可能的,只是试图找出纯粹的好奇心。再次感谢你们!

1 个答案:

答案 0 :(得分:0)

简单的答案是包括球半径的偏移量(以像素为单位),如下所示:

 - (void)gameLoop {
    ball.center = CGPointMake(ball.center.x + ballVelocity.x, ball.center.y + ballVelocity.y);
    int radius = 10; // radius in pixels
    if (gameState = kGameStateRunning) {
        if(ball.center.x + radius > self.view.bounds.size.width || ball.center.x - radius < 0) {
            ballVelocity.x = -ballVelocity.x;
        }
        if(ball.center.y  + radius > self.view.bounds.size.height || ball.center.y - radius < 0) {
            ballVelocity.y = -ballVelocity.y;
        }
    }
    ...

在页面上有很多关于碰撞和更高级物理的教程,例如: NeHe Productions

希望这有点帮助。

编辑:为了响应您对动态半径大小的编辑,请尝试类似(未经测试):

UIImageView *ball;  
CGFloat radius = ball.frame.size.width; // alternatively ball.frame.size.height