Cocos2d iphone 创建自定义cocos2d/box2d对象
我正在尝试创建一个由多个实体组成的自定义cocos2d和box2d对象,在结构方面需要一些帮助 我希望对象由两个实体和一个精灵组成。这是我创建的头文件:Cocos2d iphone 创建自定义cocos2d/box2d对象,cocos2d-iphone,box2d,Cocos2d Iphone,Box2d,我正在尝试创建一个由多个实体组成的自定义cocos2d和box2d对象,在结构方面需要一些帮助 我希望对象由两个实体和一个精灵组成。这是我创建的头文件: @interface NewBlock : CCNode { CCSprite *sprite; b2Body *body1; b2Body *body2; b2World *world; } 所以我从CCNode继承,我认为这是正确的做法。以下是我的实现方法: -(id)initWithWorld:(b2Wo
@interface NewBlock : CCNode {
CCSprite *sprite;
b2Body *body1;
b2Body *body2;
b2World *world;
}
所以我从CCNode继承,我认为这是正确的做法。以下是我的实现方法:
-(id)initWithWorld:(b2World*)theWorld atLocation:(CGPoint)location {
if (self = [super init]) {
sprite = [CCSprite spriteWithFile:@"level_2.png"];
...box2d stuff...
[self addChild:sprite];
}
return self;
}
在场景中,我想要对象,我会像这样创建它:
NewBlock *block = [[NewBlock alloc] initWithWorld:world atLocation:ccp(100,100)];
[self addChild:block];
我知道我可以从CCSprite继承,但我可能希望在某个时候向对象添加更多的sprite,这样一个更通用的示例对我来说会很有用
我已使用上述代码尝试了一个示例,并在控制台中收到以下消息:
sharedlibrary apply-load-rules all
Current language: auto; currently c++
我创建自定义cococs2d/box2d对象的结构是否正确?我遗漏了什么吗?设计很好。我个人也喜欢子类化CCNode,原因完全相同:你永远不知道什么时候你的CCSprite需要包含多个CCSprite。因此,CCNode类成为控制器,CCSprite和其他类被视为视图。b2Body将是本例中的模型 您的错误与您设计类的方式无关。代码仍然有效,还是崩溃了?也许这是许多可以忽略的信息之一
添加Box2D代码时,通常需要注意事项。您的所有类都应该使用.mm扩展名,即使是那些可能没有直接使用Box2D代码的类。这是我的Box2D代码的一个错误:我认为您应该得到分数,因为确认正确的设计通常有助于识别错误。创建这样的类允许一些强大的设计选项!