【发布时间】:2014-02-14 10:30:33
【问题描述】:
我对 spriteBuilder 和 cocos2d 非常陌生,这意味着我相当肯定我做错了什么......我只是不知道是什么。
我已将 CCNode 添加到“关卡场景”中,并将其作为子场景加载到“游戏场景”中,但我似乎无法弄清楚如何引用关卡场景中的 CCNode .
有点像这样:
游戏场景(CCScene) Level1 场景(CCScene) 目标(CCNode)
然后在我的代码中:
gameplay = [CCBReader loadAsScene:@"Levels/Level1"];
然后我想获得我放置在关卡内的目标的位置。我该怎么做?它有一个“doc root var”,但我只能在自定义的“target”类中访问它。我如何访问内部游戏?这段代码在游戏中运行时给我 {0, 0},但在目标类中运行时给我 {393, 193}。
NSLog(@"Target pos = %@", NSStringFromCGPoint(_target.position));
如果这令人困惑,我很抱歉,我会尽量让它更清楚。抱歉,如果这是一个愚蠢的问题,我才刚刚开始。
感谢所有帮助。
编辑:在游戏中记录 [自己的孩子]:
("<CCSprite = 0x993e670 | Rect = (0.00,0.00,500.00,281.50) | tag = | atlasIndex = -1>",
"<CCSprite = 0x9c9a350 | Rect = (68.00,0.50,32.00,25.50) | tag = | atlasIndex = -1>",
"<CCPhysicsNode = 0xba3a220 | Name = >",
"<CCButton = 0x9c9db20 | Name = >",
"<CCButton = 0x9ca33e0 | Name = >",
"<CCLabelTTF = 0x9ca5320 | FontSize = 50.0>",
"<CCButton = 0x9ca6010 | Name = >",
"<CCButton = 0x9ca7f50 | Name = >",
"<CCSlider = 0x9caa060 | Name = >",
"<CCLabelTTF = 0x9caeed0 | FontSize = 16.0>",
"<CCLabelTTF = 0x9cafa10 | FontSize = 15.0>",
"<CCSprite = 0x9cb02f0 | Rect = (107.50,29.00,75.00,64.50) | tag = | atlasIndex = -1>",
"<CCSprite = 0x9cb08c0 | Rect = (107.50,29.00,75.00,64.50) | tag = | atlasIndex = -1>",
"<CCSprite = 0x9cb0e90 | Rect = (107.50,29.00,75.00,64.50) | tag = | atlasIndex = -1>",
"<CCLabelTTF = 0x9cb1460 | FontSize = 50.0>")
【问题讨论】:
-
我的朋友没有愚蠢的问题! :),首先要检查的是您的
_target是否正确加载?它是 nil 还是你想要的实际精灵?你可以试试NSLog(@"%@", _target),告诉我们你看到的是什么类型的CCNode?span> -
当然!在我的“target.h”类中,它给出“
”,在我的gameplay.h中给出“(null) ”。 (在 spritebuilder 中,我在 target.ccb 中的 sprite 具有自定义类“Target”和 doc root var“_target”) -
这就是问题所在,
_target是null... 在gameplay你如何初始化_target?可能这就是错误所在!你能从gameplay实现中添加一个sn-p 吗? -
大概就是这样。我想如果我包含我的 Target.h 类并在那里初始化它,我也可以从父级访问它。在 target.h 我做“CCNode * _target;”然后只是 "NSLog(@"%@", _target);"在 .m 文件中。我可以将它作为一个孩子添加到游戏中它已经在的相同位置吗?
-
是的,当然可以,您只需要在
gameplay类中使用[self children]找到它,但这就是为什么首先制作自定义类,以避免需要这样做之后,如果不查看更多代码,就很难看出错误在哪里,但是在游戏中NSLog(@"%@", [self children]);的输出是什么?
标签: objective-c cocos2d-iphone spritebuilder