'接收器类型“CCParticleBatchNode”用于类消息是前向声明'

时间:2011-11-01 11:47:20

标签: iphone objective-c ios xcode cocos2d-iphone

标题不言而喻。我通过从github下载文件来安装cocos2d 1.1,删除项目中的cocos2d项目并重新添加它。

我的头文件中有一个'@class CCParticleBatchNode',而我的前缀和相关的实现文件中都有#import“cocos2d.h”。当我浏览CCParticleBatchNode所应的位置时,它就在那里。

那么,有人知道问题可能是什么吗? :)

编辑:这是一些代码。

#import "PrecipicationLayer.h"
#import "cocos2d.h"

@implementation PrecipicationLayer
@synthesize cloudLayer;
- (id)init
{
    self = [super init];
    if (self)
    {
        rain = [CCParticleRain node];
        rainBatch = [CCParticleBatchNode particleBatchNodeWithFile:@"Raindrop48px.png" capacity:400 useQuad:YES additiveBlending:NO];
        [self addChild:rainBatch];

        [self schedule:@selector(tick:)];
    }
return self;
}

和头文件:

#import <Foundation/Foundation.h>
#import "cocos2d.h"
@class CCParticleBatchNode;

@interface PrecipicationLayer : CCLayer {
    CCParticleBatchNode *rainBatch;
}

@end

所有不相关的部分都已删除。

4 个答案:

答案 0 :(得分:1)

如果已在.h文件中导入cocos2d.h,则无需在.m文件中导入cocos2d.h。不过,我认为这不是问题所在。

有两种可能性:

  • CCParticleBatchNode在cocos2d.h中定义,在这种情况下,您不需要前向声明,这可能会使编译器感到困惑。
  • CCParticleBatchNode在cocos2d.h中定义 not ,在这种情况下,您需要在实现文件中导入CCParticleBatchNode.h,因为您拥有的只是前向声明。

答案 1 :(得分:1)

“删除项目中的cocos2d项目并重新添加它。”

检查文件是构建过程的一部分。在XCode 4中,单击Project Navigator顶部的项目名称,选择“Build Phases”,确保“cocos2d libraries”显示在目标名称下。如果是,则展开“Target Dependencies”,并确保它也列在那里。然后展开“使用库链接二进制文件”并确保它也已添加到那里。

答案 2 :(得分:1)

哦好......通常的cocos2d升级麻烦。

就个人而言,我只需安装cocos2d 1.1模板(假设它们是最新的)并根据其中一个cocos2d模板创建一个项目。然后将源代码和资源添加到此新创建的项目中。这通常比尝试替换和更新现有项目中的cocos2d代码要好得多。

我猜你的问题可能来自删除cocos2d项目而不是硬盘中的文件。这意味着仍然可以从旧版本中获得一些仍然包含在项目中并构建的剩余文件。您肯定想在移动新的cocos2d文件之前删除所有现有的cocos2d文件。

最后,不要排除从github下载的版本被破坏的可能性。这不是第一次。请尝试使用网站上的可下载版本,并记住1.1此时只是一个测试版。

提示:将来您可能希望使用Kobold2D创建cocos2d项目,它有一个upgrade tool可以解决所有这些问题。

答案 3 :(得分:1)

下载最新模板时遇到同样的问题。问题是即使文件CCParticleBatchNode.h和CCParticleBatchNode.m在物理上存在,它们也没有被添加到Xcode项目模板中。我只需将它们添加到项目中然后编译。