我正在使用NSTimer在屏幕上设置对象数组的动画。目前他们从左向右移动。但是,我希望他们以循环的方式移动。我怎么能这样做?
scrollItems = [NSTimer scheduledTimerWithTimeInterval:1.0/30.0
target:self
selector:@selector(scrollItems)
userInfo:nil
repeats:YES];
- (void)scrollItems {
for (UIImageView *anItem in itemsArray) {
CGRect oldFrame = anItem.frame;
anItem.frame = CGRectMake(oldFrame.origin.x+5, oldFrame.origin.y, oldFrame.size.width, oldFrame.size.height);
}
}
当我说循环时尚时,我的意思是好像他们遵循圆周。谢谢!
答案 0 :(得分:1)
基本上以同样的方式 - 认为你需要破坏三角学。
http://en.wikipedia.org/wiki/Trigonometry
现在你只需要向x添加五个就可以移动它。相反,你需要根据sin cos和crap计算一个新的x和y,以及某种计数器告诉它应该在圆圈上的位置。
更新: unit circle也可能有所帮助。
所以,在时钟的任何时间你的对象应该在这个圆圈的某个点上,对吗?所以你必须从时间开始 - >角度 - > x& y在圆上坐标。向后工作,如果你有一个角度(0到360度之间的数字),你可以在圆上得到一个x y坐标 - 这就是单位圆链接。
所以你需要一个角度。那个角度将是时间的函数,对吧?因此,在时间0,你可以说这是一个0的角度,然后你就知道你应该根据上面链接中的公式在圆圈上的哪个位置。在时间1,它可能是1的角度,等等。随着时间的推移继续这样做,你正在画一个圆圈。您只需要弄清楚如何将时间转换为0-360之间的数字。该函数将决定对象移动的速度。
所以基本上你需要一些可以用时间计算x y的东西。在那之后,你可以变得聪明,并且该功能也可以接受速度,中心和半径,并根据这些东西返回x y。由你决定。
抱歉,我没有时间编写此代码,但它应该非常可行。