我是cocos2d-iphone的初学者。
我对gamecene的addchild有问题。
我制作了一个源自CCSprite的简单类,我试图显示这个类。
但它没有用,我不知道什么是问题。
这是我的课程代码:
//myClass.h
#import "cocos2d.h"
@interface myClass:CCSprite{
}
@end
//myClass.m
#import "myClass.h"
@implementation myClass
-(id) init{
if( self = [super initWithFile:@"title.png"] ){
self.position = ccp(240, 240);
}
return self;
}
@end
这是gamescene的一部分:
//HelloWorldLayer.m
...
// this worked well.
// myClass* temp = [CCSprite spriteWithFile:@"title.png"];
// temp.position = ccp(240, 240);
// [self addChild:temp];
// but this won't work.
myClass* temp = [[myClass alloc] init];
[self addChild:temp];
...
我该怎么做才能解决这个问题?
答案 0 :(得分:3)
如果你检查代码,initWithFile调用initWithTexture调用init,所以你处于一个循环中,这就引起了问题。尝试创建另一个构造函数或类方法来创建精灵并设置位置。
例如
//myClass.h
#import "cocos2d.h"
@interface myClass:CCSprite{
}
-(id)initMy;
+(id)createMySprite;
@end
//myClass.m
#import "myClass.h"
@implementation myClass
-(id) initMy{
if( self = [super initWithFile:@"title.png"] ){
self.position = ccp(240, 240);
}
return self;
}
+(id)createMySprite {
return [[[self alloc] initMy] autorelease];
}
@end