0

我是 cocos2d-iphone 的初学者。

我对游戏场景的 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

这是游戏场景的一部分:

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

我应该怎么做才能解决这个问题?

4

1 回答 1

3

如果您检查代码,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
于 2012-07-13T15:13:30.700 回答