0

我制作了一个应用程序,其中有一个物体一直向移动点移动——这就是我没有使用任何动画功能的原因。问题是我做了这个功能:

CGPoint center = self.im.center; // "i" is a CGPoint, im is an imageview.
if (!CGPointEqualToPoint(self.im.center, i))
{
    a = (i.y-center.y)/(i.x-center.x);
    //Y = a*X+b - this is a linear function in math
    b = (center.y-(a*center.x));
    if (i.y>center.y) {
        self.im.center = CGPointMake(((center.y+1)-b)/a, center.y+1);
    }
    else
    {
        self.im.center = CGPointMake(((center.y-1)-b)/a, center.y-1);
    }
}

问题是函数越接近水平直线越快,因为变化主要是在 X 轴上,这意味着如果我在 Y 上加 1,对 X 的变化会更大,这意味着它会移动得更快。

如果有其他方法可以做到这一点,我很乐意尝试,所以如果你知道其他方法,请告诉我!

4

1 回答 1

0

设法找到不同的解决方案

CGPoint center = self.im.center;//im = the image view
x = center.x;//starting point
y = center.y;//starting point
double distance = sqrtf(powf(i.x - x, 2) + powf(i.y - y, 2));// i = cgpoint (ending point)
float speedX = (2 * (i.x - x)) / distance;//(the 2 is the speed)
float speedY = (2 * (i.y - y)) / distance;//(the 2 is the speed)
self.im.center = CGPointMake(center.x+speedX, center.y+speedY);//im = the image view
于 2013-07-25T15:16:59.390 回答