无法投射CCScene

时间:2014-04-20 11:19:40

标签: ios objective-c cocos2d-iphone ccscene

我正在尝试加载CCScene,然后在使用场景之前更改其中的一些属性。当我尝试更改它的属性时,它会显示[CCScene setProperty] - 无法识别的选择器发送到实例,即使我将CCScene转换为具有公共属性的正确类!

#import "MainScene.h"
#import "Gameplay.h"

@implementation MainScene
-(void)play:(CCButton *)sender{
    Gameplay *gameplay = (Gameplay *)[CCBReader loadAsScene:@"Gameplay"];
    NSLog(@"%@\n",[gameplay class]);
}
@end

此代码输出CCScene而不是输出游戏性。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

这不是演员的问题。 如果您执行loadAsScene,则CCBReader会将 Gameplay.ccb 根节点包装到场景中。 您可以在文档中阅读:

  

...加载具有指定名称的ccbi文件并将其包装在CCScene节点中。

如果您使用控制台打印此节点的子节点:

(lldb) po scene.children

您将获得以下结果:

<__NSArrayM 0x13a38720>(
  <Gameplay = 0x13a3f8a0 | Name = >
)

这显示了您的游戏类如何被包装成CCScene。 如果您想访问Gameplay节点,则需要访问CCScene的第一个孩子:

    Gameplay *gameplay = (Gameplay *)[[CCBReader loadAsScene:@"GameplayScene"] children] [0];

随意使用不能在一行中完成所有工作的其他解决方案。

答案 1 :(得分:0)

或者你可以使用

SceneClass *sceneInstance = [CCBReader load:NSStringFromClass([SceneClass class])];

这导致:

(lldb) po sceneInstance
<SceneClass = 0x8270b70 | Name = >
相关问题