Cocos2d iphone cocos2d-从CCSprite派生的addchild类

Cocos2d iphone cocos2d-从CCSprite派生的addchild类,cocos2d-iphone,Cocos2d Iphone,我是cocos2d iphone的初学者 我对将孩子添加到游戏场景有问题 我制作了一个从CCSprite派生的简单类,并尝试显示这个类 但它不起作用,我不知道是什么问题 这是我的课程代码: //myClass.h #import "cocos2d.h" @interface myClass:CCSprite{ } @end //myClass.m #import "myClass.h" @implementation myClass -(id) init{ if( self = [su

我是cocos2d iphone的初学者

我对将孩子添加到游戏场景有问题

我制作了一个从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
这是游戏场景的一部分:

//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];
...

我应该如何解决这个问题?

如果检查代码,initWithFile会调用调用init的initWithTexture,因此您处于循环中,这就是问题的原因。尝试创建另一个构造函数或类方法来创建精灵并设置位置

比如说

//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

如果检查代码,initWithFile将调用调用init的initWithTexture,因此您处于循环中,这就是问题的原因。尝试创建另一个构造函数或类方法来创建精灵并设置位置

比如说

//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

上帝啊!你把我从地狱里救了出来!非常感谢你!上帝啊!你把我从地狱里救了出来!非常感谢你!