gpt4 book ai didi

ios - 添加和访问 CCSprite

转载 作者:行者123 更新时间:2023-11-29 11:17:15 26 4
gpt4 key购买 nike

我无法插入同一个 Sprite 的多个子元素并访问它(或在运行时为它们设置位置)。请建议任何合适的方法最好指出我的错误。这是我的方法。

//In the Init Method...

//int i is defined in the start.

for (i = 1; i < 4; i++)

{

hurdle = [CCSprite spriteWithFile:@"hurdle1.png"];

[self addChild:hurdle z:i tag:i];

hurdle.position = CGPointMake(150 * i, 0);

}

它将所有 Sprite 散布在 Canvas 上。然后在一些“更新函数”中我调用它。

hurdle.position = CGPointMake(hurdle.position.x - 5, 10);

if (hurdle.position.x <= -5) {
hurdle.position = ccp(480, 10);
}

它有效,但正如预期的那样,只有一个实例水平移动。我想要移动所有实例,所以我正在尝试使用它....

for (i = 1; i < 4; i++){

[hurdle getChildByTag:i].position = CGPointMake(hurdle.position.x - 5, 10);

//OR
[hurdle getChildByTag:i].position = CGPointMake([hurdle getChildByTag:i].position.x - 5, 10);

}

我已经尝试在不同的地方获取日志,并意识到 getChildByTag 并不像我尝试使用的那样工作。

最佳答案

问题出在最后一段代码中。您应该在 for 循环中对每个 CCSprite 进行本地引用。

由于您将 Sprite 添加到 self,您将检索它们作为 self 的子级

for (i = 1; i < 4; i++){
CCSprite * enumHurdle = [self getChildByTag:i];
enumHurdle.position = CGPointMake(enumHurdle.position.x - 5, 10);
}

如果您在同一场景中以这种方式创建任何其他 Sprite ,请小心。给任何两个 Sprite 相同的标签是糟糕的设计。

关于避免重复标签的编辑。

如果您知道您将拥有多少个 Sprite 。使用标签枚举并按名称引用 Sprite 。

如果没有,知道有多少组并限制组的大小可以使其易于管理。

即假设您有 3 部分代码,您可以在其中生成这样的 Sprite 。您可以在您的 .m 中包含一个 enum(在 @implementation 行下)并将限制放在那里

// Choose names that describe the groups of sprites
enum { kGroupOne = 0, // limiting the size of each group to 100
kGroupTwo = 100, // (besides the last group, but that is not important)
kGroupThree = 200,
};

然后当你创建每个组时

// group 1
for (i = kGroupOne; i < 4; i++){
// set up code here
}

// group 2
// g2_size is made up, insert whatever you want
for (i = kGroupTwo; i < g2_size; i++) {
// set up code here
}
.
.
.

然后分组检索

for (i = kGroupOne; i < 4; i++){
CCSprite * enumHurdle = [self getChildByTag:i];
enumHurdle.position = CGPointMake(enumHurdle.position.x - 5, 10);
}
.
.
.

希望这能激发您的创造力。现在有一些乐趣。

关于ios - 添加和访问 CCSprite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8905858/

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