我遇到了定位代码的问题。我有4个对象,让我们称之为Obj1 Obj2 Obj3 Obj4。我希望它们在屏幕的右侧产生,移动到屏幕的左侧,然后消失。 Obj 1和Obj 2位于相同的y位置,Obj 3应该略高于+ 40 y,而Obj 4应该是唯一具有移动y位置的位置。
对象1,2和3需要在它们之间有一个x间隙,而对象4可以是随机的。
我可以编码它的每一个结果,例如。 =
int Obj1x = 320;
int Obj1y = 200;
Obj1.position = CGPointMake(Obj1x, Obj1y);
int Obj2x = 0;
int Obj2y = 0;
int r1 = arc4random() % 2; // produces random numbers between 0 and 1
if(r1 == 0)
Obj2x = Obj1x + 80;
if(r1 == 1)
Obj2x = Obj1x + 100;
int r2 = arc4random() % 1;
if(r2 == 0)
Obj2y = Obj1y;
Obj2.position = CGPointMake(Obj2x, Obj2y);
这样,为它编写每个结果都需要花费太多。有没有其他方法来编码它?非常感谢你。
答案 0 :(得分:1)
您并不是说您使用的是Swift还是Objective-C。这两种语言都很容易,但会在Swift中提供代码。
// Where height is something like the self.frame.size.height being passed
func randomY(height: CGFloat) -> CGFloat {
return CGFloat(arc4random()) % CGFloat(height / 3)
}
另一种方法是确定最小值和最大值Y并将其传递给函数以返回这些值之间的随机范围。
// Return a random range
func randomRange(#min: CGFloat, #max: CGFloat) -> CGFloat {
assert(min < max)
return CGFloat(arc4random()) / 0xFFFFFFFF * (max - min) + min
}
对于固定位置以及所有这些,伪代码中的想法基本上有效。对于需要某种固定关系的两个对象,只需将第二个对象设置为第一个对象的x和y位置+/-固定量。
编辑:更新的方法。前面的示例有一个未包含的CGFloat扩展。