gpt4 book ai didi

objective-c - 限制动画球在屏幕上的位置

转载 作者:行者123 更新时间:2023-12-04 05:40:03 24 4
gpt4 key购买 nike

我正在尝试一些简单的动画,并遵循了基本弹跳球的教程。

如何使用我自己的一组坐标而不是整个屏幕来限制球弹跳的位置?我在教程中使用的代码从整个屏幕中随机选取坐标,我想设置它的坐标,使其仅在屏幕中间的小方块中弹跳,而不会消失这些界限。

.m

 int ballx, bally;
///////

ballx = arc4random() % 320;

bally = arc4random() % 480;

//////////


-(void)movetheball {
[UIView beginAnimations: @"MovingTheBallAround" context: nil];

[UIView setAnimationDelegate: self];
[UIView setAnimationDuration: 1.0];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
myball.frame = CGRectMake(ballx, bally,myball.frame.size.width,myball.frame.size.height);
[UIView commitAnimations];

}
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(SEL)aSelector {

if (finished) {

// set new coordinate for ballx and bally

ballx = arc4random() % 320;

bally = arc4random() % 480;



[self movetheball];

}

我看过SO,但我找不到任何类似的东西,除了以下内容:
ballx.center = CGPointMake(320/2, [self randNumBetween:-50:-100]); 

我试图适应但没有取得多大成功。我没有大量的编程经验,所以我不确定我是否对这些代码不了解

最佳答案

ballx = arc4random() % 320; 

bally = arc4random() % 480;

正如您所注意到的,这些是您设置球的新坐标的线,这两个变量只是数字。他们没有名为 center 的组件,他们也不是 CGPoint s,所以尽管您在建议的修改上走在正确的轨道上,但您让事情变得太复杂了。

你可能不明白的部分是 %标志;这是 "modulus"运营商。简单来说,就是限制左边的数小于右边的数。

请注意 320480恰好是整个屏幕的宽度和高度,并观察您正在将模运算的结果 - 使用该宽度和高度 - 分配给代表您的球位置的变量。

希望这是足够的提示。

关于objective-c - 限制动画球在屏幕上的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11368270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com