如何使这种“磁带滚动”效果 - 目标C

时间:2014-03-11 01:29:04

标签: ios objective-c

我正在创造一个游戏,我正在努力做到两侧的风景变化很大的效果,我没有使用精灵套件或任何东西,只是UIKit,因为它是一个简单的游戏。基本上我有一个png是iPhone 5的屏幕尺寸的两倍(568px x 2 = 1136px),它在游戏开始时在屏幕中间开始,当玩家在游戏中导航时向下滚动。我希望它在游戏中心通过某个点之后重置并滚动游戏,所以我想写下这个:

    if (scenery.center.y > 1136) {
    scenery.center = CGPointMake(scenery.center.x, -568);
}

我选择了scenery.center.y > 1136,因为它是屏幕x2的底部。然后它在-568点,所以有1个全屏,没有风景。有没有更好的方法来实现这一目标,并使其持续发展?

2 个答案:

答案 0 :(得分:2)

我使用CABasic Animations来实现这个目标:

+(void)animateView:(UIView *)view {

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position.x"];

    animation.delegate = self;
    animation.fromValue = view.frame.origin.x - view.frame.size.width;
    animation.toValue = [UIScreen mainScreen].bounds.size.width;
    animation.repeatCount = INFINITY;
    animation.duration = 0.5;
    animation.autoreverses = NO;
    animation.beginTime = 0; // ignore delay time for now
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];

    [view.layer addAnimation:animation forKey:@"horizontal_animation"];

}

该视图表示我正在屏幕上移动的UIImageView。我从屏幕上开始(参见fromValue)并将其移到屏幕右侧的另一侧(参见toValue)。如果你也需要垂直动画,你可以用上面显示的类似值创建另一个[CABasicAnimation animationWithKeyPath:@“position.y”]。

此外,如果你想要除了线性动画之外的东西,只需要替换kCAMediaTimingFunctionLinear。在它的位置只需开始输入kCAMediaTiming ...并让自动完成的奇迹带你到余下的路上。

答案 1 :(得分:0)

我总是为这样的事情做的是使用两张图片。当一个人离开屏幕底部时,将其向右移回到顶部的屏幕上。在你的情况下,你可以把你的风景图像减半。