gpt4 book ai didi

objective-c - 如何将 for 循环中的 int 解析为 xcode 中的方法?

转载 作者:行者123 更新时间:2023-11-29 13:29:40 24 4
gpt4 key购买 nike

大家好,我想做的是创建 6 个 sprite 并将它们均匀分布,我编辑了一些从书中获得的代码,但目前卡在需要均匀分布 sprite 的部分

    [groundNode setPosition:CGPointMake(45, 20)];

这会将所有 6 个 sprite 堆叠在哪里?我怎样才能把它变成这样的东西

    [groundNode setPosition:CGPointMake(45*x, 20)];

其中 x 是从 for 循环中获取的整数。我的代码列在底部。非常感谢!!

-(id)init{
self = [super init];
if(self !=nil){
for(int x=0;x<6;x++){
[self createGround];
}
}
return self;
}

-(void) createGround{
int randomGround = arc4random()%3+1;
NSString *groundName = [NSString stringWithFormat:@"ground%d.png", randomGround];
CCSprite *groundSprite = [CCSprite spriteWithFile:groundName];
[self addChild:groundSprite];
[self resetGround:groundSprite];
}

-(void) resetGround:(id)node{
CGSize screenSize =[CCDirector sharedDirector].winSize;
CCNode *groundNode = (CCNode*)node;
[groundNode setPosition:CGPointMake(45, 20)];

}

最佳答案

第一步是构建这些方法以获取 offsetIndex 参数:

-(void) createGroundWithOffsetIndex: (int) offsetIndex {
-(void) resetGround: (CCNode *) node withOffsetIndex: (int) offsetIndex {

然后,在createGround中,通过:

[self resetGround:groundSprite withOffsetIndex: offsetIndex];

并从循环中传入:

for(int x=0;x<6;x++){
[self createGroundWithOffsetIndex:x];
}

最后,你知道你会使用的代码位(在 resetGround:withOffsetIndex: 内):(注意 +1,因为偏移量(按语义)从零开始)

[groundNode setPosition:CGPointMake(45 * offsetIndex+1, 20)];

一些注意事项:

  • 仔细考虑这里需要多少传递,并尝试考虑一种改进的架构:如果您平铺相同的图像,也许 createGround 应该采用 CGRect 并负责填充那么多区域?

  • 这只是横向的;我将其作为练习将 CGPoints(或类似的 {x,y} 结构)作为 offsetIndex 传递。

  • 您的转换模式处于临界状态。为什么将它作为 id 传递,然后将其转换为另一个本地变量,而整个过程中它都是作为另一种类型传入的?我会认为一个结束......

关于objective-c - 如何将 for 循环中的 int 解析为 xcode 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12171645/

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