我有IntroScene,我想添加一个节点,但它似乎不起作用。以下是我尝试过的两种不同方式,并且BOTH失败了。
第一种方式,失败:
在hearts2.h
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface Hearts2 : CCNode {
}
@end
in hearts2.m
#import "Hearts2.h"
@implementation Hearts2
@end
in IntroLayer.m
- (id)init
{
// Apple recommend assigning self with supers return value
self = [super init];
if (!self) return(nil);
heart2 *heart;
[self addChild:heart z:2];
// done
return self;
}
我没想到要工作(实际上我是绝望的,并且尝试这种方式作为第二种方式只是为了看它是否会起作用)。我试图做的实际第一次尝试就是这样,它也失败了:
心中的
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface Hearts1 : CCNode
+ (Hearts1 *)node;
- (id)init;
-(void)selfAnimate;
@end
心中的
#import "Hearts1.h"
@implementation Hearts1 {
}
+ (Hearts1 *)node
{
return [[self alloc] init];
}
- (id)init
{
self = [super init];
if (!self) return(nil);
return self;
}
- (void)dealloc
{
}
- (void)onEnter
{
[super onEnter];
}
- (void)onExit
{
// always call super onExit last
[super onExit];
}
- (void)selfAnimate
{
}
@end
in IntroLayer.m
- (id)init
{
// Apple recommend assigning self with supers return value
self = [super init];
if (!self) return(nil);
heart1 *heart;
[self addChild:heart z:2];
// done
return self;
}
拜托,如果有人能帮助我解决这个问题,我会做任何事情。非常感谢大家。我总是得到SigABRT所以我不知道出了什么问题。我确定我只是愚蠢而且不知道如何编码和遗漏一些简单的东西。
答案 0 :(得分:0)
heart2 *heart;
您将类命名为Hearts2
,因此请使用完全相同的名称,包括大写。
其次你创建了一个变量,但这将是零。如果你没有使用ARC(你应该这样做),这将创建一个未初始化的对象。
这将创建Hearts2
的实例,将其分配给本地var heart
并将其添加为子项:
Hearts2 *heart = [Hearts2 node];
[self addChild:heart z:2];