iOS SpriteKit从另一个类创建和显示对象
我是SpriteKit的新手,我试图显示一个对象,一个在类中创建的圆,来自MyScene.m。这就是我所拥有的: 在CreateNewCircle.h中,我写道:iOS SpriteKit从另一个类创建和显示对象,ios,class,sprite-kit,addchild,Ios,Class,Sprite Kit,Addchild,我是SpriteKit的新手,我试图显示一个对象,一个在类中创建的圆,来自MyScene.m。这就是我所拥有的: 在CreateNewCircle.h中,我写道: #import <SpriteKit/SpriteKit.h> @interface CreateNewCircle : SKScene -(void) addNewCircle; @end 现在我尝试调用这个在屏幕上以MyScene.m形式显示圆圈的方法: #import "MyScene.h" #import
#import <SpriteKit/SpriteKit.h>
@interface CreateNewCircle : SKScene
-(void) addNewCircle;
@end
现在我尝试调用这个在屏幕上以MyScene.m形式显示圆圈的方法:
#import "MyScene.h"
#import "CreateNewCircle.h"
@implementation MyScene {
}
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
/* Setup your scene here */
self.backgroundColor = [SKColor colorWithWhite:255 alpha:1.0];
CreateNewCircle *circle1 = [[CreateNewCircle alloc] init];
[circle1 addNewCircle];
[self.scene addChild:circle1];
}
return self;
}
MyScene.h:
#import <SpriteKit/SpriteKit.h>
@interface MyScene : SKScene
@end
构建是可以的,但是当我运行时,什么也没有出现。我尝试更改addchild行,例如:
[circle1 setName:@"circleOne"];
[self childNodeWithName:@"circleOne"];
但同样的结果是:空白屏幕。如果我直接在MyScene.m中编写相同的代码,就会出现圆圈,因此代码应该是正确的。谁能帮帮我吗:-
谢谢。看看这个示例,这样您就可以对代码进行所需的更改: MyScene.h CreateNewSprite.h
解释OP所遇到的问题可能会更好,而不仅仅是转储大量代码。@JesseRusak-然后向他解释。我总是喜欢通过例子来学习。好的,我尝试了一些改变,但仍然不起作用。现在我有了示例中的类:-instancetypeinit{if self=[super init]{………..,并且我将CreateNewCircle类的子类更改为SKSpriteNode。@user3457502-很抱歉。我忘记了SKShapeNode没有init方法。更新的代码向您展示了如何将SKShapeNode子类化。
[circle1 setName:@"circleOne"];
[self childNodeWithName:@"circleOne"];
#import <SpriteKit/SpriteKit.h>
@interface MyScene : SKScene
@end
#import "MyScene.h"
#import "CreateNewSprite.h"
@implementation MyScene
{
//
}
-(id)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size])
{
CreateNewSprite *mySprite = [[CreateNewSprite alloc] init];
[self addChild:mySprite];
}
return self;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//
}
-(void)update:(CFTimeInterval)currentTime
{
//
}
@end
#import <SpriteKit/SpriteKit.h>
@interface CreateNewSprite : SKShapeNode
@end
#import "CreateNewSprite.h"
@implementation CreateNewSprite
- (instancetype)init
{
self = [super init];
if (self)
{
SKShapeNode *shape = [SKShapeNode node];
shape.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(20, 20, 20, 20) cornerRadius:4].CGPath;
shape.position = CGPointMake(100,100);
shape.strokeColor = [SKColor redColor];
[self addChild:shape];
}
return self;
}
@end