gpt4 book ai didi

iphone - 我需要像程序员一样思考 : Childs and Parents in Cocos2d, 程序结构、枚举等

转载 作者:行者123 更新时间:2023-12-03 20:45:04 27 4
gpt4 key购买 nike

我是一名完全自学成才的 Objective-C 程序员,我需要有关如何最好地构建我正在开发的项目的建议。

我正在处理 CCSprite.tags 和一些一般程序结构问题,我无法找出构建结构的最佳方法该程序。

到目前为止,程序正在按照我想要的方式运行,但看起来我浪费了代码行并且过于冗余。我想在未来为自己省去一些麻烦,并提前完成所有事情。

我本质上是用CCSprites创建一个完全可动画的装配角色。我需要他 body 的每个部分独立于其他 body 部分进行动画制作。为了实现这一目标,我创建了一个在 CCScene-init 方法中调用的方法,该方法会遍历并创建 CCSprites并将它们添加到适当的部分。下面是该方法的代码:

-(void) characterInit{
CGSize size = [[CCDirector sharedDirector] winSize];

//Torso

CCSprite * torso = [CCSprite spriteWithFile:@"Torso.png"];
torso.anchorPoint = ccp(.5, .5);
torso.position = ccp(size.width/2, size.height/2);
torso.scale = 1;
torso.tag = torsoTag;
[self addChild:torso];

//Head

CCSprite * head = [CCSprite spriteWithFile:@"Head.png"];
head.anchorPoint = ccp(.5, 0);
head.position = ccp(50,60);
head.tag = headTag,
[torso addChild:head z:1];

//Eyes

CCSprite * eyes = [CCSprite spriteWithFile:@"Eyes.png"];
eyes.anchorPoint = ccp(.5, .5);
eyes.position = ccp(35, 45);
eyes.color = ccc3(255, 255, 255);
eyes.tag = eyesTag;
[head addChild:eyes];
...
...
...

...每个 body 部位都会继续这样。

这里的关键是,我只使用普通的旧 int ,并为每个 CCSprite.tag 提供一个数值。我在该方法上方、任何其他方法之外声明了 int,以便它们也可以在 init 方法内部访问。

问题 1:更好的方法是什么?也许作为枚举?该代码会是什么样子,有没有更好的方法来生成该代码,而不是像我将它们作为 int 时那样写出每个值?

现在,在我完成并创建了所有 CCSprites 之后,我的下一个问题就出现了。当我想在创建它们的方法之外使用它们时,我在 init 方法中使用如下代码:

        CCSprite * torso = (CCSprite *) [self getChildByTag:torsoTag];
CCSprite * head = (CCSprite *) [torso getChildByTag:headTag];
CCSprite * eyes = (CCSprite *) [head getChildByTag:eyesTag];


[eyes runAction:...];

我最初尝试简单地调用...

CCSprite * eyes = (CCSprite *) [self getChildByTag:eyesTag]; 

...但无济于事。我假设我能够调用这个单独的 body 部位,而不必调用该 body 部位的每个父级,以便我可以为其设置动画。因为……嗯……

很糟糕。

重点是;我觉得我只是错误地思考这个问题。我想组织我的代码,但组织的重点是让您不必变得多余。

问题 2:一个比我更好的程序员会做什么来处理这整个奇怪的情况?

感谢大家抽出时间,对文字墙表示歉意。

最佳答案

您可以忘记整个标签业务并将 Sprite 存储为类的实例变量。

@interface MyClass : MyParentClass {
@private
CCSprite *torso;
CCSprite *head;
CCSprite *eyes;
}

...

@end

你的方法会更简单一点:

-(void) characterInit{
CGSize size = [[CCDirector sharedDirector] winSize];

//Torso

torso = [CCSprite spriteWithFile:@"Torso.png"];
torso.anchorPoint = ccp(.5, .5);
torso.position = ccp(size.width/2, size.height/2);
torso.scale = 1;
[self addChild:torso];

...

并且你可以直接使用你的 body 部位:

[eyes runAction:...];

关于iphone - 我需要像程序员一样思考 : Childs and Parents in Cocos2d, 程序结构、枚举等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8958406/

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