gpt4 book ai didi

objective-c - 如何在NSMutableArray中交换值(而非索引)

转载 作者:行者123 更新时间:2023-12-01 17:34:22 26 4
gpt4 key购买 nike

我的学期比这个学期要多得多,而且还没有时间玩 objective-c 并自己制作,这一切对我来说还是很陌生,我在做这件事时遇到很多麻烦我知道的东西应该很简单。

但是基本上我有一个6件式的拼图拼图,当拼图重启时,拼图拼图会回到同一位置。每当尝试重新启动拼图时,我都试图以随机的方式将每个作品的起源与另一个作​​品的起源交换。所以我试图随机分配给数组中声明为NSValue对象的CGRect值,声明如下:

@synthesize topLeft;
@synthesize topMiddle;
@synthesize topRight;
@synthesize bottomLeft;
@synthesize bottomMiddle;
@synthesize bottomRight;
@synthesize scoreLabel;

topLeftRectOrigin=[NSValue valueWithCGRect: topLeft.frame];
topMiddleRectOrigin=[NSValue valueWithCGRect: topMiddle.frame];
topRightRectOrigin=[NSValue valueWithCGRect: topRight.frame];
bottomLeftRectOrigin=[NSValue valueWithCGRect: bottomLeft.frame];
bottomMiddleRectOrigin=[NSValue valueWithCGRect: bottomMiddle.frame];
bottomRightRectOrigin=[NSValue valueWithCGRect: bottomRight.frame];

puzzlePieces=[[NSMutableArray alloc]initWithObjects:topLeft, topMiddle, topRight, bottomLeft, bottomMiddle, bottomRight, nil];
puzzleOrigins=[[NSMutableArray alloc]initWithObjects:topLeftRectOrigin, topMiddleRectOrigin, topRightRectOrigin, bottomLeftRectOrigin, bottomMiddleRectOrigin, bottomRightRectOrigin, nil];

topLeftRectGrid=CGRectMake(145, 95, 30, 30);
topMiddleRectGrid=CGRectMake(235, 95, 30, 30);
topRightRectGrid=CGRectMake(325, 95, 30, 30);
bottomLeftRectGrid=CGRectMake(145, 185, 30, 30);
bottomMiddleRectGrid=CGRectMake(235, 185, 30, 30);
bottomRightRectGrid=CGRectMake(325, 185, 30, 30);

我真的很难解决这个问题,你们能推荐我应该怎么做吗?非常感谢您的帮助。

最佳答案

更新:您可能想重新编写问题。我理解这是因为您想更改数组中两个对象的原点而不更改它们在数组中的位置,ElJay提供了一个很好的解决方案,以防您要交换数组位置。澄清可能会有所帮助,以便我们知道该如何帮助! :D

在我最近的一个项目中,我遇到了类似的情况。

您有一个包含6个元素的NSMutableArray,现在显然您不想更改项目的顺序,而是要更改其来源。我认为这是一个解决方案,可以为您的案例提供帮助:

  • 从0-5(您的数组索引)生成两个随机数,以表示数组的2个不同项(片段)。
  • 通过switch语句,获取与随机生成的索引对应的每条原点。
  • 再次通过switch语句,为与随机生成的索引对应的片段设置新的原点。

  • 这就是我所做的,我基本上必须设置动画以随机交换一些图像的位置。我只是随机获取了2个不同的数字,检索了与每个项目相对应的中心,然后反转了每个中心。

    我得到了平滑的动画,并且它们都是在运行时随机生成的:)

    希望对您有所帮助,请随时提出更多问题或意见(:

    关于objective-c - 如何在NSMutableArray中交换值(而非索引),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472395/

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